Avgiftskurva

Curve Levy  - fraktal . Föreslagen av den franske matematikern P. Levy . Det visar sig att om vi tar en halv kvadrat av formen / \ och sedan ersätter varje sida med samma fragment och upprepar denna operation, i gränsen får vi Levy-kurvan.

L-system som genererar avgiftskurvan:

variabler  : F konstanter  : + − start  : F regler  : -F++F- vinkel  : 45°

Egenskaper

Variationer

Standard Levy-kurvan är konstruerad med likbenta trianglar med 45° basvinklar. Variationer av Levy-kurvan kan konstrueras med hjälp av likbenta trianglar med andra vinklar än 45°. Så länge vinkeln är mindre än 60° är varje ny linje kortare än linjen från vilken den är bildad, så att byggprocessen tenderar mot gränskurvan. Vinklar mindre än 45° ger en fraktal som är mindre tätt "vikt".


Ett exempel på algoritm i PHP

<?php $i = 10 ; $image = imagecreatetruecolor ( 640 , 480 ); bildfylld rektangel ( $image , 0 , 0 , imagesx ( $image ) - 1 , imagesy ( $image ) - 1 , imagecolorresolve ( $image , 255 , 255 , 255 )); $color = imagecolorresolve ( $image , 0 , 0 , 0 ); drawLevy ( $image , imagesx ( $image ) * 3 / 8 , imagesy ( $image ) * 3 / 8 , imagesx ( $image ) * 5 / 8 , imagesy ( $image ) * 5 / 8 , $i , $color ); /** * Ritar avgiftskurva mellan två punkter. * @return void */ funktion drawLevy ( $image , $xa , $ya , $xc , $yc , $i , $color ) { if ( $i == 0 ) imageline ( $image , $xa , $ya , $xc , $yc , $color ); annat { // 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 , $color ); drawLevy ( $image , $xb , $yb , $xc , $yc , $i - 1 , $color ); } } header ( 'Content-type: image/png' ); imagepng ( $image ); imagedestroy ( $image ); ?>

Ett exempel på algoritm i Python 3

importera sköldpadda sköldpadda . hideturtle () sköldpadda . spår ( 0 ) sköldpadda . penup () sköldpadda . setposition ( -100 , 0 ) sköldpadda . _ pendown () axiom , tempAx , logik , iterationer = 'F' , '' , { 'F' : '-F++F-' }, 15 för i i intervall ( iterationer ): för j i axiom : tempAx += logik [ j ] om j i logik annars j axiom , tempAx = tempAx , '' för k i axiom : om k == '+' : sköldpadda . höger ( 45 ) elif k == '-' : sköldpadda . vänster ( 45 ) annat : sköldpadda . framåt ( 1 ) sköldpadda . uppdatera () sköldpadda . huvudslinga ()

Se även