Кривая Коха — фрактальная кривая, описанная в 1904 году шведским математиком Хельге фон Кохом.
Три копии кривой Коха, построенные (остриями наружу) на сторонах правильного треугольника, образуют замкнутую кривую бесконечной длины, называемую снежинкой Коха.
Построение
Кривая Коха является типичным геометрическим фракталом. Процесс её построения выглядит следующим образом: берём единичный отрезок, разделяем на три равные части и заменяем средний интервал равносторонним треугольником без этого сегмента. В результате образуется ломаная, состоящая из четырёх звеньев длины 1/3. На следующем шаге повторяем операцию для каждого из четырёх получившихся звеньев и т. д… Предельная кривая и есть кривая Коха.
Пример скрипта (PHP) <?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); ?> Пример прямоугольной кривой (Pascal) 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. Пример прямоугольной кривой (Python) 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()
Свойства
- Кривая Коха нигде не дифференцируема и не спрямляема.
- Кривая Коха имеет бесконечную длину.
- Кривая Коха не имеет самопересечений.
- Кривая Коха имеет промежуточную (то есть не целую) хаусдорфову размерность, которая равна ln 4 / ln 3 ≈ 1 , 26 {displaystyle ln 4/ln 3approx 1{,}26} , поскольку она состоит из четырёх равных частей, каждая из которых подобна всей кривой с коэффициентом подобия 1/3.
- Плоскость допускает замощение снежинками Коха двух размеров. При этом не существует замощения снежинками одного размера.
Вариации и обобщения
Возможны обобщения кривой Коха, также использующие при построении подстановку ломаной из четырёх равных отрезков, но имеющей иную геометрию. Они имеют хаусдорфову размерность от 1 до 2. В частности, если вместо деления отрезка 1:1:1 использовать золотое сечение (φ:1:φ), то получившаяся кривая имеет отношение к мозаикам Пенроуза.
Также можно построить «Снежинку Коха» на сторонах равностороннего треугольника.
Вслед за подходом Коха были разработаны варианты с прямыми углами (квадратичная), других углов (Чезаро) или кругов и их расширения на высшие размерности (сферическая снежинка):
Снежинка Коха
Снежинка Коха, построенная в виде замкнутой кривой на базе равностороннего треугольника, впервые была описана шведским математиком Хельге фон Кохом в 1904 году. В некоторых работах она получила название «остров Коха».
Было доказано, что эта фрактальная кривая обладает рядом любопытных свойств. К примеру, длина её периметра равна бесконечности, что, однако, не мешает ему охватывать конечную площадь, величина которой равна 8/5 площади базового треугольника. Вследствие этого факта некоторые прикладные методики и параметры плоских фигур, такие как, например, краевой индекс (отношение периметра к корню из площади), при работе со снежинкой Коха оказываются неприменимыми.
Вычисление фрактальной размерности снежинки Коха даёт значение, приблизительно равное 1,2619.
Возможно также построение так называемой антиснежинки Коха, алгоритм генерирования которой заключается в вырезании на каждом этапе всё новых и новых треугольников из исходного. Иными словами, рёбра базовой формы модифицируются внутрь, а не наружу. В результате полученная фигура охватывает бесконечное множество несвязанных областей, суммарная площадь которых равна 2/5 от площади треугольника нулевой итерации.