Коха (святая)
- 1 year ago
- 0
- 0
Кривая Коха — фрактальная кривая , описанная в 1904 году шведским математиком Хельге фон Кохом .
Три копии кривой Коха, построенные (остриями наружу) на сторонах правильного треугольника , образуют замкнутую кривую бесконечной длины , называемую снежинкой Коха .
Кривая Коха является типичным геометрическим фракталом. Процесс её построения выглядит следующим образом: берём единичный отрезок, разделяем на три равные части и заменяем средний интервал равносторонним треугольником без этого сегмента. В результате образуется ломаная, состоящая из четырёх звеньев длины 1/3. На следующем шаге повторяем операцию для каждого из четырёх получившихся звеньев и т. д… Предельная кривая и есть кривая Коха.
<?php
$i = 4;
$image = imagecreatetruecolor(600, 200);
imagefilledrectangle($image, 0, 0, imagesx($image) - 1, imagesy($image) - 1,
imagecolorresolve($image, 255, 255, 255));
$color = imagecolorresolve($image, 0, 0, 0);
drawKoch($image, 0, imagesy($image) - 1, imagesx($image), imagesy($image) - 1, $i, $color);
/**
* Draws koch curve between two points.
* @return void
*/
function drawKoch($image, $xa, $ya, $xe, $ye, $i, $color) {
if($i == 0)
imageline($image, $xa, $ya, $xe, $ye, $color);
else {
// C
// / \
// A---B D---E
$xb = $xa + ($xe - $xa) * 1/3;
$yb = $ya + ($ye - $ya) * 1/3;
$xd = $xa + ($xe - $xa) * 2/3;
$yd = $ya + ($ye - $ya) * 2/3;
$cos60 = 0.5;
$sin60 = -0.866;
$xc = $xb + ($xd - $xb) * $cos60 - $sin60 * ($yd - $yb);
$yc = $yb + ($xd - $xb) * $sin60 + $cos60 * ($yd - $yb);
drawKoch($image, $xa, $ya, $xb, $yb, $i - 1, $color);
drawKoch($image, $xb, $yb, $xc, $yc, $i - 1, $color);
drawKoch($image, $xc, $yc, $xd, $yd, $i - 1, $color);
drawKoch($image, $xd, $yd, $xe, $ye, $i - 1, $color);
}
}
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>
uses GraphABC;
procedure Draw(x, y, l, u : Real; t : Integer);
procedure Draw2(Var x, y: Real; l, u : Real; t : Integer);
begin
Draw(x, y, l, u, t);
x := x + l*cos(u);
y := y - l*sin(u);
end;
begin
if t > 0 then
begin
l := l/3;
Draw2(x, y, l, u, t-1);
Draw2(x, y, l, u+pi/3, t-1);
Draw2(x, y, l, u-pi/3, t-1);
Draw2(x, y, l, u, t-1);
end
else
Line(Round(x), Round(y), Round(x+cos(u)*l), Round(y-sin(u)*l))
end;
begin
SetWindowSize(425,500);
SetWindowCaption('Фракталы: Снежинка Коха');
Draw(10, 354, 400, pi/3, 4);
Draw(410, 354, 400, pi, 4);
Draw(210, 8, 400, -pi/3, 4);
end.
import turtle
turtle.hideturtle()
turtle.tracer(0)
turtle.penup()
turtle.setposition(-200, 0)
turtle.pendown()
axiom = "F"
tempAx = ""
iterable = 4
logic = {
'F': 'F-F+F-F'
}
for i in range(iterable):
for j in axiom:
if j in logic:
tempAx += logic[j]
else:
tempAx += j
axiom, tempAx = tempAx, ''
for k in axiom:
if k == '+':
turtle.right(120)
elif k == '-':
turtle.left(60)
else:
turtle.forward(5)
turtle.update()
turtle.mainloop()
Возможны обобщения кривой Коха, также использующие при построении подстановку ломаной из четырёх равных отрезков, но имеющей иную геометрию. Они имеют хаусдорфову размерность от 1 до 2. В частности, если вместо деления отрезка 1:1:1 использовать золотое сечение (φ:1:φ), то получившаяся кривая имеет отношение к мозаикам Пенроуза .
Также можно построить «Снежинку Коха» на сторонах равностороннего треугольника.
Вслед за подходом Коха были разработаны варианты с прямыми углами (квадратичная), других углов ( ) или кругов и их расширения на высшие размерности (сферическая снежинка):
Вариант | Иллюстрация | Получение |
---|---|---|
1D, 85°, угол | Фрактал Cesaro — вариант кривой Коха с углом между 60° и 90° (здесь 85°) | |
1D, 90°, угол | ||
1D, 90°, угол | ||
2D, треугольники | ||
2D, 90°, угол | Расширение квадратичного кривой 1 типа, соответствующее «вывернутой губке Менгера» . На изображении слева — фрактал после второй итерации: | |
2D, 90°, угол | Расширение квадратичного кривой 2 типа. На изображении слева — фрактал после первой итерации | |
2D, сферы | разработал фрактал «сферическая снежинка», который является трёхмерной версией снежинки Коха (используются сферы) |
Снежинка Коха, построенная в виде замкнутой кривой на базе равностороннего треугольника , впервые была описана шведским математиком Хельге фон Кохом в 1904 году . В некоторых работах она получила название «остров Коха» .
Было доказано, что эта фрактальная кривая обладает рядом любопытных свойств. К примеру, длина её периметра равна бесконечности, что, однако, не мешает ему охватывать конечную площадь , величина которой равна 8/5 площади базового треугольника . Вследствие этого факта некоторые прикладные методики и параметры плоских фигур, такие как, например, (отношение периметра к корню из площади), при работе со снежинкой Коха оказываются неприменимыми .
Вычисление фрактальной размерности снежинки Коха даёт значение, приблизительно равное 1,2619 .
Возможно также построение так называемой антиснежинки Коха, алгоритм генерирования которой заключается в вырезании на каждом этапе всё новых и новых треугольников из исходного. Иными словами, рёбра базовой формы модифицируются внутрь, а не наружу. В результате полученная фигура охватывает бесконечное множество несвязанных областей, суммарная площадь которых равна 2/5 от площади треугольника нулевой итерации .