Фракталы из хаоса: chaos game
Операции масштабирования и поворота (или более общие преобразования) можно использовать для генерации фрактальных структур довольно простым способом перемещая всего одну точку. Алгоритм достаточно прост:
- Генерируем случайные координаты x и y первой точки.
- Выбираем случайно какую из формул для нахождения координат следующей точки применить. Находим эти координаты.
- Применяем п.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% для четвертой.
Если дочитали до конца, поддержите автора!