Ik ben geintresserd in fractals, ik wou weten wat jullie daarvan vinden ;).

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 ;)
Je kunt ook zoeken op [google]mandelbrot[/google] (amandelbroodjes :-P), volgens mij krijg je dan ook wel veel interessante dingen.
Meer dan als je zoekt op fractals.
Mijn pa had vroeger een dos programma wat dit soort plaatjes ging maken :-).
Karl schreef op 10.12.2009 15:46
Je kunt ook zoeken op [google]mandelbrot[/google] (amandelbroodjes :-P), volgens mij krijg je dan ook wel veel interessante dingen.
Meer dan als je zoekt op fractals.
Mijn pa had vroeger een dos programma wat dit soort plaatjes ging maken :-).


Klopt, zie link (die ik al gepost had), die is dus al in php gemaakt.

Reageren