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

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