Skripti piirtää useita päällekkäisiä ellipsejä, koko ajan muuttaen kokoa, paikkaa sekä väriä muodostaen näin "kolmiulotteisen" pallon.
Arvoja muuttelemalla saa pallon ulkoasua muutettua, mutta varsin usein siitä seuraa jos jonkinlaista hässäkkää, jolloin koodia pitää muutella hieman enemmän.
Olen varsin vasta-alkaja PHP:llä ja tämä on ensimmäinen koodivinkkini, joten parannettavaa saattaa löytyä.
<?php header("Content-Type: image/png"); $korkeus=200; $leveys=200 $kuva=imagecreate($korkeus, $leveys); $tausta=imagecolorallocate($kuva, 255, 255, 255); //Määritellään aloitusväri. $red=50; $green=50; $blue=150; $p_vari=imagecolorallocate($kuva, $red, $green, $blue); //Määritellään pallon aloituspaikka ja -koko. $p_x=$leveys/2; $p_y=$korkeus/2; $p_w=$leveys; $p_h=$korkeus; //Määritellään marginaali, johon pallojen piirtäminen pysähtyy. $marg=60; //Piirretään päällekkäisiä ellipsejä samalla vaalentaen värejä sekä muuttaen kokoa ja paikkaa. for($i=0; $i<=70; $i++){ imagefilledellipse($kuva, $p_x, $p_y, $p_w, $p_h, $p_vari); //Muutetaan pallon paikkaa. //Tätä muuttamalla voi muuttaa myös valon suuntaa. if($p_x<$leveys-$marg) $p_x++; if($p_y>$marg) $p_y--; //Muutetaan pallon kokoa. if($p_w>0) $p_w=$p_w-5; if($p_h>0) $p_h=$p_h-5; //Muutetaan pallon väriä. //Tätä muuttamalla myös valon väriä voi vaihtaa. if($red<255) $red=$red+5; if($green<255) $green=$green+5; if($blue<255) $blue=$blue+5; $p_vari=imagecolorallocate($kuva, $red, $green, $blue); } imagepng($kuva); imagedestroy($kuva); ?>
Linkki jossa olis valmis esimerkki??
Ihan kivan näköinen.
Paitsi minulla ei muuta kokoa eikä näköä, vaikka päivitän sivua.
Jeps, hieno on.
Mutta miksi ihmeessä luet kuvan leveydet imagesx() ja imagesy() funktioilla??
Järkevintä olisi laittaa leveydet muuttujiin ja tehdä se kuva niiden muuttujien avulla:
$lev = 200; $kor = 200; $im = imagecreate($lev, $kor);
eihän imagesx() tai imagesy() funktioita tarvitse jos kuvan koko on kiinteä, tai itse määritettävissä!
Meitsi, tässä esimerkki kuvasta:
http://mbnet.fi/winuus/2dpallo.php
Ihan kiva
Hyvä että huomautit, T.M., tuntuikin että siihen olisi helpompi konsti.
Ja Pekka Mansikalle tiedoksi, jos jos vaikka värin haluaa muuttuvan päivitettäessä, voi säätää värit satunnaisiksi, esim.
$red=rand(0, 255);
Jos pallon koon haluaisi satunnaiseksi, pitäisi myös piirrettävien ellipsien määrä saada sattumaan.
skripti voisi toimia vähän paremmin, jos lisäisi riville 7 sen puolipisteen.
mbnetin palvelin valittaa:
Parse error: parse error, unexpected T_VARIABLE in /mbnet/p/paulio/roska.php on line 7
lainaus:
mbnetin palvelin valittaa:
Parse error: parse error, unexpected T_VARIABLE in /mbnet/p/paulio/roska.php on line 7
riviltä 7 on unohtunu puolipiste tossa koodissa..
$leveys=200 -> $leveys=200;
Eh? Saattaisi tulla ehkä vähän aidomman näköinen pallura, jos muistaisi, ettei pallo ole pyöreä pyramidi. Sen sivutkin ovat pyöreitä.
Muuten ihan kiva.
Toimiva alkuperäinen demo:
http://koti.mbnet.fi/ollins/muuta/testi/pallo.
Toimiva, muutettu demo (pallon värin ja koon muutto, tässä on jotain vikaa kun tuohon piirtyy tuo viiva aina :SSS):
http://koti.mbnet.fi/ollins/muuta/testi/palloc.
Voisiko tuon 7 rivin korjata?
Aihe on jo aika vanha, joten et voi enää vastata siihen.