Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Graafinen laskin php:n avulla

sane [18.12.2005 16:39:02]

#

Tämä on siis graafisen laskimen kokeilu php:llä. Demo löytyy osoitteesta: http://www.muunnin.com/kuva.php Kuvan jälkeen voi antaa parametrit astx ja asty jotka kertovat skaalan. Tarkoitus ois viel lisätä kenttä johon voi syöttää yhtälön ratkaistuun muotoon, mutta näiden muuttujiin lukemiseen ei vielä riitä taidot:(

<?php
// funktio joka laskee x:n koordinaatit
function x($x){
         global $asteikkox, $leveys;
         $vali = ($leveys / 2) + ($x * $asteikkox);
         return round($vali, 0);
         }
// funktio joka laskee y:n koordinaatit
function y($y){
         global $asteikkoy, $korkeus;
         $vali = ($korkeus / 2) - ($y * $asteikkoy);
         return round($vali, 0);
         }
// kertoimet
$vakio = 0;
$kerroin = 0;
$toinenaste = 0;
$naste = array();
$naste[3] = 1;
$naste[4] = 1;

$leveys = 700; //kuvan leveys
$korkeus = 700; //kuvan korkeus

// x:n skaala
if ($_GET['astx'] != ""){
     $xasteikko = $_GET['astx'] * 2;
     }
else {
      $xasteikko = 40;
     }

// y:n skaala
if ($_GET['asty'] != ""){
     $yasteikko = $_GET['asty'] * 2;
     }
else {
      $yasteikko = 40;
     }
$kuva = imagecreate($leveys,$korkeus); // Luodaan kuva
$asteikkox = $leveys / $xasteikko; // asteikko mikä määrää montako pikseliä yksi x vastaa
$asteikkoy = $korkeus / $yasteikko; // asteikko mikä määrää montako pikseliä yksi y vastaa
$bg = imagecolorallocate($kuva, 255, 255, 255);
$viiva = imagecolorallocate($kuva, 0, 0, 0); // Viivan väri
$harmaa = imagecolorallocate($kuva, 192, 192, 192);

// määrää x:n kohdalla ruudukon piirtovälin
if ($xasteikko <= 10){
     $xruudukko = 10;
     $xasteikkopituus = 10;
     $piirto_vali = 0.01;
     }
elseif ($xasteikko < 30){
       $xruudukko = 5;
       $xasteikkopituus = 5;
       $piirto_vali = 0.05;
       }
else {
     $xruudukko = 2;
     $xasteikkopituus = 3;
     $piirto_vali = 0.1;
     }

// määrää y:n kohdalla ruudukon piirtovälin
if ($yasteikko <= 10){
     $yruudukko = 10;
     $yasteikkopituus = 10;
     }
elseif ($yasteikko < 30){
       $yruudukko = 5;
       $yasteikkopituus = 5;
       }
else {
     $yruudukko = 2;
     $yasteikkopituus = 3;
     }

// piirtää x:n ruudukon
for ($x = 0; $x <= $leveys; $x = $x + ($asteikkox / $xruudukko)){
      imageline($kuva, $x, 0, $x, $korkeus, $harmaa);
      }

// piirtää y:n ruudukon
for ($y = 0; $y <= $korkeus; $y = $y + ($asteikkoy / $yruudukko)){
      imageline($kuva, 0, $y, $leveys, $y, $harmaa);
      }

imageline($kuva, 0, $korkeus / 2, $leveys, $korkeus / 2, $viiva); // piirtää x-akselin
imageline($kuva, $leveys / 2, 0, $leveys / 2, $korkeus, $viiva); // piirtää y-akselin

// piirtää x:n skaalan
for ($x = 0; $x <= $leveys; $x = $x + $asteikkox){
      imageline($kuva, $x, $korkeus / 2 + $xasteikkopituus, $x, $korkeus / 2 - $xasteikkopituus, $viiva);
       }

// piirtää y:n skaalan
for ($y = 0; $y <= $korkeus; $y = $y + $asteikkoy){
       imageline($kuva, $leveys / 2 + $yasteikkopituus, $y, $leveys / 2 - $yasteikkopituus, $y, $viiva);
        }
$yaste = array();
$yaste2 = array();

// piirtää kuvaajan
for ($x = -($xasteikko / 2); $x < ($xasteikko / 2); $x = $x + $piirto_vali){
      $x2 = $x + $piirto_vali;
      for ($aste = 3; $aste < 10; $aste++){
            $vali = 0;
            if ($naste[$aste] != 0){
                   $vali = pow($x, $aste) * $naste[$aste];
                   $yaste[$x * 100] = $yaste[$x * 100] + $vali;
               }
          }
      for ($aste = 3; $aste < 10; $aste++){
            $vali = 0;
            if ($naste[$aste] != 0){
                   $vali = pow($x2, $aste) * $naste[$aste];
                   $yaste2[$x2 * 100] = $yaste2[$x2 * 100] + $vali;
               }
          }
      $y = $x * $kerroin + $x * $x * $toinenaste + $vakio + $yaste[$x * 100];
      $y2 = $x2 * $kerroin + $x2 * $x2 * $toinenaste + $vakio + $yaste2[$x2 * 100];

      imageline($kuva, x($x), y($y), x($x2), y($y2), $viiva);

    }


header("Content-type: image/png");
imagepng($kuva); // Luodaan kuva
imagedestroy($kuva); // Poistetaan kuva muistista
?>

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta