Ik heb hier een voorbeeld:
Klikje
Verder heb ik zelf een poging gedaan om een soort van pythagorasboom te maken, waaruit dit is gekomen: (sorry voor de code, heb momenteel nog geen webhost en het staat dus ook niet online!)
<?PHP
header("Content-type: image/png");
//ignore_user_abort(true);
set_time_limit(0);
error_reporting(E_ALL);
//------------------------------------------------------------------------------------------------------------
define("X_MIN" ,-15 );
define("X_MAX" , 15 );
define("Y_MIN" ,-10 );
define("Y_MAX" , 10 );
define("WIDTH" , 4500);
define("HEIGHT", 3000);
define("SIZE_START",6);
define("TOP_WIDTH",2);
define("BOTTOM_WIDTH",3);
define("SIZE_R_FRAC",(2/3));
define("SIZE_L_FRAC",(1/2));
define("ANGLE_R",35);
define("ANGLE_L",20);
define("ITTERATIONS",10);
$image=imagecreatetruecolor(WIDTH,HEIGHT);
$color['white'] = imagecolorallocate($image, 255, 255, 255);
$color['black'] = imagecolorallocate($image, 0 , 0 , 0 );
imagefill($image,0,0,$color['white']);
$palette = imagecreatefrompng("palette.png");
for ($i=0; $i<imagesx($palette); $i++) {
$rgb = imagecolorat($palette, $i, 0);
$colors[$i] = imagecolorallocate($image, ($rgb >> 16) & 0xFF, ($rgb >> 8) & 0xFF, $rgb & 0xFF);
}
function getX_polar_pt($r,$phi){
$x=$r*cos(deg2rad($phi));
return $x;
}
function getY_polar_pt($r,$phi){
$y=$r*sin(deg2rad($phi));
return $y;
}
function getX_rect($pt){
$x=intval( ($pt-X_MIN)/((X_MAX-X_MIN)/(WIDTH-1)) );
return $x;
}
function getY_rect($pt){
$y=intval( ($pt-Y_MIN)/((Y_MAX-Y_MIN)/(HEIGHT-1)) );
$y=HEIGHT-$y;
return $y;
}
imagefilledpolygon($image,array(getX_rect((1/2)*BOTTOM_WIDTH),getY_rect(0-SIZE_START),getX_rect(0-(1/2)*BOTTOM_WIDTH),getY_rect(0-SIZE_START),getX_rect(0-(1/2)*TOP_WIDTH),getY_rect(0),getX_rect((1/2)*TOP_WIDTH),getY_rect(0)),4,$colors[0]);
$branches=pow(2,ITTERATIONS);
$points=array();
$i=1;
while($i<=$branches){
$x=0;
$y=0;
$originX=0;
$originY=0;
$s_h=SIZE_START;
$s_b=BOTTOM_WIDTH*(1/2);
$s_t=TOP_WIDTH*(1/2);
$a=90;
$string=decbin($i);
while(strlen($string)<ITTERATIONS){
$string="0".$string;
}
for($n=1;$n<=strlen($string);$n++){
$current_go=substr($string,($n-1),1);
if($current_go==="0"){
$s_h*=SIZE_L_FRAC;
$s_b=$s_t*SIZE_L_FRAC;
$s_t=$s_b*(TOP_WIDTH/BOTTOM_WIDTH);
$a+=ANGLE_L;
}else{
$s_h*=SIZE_R_FRAC;
$s_b=$s_t;
$s_t=$s_b*(TOP_WIDTH/BOTTOM_WIDTH);
$a-=ANGLE_R;
}
$x+=getX_polar_pt($s_h,$a);
$y+=getY_polar_pt($s_h,$a);
$x1=getX_rect($originX);
$y1=getY_rect($originY);
$x2=getX_rect($x);
$y2=getY_rect($y);
imagefilledpolygon($image,array($x1+(getX_rect(X_MIN+$s_b)),$y1,$x1-(getX_rect(X_MIN+$s_b)),$y1,$x2-(getX_rect(X_MIN+$s_t)),$y2,$x2+(getX_rect(X_MIN+$s_t)),$y2),4,$colors[$n]);
$originX=$x;
$originY=$y;
}
$i++;
}
imagepng($image,"PythagorasTree.png");
?>
Voor de mensen die zeggen "och arme server": Ik weet het, maar ik kan (nog) geen C, C# of C++, dus het zal op dit moment toch echt in php moeten ;)
Ik heb nog geen andere voorbeelden gevonden, maar ik zie ze graag ;)