Eli tarkoituksena olisi tehdä graafinen laskin nettiin, ja tällaisen olen saanut aikaan. Tuo ei kuitenkaan piirrä itse suoraa, pelkästään x- ja y-akselit. Eli missähän lienee vika?
<?php function x($x){ global $asteikkox, $leveys; $vali = ($leveys / 2) + ($x * $asteikkox); return round($vali, 0); } function y($y){ global $asteikkoy, $korkeus; $vali = ($korkeus / 2) - ($y * $asteikko); return round($vali, 0); } $kerroin = 1; $leveys = 700; $korkeus = 600; $kuva = imagecreate($leveys,$korkeus); // Luodaan kuva $asteikkox = $leveys/20; $asteikkoy = $korkeus/20; $bg = imagecolorallocate($kuva, 255, 255, 255); $viiva = imagecolorallocate($kuva, 0, 0, 0); // Viivan väri imageline($kuva, 0, $korkeus / 2, $leveys, $korkeus / 2, $viiva); // piirtää x-akselin imageline($kuva, $leveys / 2, 0, $leveys / 2, $korkeus, $viiva); // piirtää y-akselin $x=0; $y=0; while ($x <= $leveys){ imageline($kuva, $x, $korkeus / 2 + 5, $x, $korkeus / 2 - 5, $viiva); // piirtää x-akseliin pystyviivat $x = $x + $asteikkox; } while ($y <= $korkeus){ imageline($kuva, $leveys / 2 + 5, $y, $leveys / 2 - 5, $y, $viiva); // piirtää y-akseliin pystyviivat $y = $y + $asteikkoy; } $x=-10; while ($x < 10){ $y = $x * $kerroin; $x2 = $x + 1; $y2 = $x2 * $kerroin; imageline($kuva, x($x), y($y), x($x2), y($y2), $viiva); // pitäisi piirtää suora $x++; } header("Content-type: image/png"); imagepng($kuva); // Luodaan kuva imagedestroy($kuva); // Poistetaan kuva muistista ?>
Yksi vika on ainakin funktiossa y. Siinä on viittaus muuttujaan $asteikko, vaikka selvästi pitäisi olla $asteikkoy. Määrittelemättömän muuttujan $asteikko arvo on taas aina nolla. Tällaisia ongelmia kannattaa selvittää tulostamalla sivulle piirrettävien viivojen koordinaatteja. Niitä tutkimalla selviää väkisinkin, mikä koodissa on vikana.
Antti Laaksonen kirjoitti:
Yksi vika on ainakin funktiossa y. Siinä on viittaus muuttujaan $asteikko, vaikka selvästi pitäisi olla $asteikkoy. Määrittelemättömän muuttujan $asteikko arvo on taas aina nolla. Tällaisia ongelmia kannattaa selvittää tulostamalla sivulle piirrettävien viivojen koordinaatteja. Niitä tutkimalla selviää väkisinkin, mikä koodissa on vikana.
kiitos. olin kyllä tehnyt sen, mutta tulostavaan funktioon olin laittanut sen oikein että siitä ei sit selvinnyt. seuraava kysymys ois et kun ois tarkotus laittaa tonne sivulle semmonen tekstikenttä, johon voi syöttää lausekkeen muotoa: "2xy4+3xy3-2x2+4x-34", jossa xn jälkeen tuleva numero tarkoittaa monennenko asteen termi on, x2 tarkoittaa toisen asteen, niin miten tuon saisi funktiossa muokattua muotoon: $kerroin = 4 (x:n kerroin), $vakio = -34 (vakiotermi) $toinenaste = -2 (toisen asteen kerroin) $naste[3] = 3 (kolmannen asteen kerroin) $naste[4] = 2 (neljännen asteen kerroin)
Aihe on jo aika vanha, joten et voi enää vastata siihen.