Кривая Коха
Кривая Коха — фрактальная кривая, описанная в 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+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(-90)
elif k == '−':
turtle.left(-90)
else:
turtle.forward(5)
turtle.update()
turtle.mainloop()
Свойства
- Кривая Коха нигде не дифференцируема и не спрямляема.
- Кривая Коха имеет бесконечную длину.
- Кривая Коха не имеет самопересечений.
- Кривая Коха имеет промежуточную (то есть не целую) хаусдорфову размерность, которая равна , поскольку она состоит из четырёх равных частей, каждая из которых подобна всей кривой с коэффициентом подобия 1/3.
- Плоскость допускает замощение снежинками Коха двух размеров (площадь меньшей снежинки в 3 раза меньше площади большей). При этом не существует замощения снежинками одного размера.[1]
Вариации и обобщения
Возможны обобщения кривой Коха, также использующие при построении подстановку ломаной из четырёх равных отрезков, но имеющей иную геометрию. Они имеют хаусдорфову размерность от 1 до 2. В частности, если вместо деления отрезка 1:1:1 использовать золотое сечение (φ:1:φ), то получившаяся кривая имеет отношение к мозаикам Пенроуза.
Также можно построить «Снежинку Коха» на сторонах равностороннего треугольника.
Вслед за подходом Коха были разработаны варианты с прямыми углами (квадратичная), других углов (Чезаро) или кругов и их расширения на высшие размерности (сферическая снежинка):
Вариант | Иллюстрация | Получение |
---|---|---|
1D, 85°, угол | Фрактал Cesaro — вариант кривой Коха с углом между 60° и 90° (здесь 85°) | |
1D, 90°, угол | ||
1D, 90°, угол | ||
2D, треугольники | ||
2D, 90°, угол | Расширение квадратичного кривой 1 типа, соответствующее «вывернутой губке Менгера»[2]. На изображении слева — фрактал после второй итерации:
| |
2D, 90°, угол | Расширение квадратичного кривой 2 типа. На изображении слева — фрактал после первой итерации | |
2D, сферы | Эрик Хэйнс разработал фрактал «сферическая снежинка», который является трёхмерной версией снежинки Коха (используются сферы) |
Снежинка Коха
Снежинка Коха, построенная в виде замкнутой кривой на базе равностороннего треугольника, впервые была описана шведским математиком Хельге фон Кохом в 1904 году[3]. В некоторых работах она получила название «остров Коха»[4].
Было доказано, что эта фрактальная кривая обладает рядом любопытных свойств. К примеру, длина её периметра равна бесконечности, что, однако, не мешает ему охватывать конечную площадь, величина которой равна 8/5 площади базового треугольника[5]. Вследствие этого факта некоторые прикладные методики и параметры плоских фигур, такие как, например, краевой индекс (отношение периметра к корню из площади), при работе со снежинкой Коха оказываются неприменимыми[4].
Вычисление фрактальной размерности снежинки Коха даёт значение, приблизительно равное 1,2619[3][4].
Возможно также построение так называемой антиснежинки Коха, алгоритм генерирования которой заключается в вырезании на каждом этапе всё новых и новых треугольников из исходного. Иными словами, рёбра базовой формы модифицируются внутрь, а не наружу. В результате полученная фигура охватывает бесконечное множество несвязанных областей, суммарная площадь которых равна 2/5 от площади треугольника нулевой итерации[5].
Примечания
- Burns, Aidan. Fractal tilings (неопр.) // Mathematical Gazette. — 1994. — Т. 78, № 482. — С. 193—196. — ..
- Baird, Eric. Alt.Fractals: A visual guide to fractal geometry and design. Chocolate Tree Books (2011) ISBN 0-9557068-3-1 — Chapter 3 «Not the Koch Snowflake», esp. pages 23—24.
- E. Seligman. Between the Dimensions (From Math Mutation podcast 22) // Math Mutation Classics. Exploring Interesting, Fun and Weird Corners of Mathematics. — Hillsboro, Oregon, USA: APRESS, 2016. — P. 53. — ISBN 978-1-4842-1891-4. — doi:10.1007/978-1-4842-1892-1.
- Гелашвили Д. Б., Иудин Д. И., Розенберг Г. С., Якимов В. Н., Солнцев Л. А. 2.3. Регулярные фракталы // Фракталы и мультифракталы в биоэкологии. — Нижний Новгород: Нижегородский госуниверситет, 2013. — С. 49. — 370 с. — ISBN 978-5-91326-246-2.
- А. А. Потапов, Ю. В. Гуляев, С. А. Никитов, А. А. Пахомов, В. А. Герман. Классические фрактальные кривые и множества // Новейшие методы обработки изображений / А. А. Потапов. — М.: «Физматлит», 2008. — С. 82. — 496 с. — ISBN 978-5-9221-0841-6.