Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Gradienttiympyrä

T.M. [18.07.2006 23:00:15]

#

<?php


header("Content-type: image/png");

$koko = 300; // Ympyrän koko
$im = imagecreatetruecolor($koko, $koko);


// Lasketaan keskipiste, koko-1 koska koordinaatit alkavat nollasta,
// koko alkaa aina ykkösestä, ei ole olemassa 0 kokoista kappaletta.
// Ilman kyseistä vähennyslaskua emme voisi tehdä tarkasti tietyn kokoisia ympyröitä.
$kp = ($koko-1)/2;
// Lasketaan keskipisteen neliö, myöhempää vertailua varten:
$kpn = $kp*$kp;


// Käydään raa'asti koko ruutu läpi, ja vertaillaan jokaista pikseliä:
for($y = 0; $y < $koko; $y++){
	for($x = 0; $x < $koko; $x++){
		// Lasketaan etäisyys, kaava: (leveys^2)+(korkeus^2)
		// Negatiivisillä arvoilla ei ole merkitystä, koska potenssiin korotus poistaa ne automaattisesti:
		$eta = ($kp-$x)*($kp-$x)+($kp-$y)*($kp-$y);
		// Saimme tulokseksi etäisyyden neliön, joten meidän pitää
		// verrata sitä keskipisteen neliöön, jonka laskimme etukäteen:
		if($eta < $kpn){
			// Lasketaan etäisyys pikseleissä (neliöjuuri), ja skaalataan väriarvo:
			$color = (sqrt($eta)/$kp)*255;
			// Otetaan negatiivinen väriarvo, ja pyöristetään väri:
			$color = 255-(int)($color+0.5);
			imagesetpixel($im, $x, $y, $color);
		}
	}
}


imagepng($im);
imagedestroy($im);


?>

Vastaus

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

Tietoa sivustosta