2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Алгоритм генерации непересекающихся многоугольников
Сообщение30.05.2010, 14:52 
Для создания тестов к другой геометрической задаче мне нужен алгоритм гереации огромного числа непересекающихся простых многоугольников (simple polygons) на ограниченной плоскости (экране). Например, чтобы по входным параметрам N, K генерировалось N многоугольников с K вершинами каждый, и чтобы они не накладывались один на другой. И желательно делать не только выпуклые многоугольники...
Никогда не встречал подобных алгоритмов и не знаю как подобраться к задаче. Делать перебором по типу "генерируем что-то, а потом проверяем не пересекает ли оно всё остальное" как-то не хочется.

 
 
 
 Re: Алгоритм генерации непересекающихся многоугольников
Сообщение30.05.2010, 15:56 
lonelyass в сообщении #325532 писал(а):
Делать перебором по типу "генерируем что-то, а потом проверяем не пересекает ли оно всё остальное" как-то не хочется.
Я думаю, ничего лучше нет. Надо только соптимизировать проверку пересечений.

 
 
 
 Re: Алгоритм генерации непересекающихся многоугольников
Сообщение01.06.2010, 02:52 
Можно случайно поделить рабочую область на части, например рекурсивно деля её пополам или же строя диаграмму Вороного для случайно разбросанных точек...

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

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

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group