Fractale

Contenu du snippet

Voici une fractele connue, j'en avais fait dans tout les langages pour lesquels je maitrisais les fonctions graphiques, sauf php, voila, c'est fait, c'est lent et pas super joli, mais c'est une base...

Source / Exemple :


<?php
function tr($im, $p,
	$x1, $y1,
	$x2, $y2, $color){
	$pi=3.141592654;
	if ($p>1){
		$xa1=$x1+($x2-$x1)/3;
		$ya1=$y1+($y2-$y1)/3;

		$xa3=$x1+($x2-$x1)/3*2;
		$ya3=$y1+($y2-$y1)/3*2;
		
		$a=atan(($ya1-$ya3)/($xa1-$xa3))+$pi/3;
		if ($xa3<$xa1)
			$a=$a+$pi;
		$d=sqrt(($ya1-$ya3)*($ya1-$ya3)+($xa3-$xa1)*($xa3-$xa1));

		$xa2=$d*cos($a)+$xa1;
		$ya2=$d*sin($a)+$ya1;

		$im=tr ($im, $p-1,
			$x1, $y1,
			$xa1, $ya1, $color);
			
		$im=tr ($im, $p-1,
			$xa1, $ya1,
			$xa2, $ya2, $color);
			
		$im=tr ($im,$p-1,
			$xa2, $ya2,
			$xa3, $ya3, $color);
			
		$im=tr ($im,$p-1,
			$xa3, $ya3,
			$x2, $y2, $color);
		ImageFilledPolygon($im, array($xa1, $ya1,$xa2, $ya2,$xa3, $ya3),3,$color[$p]);
	}
	return $im;
}

header('Content-type: image/png');
$im= ImageCreate(800,300);
ImageColorAllocate( $im, 200,200,200 );
$max=10;
$color=array();
for ($i=0;$i<$max;$i++){
	$color[$i+1] = ImageColorAllocate( $im, 50, 50,50+round($i*200/$max) );
}
$im=tr ($im, $max, 50, 50, 750, 50, $color);
imageJpeg($im);
?>

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.