Рисование изменяемых (не пересекающихся) полигонов
Я искал везде, но я не мог найти ответа. я
нужно рисовать многомерные полигоны с взаимодействием с мышью, но я
не нужны нерегулярные, перекрывающиеся или пересекающиеся многоугольники в
конец.
Вот простой пример рисования многоразовых полигонов
http://www.wolfpil.de/polygon.html
Вы можете легко создавать и изменять размер многоугольников, что отлично. Но мне нужно
дополнительная функциональность для обнаружения пересечений и НЕ допускающая странных
выглядящие фигуры/полигоны.
Вы можете увидеть проблему в этом видео:
http://www.youtube.com/watch?v=zou2jcGM8zw
Единственное решение для этой проблемы, которое я нашел в http://www.wikimapia.org. Они добавили функции для решения проблемы.
Вы можете увидеть это в этом видео: http://www.youtube.com/watch?v=K7-K0k2D-2A
Я потратил 3 дня на то, чтобы добиться чего-то подобного. я ушел
через javascript-код wikimapia, но для меня это слишком сложно
понимать.
В целом, он не должен выглядеть таким же фантастическим, как и викимапия. я просто
нужны изменяемые размеры многоугольников, которые НЕ пересекаются при изменении размера или
добавляя к нему новые баллы. Можете ли вы дать мне какие-либо рекомендации о том, как
достичь этого?
Спасибо заранее.
Ответы
Ответ 1
В зависимости от количества точек, которые вы допускаете, достаточно простого, простого алгоритма пересечения линий O(N^2)
. Алгоритмически это не лучшее решение, но для его запуска наиболее доступным для новичка в вычислительной геометрии.
Для стартера см. Статья Википедии о пересечении сегментов линии. Одна из его ссылок имеет легко понять объяснение того, как вычислить точку пересечения двух сегментов линии.
Удачи!
Ответ 2
Хотя это не полный ответ, обратите внимание, что приведенный вами пример, похоже, использует элементы управления Geometry из библиотеки утилит GMaps, которая является проектом с открытым исходным кодом, размещенным в Google Code.
Вы можете проверить полный исходный код в браузере Google Code.