Levyho křivka

Curve Levy  - fraktál . Navrhl francouzský matematik P. Levy . Ukazuje se, že pokud vezmeme polovinu čtverce tvaru / \, a pak nahradíme každou stranu stejným fragmentem a zopakováním této operace, v limitě dostaneme Levyho křivku.

L-systém , který generuje Levyho křivku:

proměnné  : F konstanty  : + − začátek  : F pravidla  : -F++F- úhel  : 45°

Vlastnosti

Variace

Standardní Levyho křivka je konstruována pomocí rovnoramenných trojúhelníků se základními úhly 45°. Variace Levyho křivky lze konstruovat pomocí rovnoramenných trojúhelníků s úhly jinými než 45°. Dokud je úhel menší než 60°, je každá nová čára kratší než čára, ze které je vytvořena, takže stavební proces směřuje k limitní křivce. Úhly menší než 45° vytvářejí fraktál, který je méně pevně "složený".


Příklad algoritmu v PHP

<?php $i = 10 ; $image = imagecreatetruecolor ( 640 , 480 ); imagefilledrectangle ( $image , 0 , 0 , imagesx ( $image ) - 1 , imagesy ( $image ) - 1 , imagecolorresolve ( $image , 255 , 255 , 255 )); $barva = imagecolorresolve ( $ obrazek , 0 , 0 , 0 ); drawLevy ( $ image , imagesx ( $ image ) * 3/8 , imagesy ( $ image ) * 3/8 , imagesx ( $ image ) * 5/8 , imagesy ( $ image ) * 5/8 , $ i , $ color _ ); /** * Nakreslí křivku mezi dvěma body. * @return void */ function drawLevy ( $image , $xa , $ya , $xc , $yc , $i , $color ) { if ( $i == 0 ) imageline ( $image , $xa , $ya , $xc , $yc , $barva ); else { // A---B // | // C $xb = ( $xa + $xc ) / 2 + ( $yc - $ya ) / 2 ; $yb = ( $ya + $yc ) / 2 - ( $ xc - $ xa ) / 2 ; drawLevy ( $image , $xa , $ya , $xb , $yb , $i - 1 , $barva ); drawLevy ( $image , $xb , $yb , $xc , $yc , $i - 1 , $barva ); } } záhlaví ( 'Typ obsahu: obrázek/png' ); imagepng ( $ obrazek ); imagedestroy ( $image ); ?>

Příklad algoritmu v Pythonu 3

importovat želvu želva . hideturtle () želva . tracer ( 0 ) želva . penup () želva . setposition ( - 100 , 0 ) želva . čekání () axiom , tempAx , logika , iterace = 'F' , '' , { 'F' : '-F++F-' }, 15 pro i v rozsahu ( iterace ): pro j v axiomu : tempAx += logika [ j ] if j v logice else j axiom , tempAx = tempAx , '' pro k v axiomu : if k == '+' : želva . vpravo ( 45 ) elif k == '-' : želva . vlevo ( 45 ) jinde : želva . vpřed ( 1 ) želva . aktualizovat () želva . hlavní smyčka ()

Viz také