Dragon curve

Apr 18, 2015 21:02

image Click to view



Давно собирался и наконец собрался сделать что-нибудь такое: процедурно-генерированное видео с какой-нибудь красивой геометрией. Если понравится, сделаю ещё.

Leave a comment

Comments 4

улучшить? hronopik April 19 2015, 18:56:29 UTC
Дискретные сдвиги в плоскости не очень (идеально было б, конечно, только скалировать, но для конкретной кривой может быть придется ее слишком сильно уменьшать. В крайнейм случае - просто плавное движение).
А так выглядит славно! Изюму бы ей еще какого-нибудь... Что если как-нибудь интересно цвет менять, чтобы сначала было пестро, а потом сливалось при достаточном удалении?

Reply

eterevsky April 20 2015, 00:11:00 UTC
> Дискретные сдвиги в плоскости не очень

Да, у меня сначала была та же проблема со скейлинго, и я её решил, апроксимировав его экспоненциальной функцией. Со сдвигом я попытался сделать то же самое (только приближал, естественно, функцией из другого семейства), но сходу у меня хорошо не получилось. Можно ещё сглаживать локально (и возможно я так и сделаю), но до этого у меня руки не дошли.

Не хочется вручную подбирать скейлинг и сдвиг. Хочется чтобы раз -- и они сами автоматически подобрались.

> А так выглядит славно! Изюму бы ей еще какого-нибудь... Что если как-нибудь интересно цвет менять, чтобы сначала было пестро, а потом сливалось при достаточном удалении?

Я попробую сделать видео с разбиением плоскости на такие фиговины. Будет цветное.

Reply

hronopik April 20 2015, 06:11:27 UTC
а как ты расчитываешь сдвиг? по позиции курсора или взвешиваешь с еще чем-нибуть типа центра масс? Я думаю, что хорошая функция скорости должна быть просто диффенцируема. Может быть просчитать скорости на несколько шагов вперед и зафиттить туда многочлен (пересчитывая каждый раз в скользящем окошке, так что лучше может быть сплайны)

Reply

eterevsky April 20 2015, 16:31:18 UTC
На первом шаге я подбираю скейлинг и сдвиг так чтобы вся кривая точно попадала в экран минус десятипроцентные поля. (+ минимальное значение скейлинга, чтобы при рисовании первого сегмента окно стояло на месте) Потом я приближаю коэффицент скейлига глобальной функцией, а сдвиг вычисляю чтобы центрировать кривую относительно окна.

Я потом выложу код на Гитхаб и может напишу статью на Хабре -- мне кажется, там есть несколько интересных моментов.

Reply


Leave a comment

Up