Показать сообщение отдельно
Старый 22.12.2012, 06:11
vizgl вне форума Посмотреть профиль Отправить личное сообщение для vizgl Найти все сообщения от vizgl
  № 27  
Ответить с цитированием
vizgl
 
Аватар для vizgl

Регистрация: Jun 2012
Сообщений: 70
Может наложить сетку на фигуру? Выбираем только те ячейки, которые частично или полностью вмещают фигуру. Дальше, при генерации точек, выбираем случайную клетку, и в неё в случайное место вставляем точку.
Для получения равномерного распределения точек, можно сделать весовые коэффициенты для клеток, например коэффициент зависит от площади фигуры, которая помещена в клетку.

При морфинге в другую фигуру, делаем тоже самое и дальше для каждой старой точки, ищем ближайшую новую, эта пара точек и будет отрезком для анимации движения.
Ближайшие точки, можно находить либо полным перебором, либо используя всякие spatial grid.

Если важна визуальная часть морфинга, то можно учитывать вектор направления движения на предыдущих шагах, при выборе точки "близнеца". В таком случае, подходящими будут только те точки, которые попадают в конус, который определяет вектор движения и какой-нибудь небольшой угол, например в 90 градусов.

Если фигуры вообще разные, то можно и не парится на счет поиска "близнеца", а просто взять случайную точку и двигать старую точку в новую.


Дополнение:
А как такой вариант? Просканить битмапу и создать массив координат заполненных пикселей, при генерации распределения, выбираем случайную ячейку в массиве и вставляем точку в полученные координаты. По сути, это частный случай варианта про наложение сетки.
__________________
Блог: http://devizgl.blogspot.com/


Последний раз редактировалось vizgl; 22.12.2012 в 06:27.