Curba Levy
Curbe Levy - fractal . Propus de matematicianul francez P. Levy . Se pare că dacă luăm jumătate de pătrat de forma / \, apoi înlocuim fiecare latură cu același fragment și repetând această operație, în limită obținem curba Levy.
Sistemul L care generează curba Levy:
variabile : F
constante : + −
început : F
reguli : -F++F-
unghi : 45°
Proprietăți
- Curba Levy nu este nicăieri diferențiabilă și nu poate fi rectificată.
- Pe orice interval al curbei Levy există puncte de auto-intersecție.
- Dimensiunea Hausdorff a limitei curbei Lévy este de aproximativ 1,9340. (Curba Levy constă din două părți egale, fiecare dintre ele similară cu întreaga curbă cu un coeficient de similitudine , din cauza absenței auto-intersecțiilor semnificative, dimensiunea sa este exactă .)
- Curve Levy - coroana copacului pitagoreic .
Variante
Curba Levy standard este construită folosind triunghiuri isoscele cu unghiuri de bază de 45°. Variațiile curbei Levy pot fi construite folosind triunghiuri isoscele cu unghiuri altele decât 45°. Atâta timp cât unghiul este mai mic de 60°, fiecare nouă linie este mai scurtă decât linia din care este formată, astfel încât procesul de construcție tinde către curba limită. Unghiurile mai mici de 45° produc un fractal care este mai puțin strâns „îndoit”.
Un exemplu de algoritm în PHP
<?php
$i = 10 ;
$imagine = imagecreatetruecolor ( 640 , 480 );
imagefilleddrectangle ( $imagine , 0 , 0 , imagesx ( $imagine ) - 1 , imagesy ( $imagine ) - 1 ,
imagecolorresolve ( $imagine , 255 , 255 , 255 ));
$culoare = imaginecolorresolve ( $imagine , 0 , 0 , 0 );
drawLevy ( $imagine , imagini x ( $ imagine ) * 3 / 8 , imagini ( $ imagine ) * 3 / 8 , imaginix ( $ imagine ) * 5 / 8 , imagini ( $ imagine ) * 5 / 8 , $i , $culoare );
/**
* Desenează curba taxei între două puncte.
* @return void
*/
function drawLevy ( $imagine , $xa , $ya , $xc , $yc , $i , $culoare ) {
if ( $i == 0 )
imagineline ( $imagine , $xa , $ya , $xc , $yc , $culoare );
else {
// A---B
// |
// C
$xb = ( $xa + $xc ) / 2 + ( $yc - $ya ) / 2 ;
$yb = ( $ya + $yc ) / 2 - ( $xc - $xa ) / 2 ;
drawLevy ( $imagine , $xa , $ya , $xb , $yb , $i - 1 , $culoare );
drawLevy ( $imagine , $xb , $yb , $xc , $yc , $i - 1 , $culoare );
}
}
antet ( 'Tipul conținut: imagine/png' );
imagepng ( $imagine );
imagedestroy ( $imagine );
?>
Un exemplu de algoritm în Python 3
import broasca testoasa
broasca testoasa . hideturtle ()
țestoasă . trasator ( 0 )
broasca testoasa . penup ()
broasca testoasa . setposition ( - 100 , 0 )
broasca testoasa . pendown ()
axiomă , tempAx , logică , iterații = 'F' , '' , { 'F' : '-F++F-' }, 15
pentru i în interval ( iterații ):
pentru j în axiomă :
tempAx += logic [ j ] dacă j în logică altfel j
axiomă , tempAx = tempAx , ''
pentru k în axiomă :
dacă k == '+' :
broască ţestoasă . dreapta ( 45 )
elif k == '-' :
broasca testoasa . stânga ( 45 )
else :
broasca testoasa . înainte ( 1 )
broasca testoasa . update ()
broasca testoasa . bucla principală ()
Vezi și