Pull to refresh

Comments 23

Спасибо большое за статью.
Первый раз вижу код на флеше, кстати. Интересненько.
Он чем-то похож на С++ и Джаву, без переусложненностей джавы и шаблонов сиплюсплюса. Что интересно, третья (она же последняя, похоже) версия куда как серьезнее уклоняется в ООП, чем вторая и тем более первая.
Началось всё с того, что на форуме Kongregate.com, где я в то время активно тусил, один из участников предложил посостязаться в процедурной генерации чего-либо, первой темой стал «Лес».


В итоге Вы выиграли состязание? :)
Нет, но где-то третье место занял. Может, четвертое. Победитель сгенерировал лес из 4 двухмерных слоев с красивыми шапками, который не требовал слишком больших затрат на рендер и как следствие был пригоден к чему-либо ещё, кроме как покрасоваться.

2д? Тема была просто "лес"? Не 3д? (даже без физики) P.S. Помнится, у НВидии была интересная интерактивная демка процедурной генерации дерева.

Ну, его визуализация создавала эффект параллакса в том числе, то есть этакое 2.5D. Да, тема была просто «лес». Таких соревнований там было в итоге три, с темами «лес», «города» и «планеты», планетная была ИМХО интереснее остальных, потом все участники разбежались.
Я не знаю такого фрактала, который способен породить дерево.
Да, потом вспомнил. В их сторону и не смотрел, потому что они детерминированы, а мне нужно было, чтобы результат был случайным, но «похожим на дерево». Спасибо все равно.
L-системы не обязательно должны быть детерминированы, вся суть сводится к рекурсивной замене отдельных символов в строке (палочек веток) на подстроки (ветви). Что на что заменять описывается правилами, которые могут быть какими угодно, например заменить одну палку на три случайной длины под случайными углами, либо выбрать случайную ветвь из заранее подобранных комбинаций.
Собственно, коммерческие решения вроде SpeedTree примерно так и делают.

Фракталы "родились" из необходимости сгенерировать изображения ландшафтов максимально похожих на настоящие.

Жаль что умирая flash с собой и actionscript 3 прихватил…
Есть же TypeScript
Там дело не только в языке но и в прекрасном API. Чтобы его спасти, энтузиасты сделали Haxe и OpenFL.org но похоже эти штуки уже не взлетят :(
openfl уже можно юзать и в typescript (https://www.npmjs.com/package/openfl)
Не знаю… мне вот этот майкрософтовский привкус не понравился совсем… Но это только мне конечно… Жду реальных применений котлина в ВЕБ…
Я пришел к выводу, что нужно как-то уменьшать плотность веток.

Кстати, Леонардо да Винчи в свое время вывел эмпирическое правило:
Толщина всех веток дерева на любой его высоте, сложенная вместе, дает толщину ствола

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

Добавив к этой модели давление ветра, Эллой ввел определенный постоянный показатель его предельной величины, после которой ветви начинают ломаться. Исходя из этого, он произвел расчеты, которые показали бы оптимальную толщину разветвляющихся веток, такую, при которой сопротивление силе ветра было бы наилучшим. И что же — он пришел ровно к той же зависимости, причем идеальное значение той же величины лежало между 1,8 и 2,3.

Подробнее можно почитать здесь: masterok.livejournal.com/2643089.html
Любопытная тема. Здесь это, очевидно, не соблюдается, хотя из структуры без толщины можно попытаться вывести толщину каждой ветви. Но что-то мне кажется, что в лучшем случае получится баобаб :) Дело в том, что толщина ветки у меня величина переменная и влиявшая только на отображение, а также мне не был известен закон, по которому у дерева растет толщина ветки, помимо толщины ствола, растущей плюс-минус равномерно. Его и реализовал.
Да, любопытные системы. Когда-то интересовался тоже, но не под эту задачу, а просто так.
Sign up to leave a comment.

Articles

Change theme settings