Приближалось восьмое марта, у меня была реализация автоматизированного рисования поверхностей со сплайнами — почему бы не написать статью с цветами.
Получилось примерно так:
Дальше будет больше, следите за пробками.
Описан алгоритм построения кубических кривых.
ранее .
Здесь мы попробуем использовать его, чтобы получить что-то похожее на цветок.
Единственная проблема заключается в том, как выбрать входные данные.
Входные данные представляют собой набор точек с координатами в трехмерном пространстве и набор связей между ними, такой, что топологически данная конструкция должна быть эквивалентна ящику, например так:
(в конце должно быть так:)
Чтобы кубические поверхности при натяжении на каркас выглядели как цветок, точки необходимо расположить симметрично, на окружностях, описанных вокруг центра цветка.
Для решения этой проблемы был применен вариант «поиска в ширину».
Присвоим веса всем точкам.
Сначала крайним точкам присваиваем веса 0 и 1 (два одинаковых веса не должны находиться рядом).
Это будут края «лепестков», 0 — дальние, 1 — ближние («лепестки» в кавычках, потому что разделения на лепестки как такового нет).
Далее мы взвешиваем, присваивая вес n+2 невзвешенным соседям с весом n.
Взвешенная коробка:
Далее случайным образом выбираем расстояния r от центра цветка для каждой весовой категории.
Логика здесь следующая: чем больше вес, тем ближе нужно будет переместить точку к центру и выполнить неравенства:
где r — расстояние от центра цветка до точек соответствующего веса.
Четные гири отвечают за центральную часть «лепестка», нечетные — за края «лепестка».
Чтобы разместить точки на окружностях (а не на сферах), нам также приходится случайным образом выбирать z-координаты таким образом, чтобы z_n < r_n (if the center of the flower is at coordinate zero).
На следующем этапе нам необходимо узнать углы расположения точек на окружности:
а затем координаты i-й точки веса n, если она четная:
для нечетного:
Кроме того, важен порядок, в котором мы берем точки – они должны быть «соседями».
После всех этих манипуляций получается конструкция в форме звезды, на которую можно натянуть шлицы.
(вид сверху, изометрия, сплайны)
Можно рандомизировать 100 500 таких чашелистиков, но лучше выбрать из них подходящие, скомпоновать несколько цветков, подобрать цвета и параметры сердцевины вручную, чтобы генерация была полуавтоматической.
(тип ПО для сборки)
Поздравляю прекрасную половину хабра-сообщества с Международным женским днём! Надеюсь, вы прекрасно провели время.
Теги: #математика #Алгоритмы #Работа с 3D графикой #праздники #геометрия
-
Ноутбук Tandy Trs-80 Модель 200
19 Oct, 24 -
Упаковщик Для Dsniff.db
19 Oct, 24 -
Весенний Моб И Хабрашодка?
19 Oct, 24