Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: "3d"-Pallo

Sivun loppuun

Tempfile [15.10.2003 12:27:49]

#

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);
?>

Meitsi [15.10.2003 16:10:29]

#

Linkki jossa olis valmis esimerkki??

pistemies [15.10.2003 16:13:43]

#

Ihan kivan näköinen.
Paitsi minulla ei muuta kokoa eikä näköä, vaikka päivitän sivua.

T.M. [15.10.2003 17:31:17]

#

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

Meitsi [15.10.2003 18:38:33]

#

Ihan kiva

Tempfile [15.10.2003 19:50:48]

#

Hyvä että huomautit, T.M., tuntuikin että siihen olisi helpompi konsti.

Tempfile [15.10.2003 20:03:07]

#

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.

miiro [26.12.2005 12:09:34]

#

skripti voisi toimia vähän paremmin, jos lisäisi riville 7 sen puolipisteen.

moptim [01.09.2006 17:57:22]

#

mbnetin palvelin valittaa:
Parse error: parse error, unexpected T_VARIABLE in /mbnet/p/paulio/roska.php on line 7

punppis [04.09.2006 10:46:22]

#

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;

Malfunc [13.09.2007 14:26:51]

#

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.

Olli [12.10.2008 18:36:51]

#

Toimiva alkuperäinen demo:
http://koti.mbnet.fi/ollins/muuta/testi/pallo.php

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.php

Horny The Horrible [15.01.2010 15:08:28]

#

Voisiko tuon 7 rivin korjata?


Sivun alkuun

Vastaus

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

Tietoa sivustosta