Кривая Леви — фрактал. Предложен французским математиком П. Леви. Получается, если взять половину квадрата вида /\, а затем каждую сторону заменить таким же фрагментом, и, повторяя эту операцию, в пределе получим кривую Леви.
L-система, порождающая кривую Леви:
Стандартная кривая Леви строится с помощью равнобедренных треугольников с углами при основании 45°. Вариации кривой Леви можно построить с помощью равнобедренных треугольников с другими, отличными от 45° углами. До тех пор, пока угол меньше 60°, каждая новая линия короче той линии, из которой она образована, так что процесс строительства стремится к предельной кривой. Углы менее 45° производят фрактал, который менее плотно "свернут".
<?php
$i = 10;
$image = imagecreatetruecolor(640, 480);
imagefilledrectangle($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);
/**
* Draws levy curve between two points.
* @return void
*/
function drawLevy($image, $xa, $ya, $xc, $yc, $i, $color) {
if($i == 0)
imageline($image, $xa, $ya, $xc, $yc, $color);
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, $color);
drawLevy($image, $xb, $yb, $xc, $yc, $i - 1, $color);
}
}
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>
from turtle import *
instruction = ['l', 'f', 'r', 'f', 'l']
def movement(iterations=1, actions=None, length=None):
if not actions:
actions = ['f']
if not length:
length = 200 / 2 ** (iterations/2)
for i in actions:
if i == 'f':
if iterations != 0:
movement(iterations - 1, instruction, length)
else:
forward(length)
elif i == 'l':
left(45)
elif i == 'r':
right(90)
iterations = 18
speed(0), tracer(0, 0)
movement(iterations)
update()
mainloop()
В этой статье не хватает ссылок на источники информации. |
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .