(Почти) Автоматическая Генерация Цвета

Приближалось восьмое марта, у меня была реализация автоматизированного рисования поверхностей со сплайнами — почему бы не написать статью с цветами.

Получилось примерно так:

(Почти) Автоматическая генерация цвета

Дальше будет больше, следите за пробками.

Описан алгоритм построения кубических кривых.

ранее .

Здесь мы попробуем использовать его, чтобы получить что-то похожее на цветок.

Единственная проблема заключается в том, как выбрать входные данные.

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

(Почти) Автоматическая генерация цвета

(в конце должно быть так:)

(Почти) Автоматическая генерация цвета

Чтобы кубические поверхности при натяжении на каркас выглядели как цветок, точки необходимо расположить симметрично, на окружностях, описанных вокруг центра цветка.

Для решения этой проблемы был применен вариант «поиска в ширину».

Присвоим веса всем точкам.

Сначала крайним точкам присваиваем веса 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 графикой #праздники #геометрия

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.