Фракталы из хаоса: chaos game

Операции масштабирования и поворота (или более общие преобразования) можно использовать для генерации фрактальных структур довольно простым способом перемещая всего одну точку. Алгоритм достаточно прост:

  1. Генерируем случайные координаты x и y первой точки.
  2. Выбираем случайно какую из формул для нахождения координат следующей точки применить. Находим эти координаты.
  3. Применяем п.2 много раз.

Например, для фрактала «Кривая дракона» (Dragon curve) каждый раз случайно выбираем одну из следующих двух формул:

1. \( \displaystyle P_{n+1}=\frac{1}{\sqrt{2}}R_{\pi /4}P_{n}\);

2. \( \displaystyle P_{n+1}=\frac{1}{\sqrt{2}}R_{3\pi /4}P_{n}+\binom{1}{0}\)

где \( \displaystyle P_{n}, P_{n+1}\) — вектор-столбцы декартовых координат текущей и следующей точек; \( \displaystyle R_{\pi /4}, R_{3\pi /4}\) — квадратные 2х2 матрицы поворотов на соответствующие углы.

 

Или для фрактала «Папоротник Барнсли» (Barnsley’s Fern) выбираем из четырех формул, которые в явном матричном виде запишутся:

1. \( \displaystyle \binom{x_{n+1}}{y_{n+1}}=\begin{pmatrix}
0 & 0\\
0 & 0.15
\end{pmatrix}\binom{x_{n}}{y_{n}}\);

2. \( \displaystyle \binom{x_{n+1}}{y_{n+1}}=\begin{pmatrix}
0.2 & -0.25\\
0.2 & 0.2
\end{pmatrix}\binom{x_{n}}{y_{n}}+\binom{0}{1.5}\);

3. \( \displaystyle \binom{x_{n+1}}{y_{n+1}}=\begin{pmatrix}
-0.15 & 0.3\\
0.25 & 0.25
\end{pmatrix}\binom{x_{n}}{y_{n}}+\binom{0}{0.45}\);

4. \( \displaystyle \binom{x_{n+1}}{y_{n+1}}=\begin{pmatrix}
0.85 & 0.05\\
-0.05 & 0.85
\end{pmatrix}\binom{x_{n}}{y_{n}}+\binom{0}{1.5}\);

 

Для более равномерной отрисовки, вероятности выбора той или иной формулы приходится брать разные. Показанное на видео получается при вероятностях 7% применения для каждой из первых трех формул и соответственно 79% для четвертой.

Если дочитали до конца, поддержите автора!

Добавить комментарий

Ваш адрес email не будет опубликован.