Кривая дракона

03.07.2022

Кривая дракона — общее название для некоторых фрактальных кривых, которые могут быть аппроксимированы рекурсивными методами, такими как L-системы.

Дракон Хартера — Хейтуэя

Дракон Хартера, также известный как дракон Хартера — Хейтуэя, был впервые исследован физиками NASA — Джоном Хейтуэем (John Heighway), Брюсом Бэнксом (Bruce Banks), и Вильямом Хартером (William Harter). Он был описан в 1967 году Мартином Гарднером в колонке «Математические игры» журнала «Scientific American». Многие из свойств фрактала были описаны Чендлером Дэвисом (Chandler Davis) и Дональдом Кнутом.

Фрактал может быть записан как L-система с параметрами:

  • угол равен 90° или pi/2
  • начальная строка — FX
  • правила преобразования строк:
    • X ↦ {displaystyle mapsto } X+YF+
    • Y ↦ {displaystyle mapsto } -FX-Y

Кроме того, фрактал может быть описан системой итерируемых функций на комплексной плоскости:

f 1 ( z ) = ( 1 + i ) z 2 {displaystyle f_{1}(z)={frac {(1+i)z}{2}}} f 2 ( z ) = 1 − ( 1 − i ) z 2 {displaystyle f_{2}(z)=1-{frac {(1-i)z}{2}}} .

Берём отрезок, сгибаем его пополам. Затем многократно повторяем итерацию. Если после этого снова разогнуть получившуюся (сложенную) линию так, чтобы все углы были равны 90°, мы получим драконову ломаную.

Примеры

Пример алгоритма на Python с помощью системы Линденмайера import turtle turtle.hideturtle() turtle.tracer(0) turtle.penup() turtle.setpos(-100, -150) turtle.pendown() axiom, tempAx, logic, count = 'FX', '', {'X': 'X+YF+', 'Y': '−FX−Y'}, 15 for i in range(count): for j in axiom: tempAx += logic[j] if j in logic else j axiom, tempAx = tempAx, '' for k in axiom: if k == 'F': turtle.forward(2.5) elif k == '+': turtle.right(90) elif k == '−': turtle.left(90) turtle.update() turtle.mainloop()

Имя:*
E-Mail:
Комментарий:
Информационный некоммерческий ресурс fccland.ru © 2022
При цитировании информации ссылка на сайт обязательна.
Копирование материалов сайта ЗАПРЕЩЕНО!