Линия (ы), равноотстоящая от двух выпуклых многоугольников в 2D - PullRequest
0 голосов
/ 15 ноября 2011

Учитывая два выпуклых многоугольника в 2D-пространстве, как бы вы пошли на построение отрезка (ей) линии, который в любой точке линий равноудален от ближайшей точки любого выпуклого многоугольника?

Я рассчитываю на реализацию диаграмм Вороного для выпуклых многоугольников вместо точек, но я не уверен, как даже начать вычисление линии только для двух многоугольников. Так что я решила сделать один шаг за раз и начать здесь.

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

Предположим, у нас есть многоугольник A слева и многоугольник B справа. Будет некоторая линия деления пополам, которая делит плоскость на точки слева и точки справа. Каждая точка на линии одинаково удалена от любого многоугольника. Каждая точка слева от линии ближе к многоугольнику A, чем к многоугольнику B. Каждая точка справа от линии ближе всего к многоугольнику B.

Вот изображение, сгенерированное сценарием Matlab, которое я написал, что грубой силой является приближение:

approximate bisecting line

Я полагаю, что проблема не так проста, как проверка пространства между двумя полигонами, поскольку линия должна проходить за пределы области, непосредственно между двумя фигурами. И в идеале я хотел бы найти решение, которое обобщает более двух форм, что, на мой взгляд, значительно усложняет проблему. Вот (очевидно, очень грубое) приближение того, как это может выглядеть:

more complicated example

Ответы [ 2 ]

1 голос
/ 15 ноября 2011

Правильно ли я вас понимаю, но предположим, что вам нужна линия, которая эффективно делит пополам пространство между двумя выпуклыми многоугольниками?Если это так, то ...

  1. найдите линию, соединяющую 2 многоугольника (P1 & P2)
    • , найдите каждый центр многоугольника (P1.centre & P2.centre), рассчитавсредние координаты X и Y.
    • найти вершину в каждом многоугольнике, ближайшую к центру другого (P1.vc & P2.vc)
  2. , учитывая, что P1.vc & P2.vc теперь определяют линию, соединяющую P1 & P2
    • , находят среднюю точку (mp) P1.vc & P2.vc

Биссектриса= перпендикуляр линии, соединяющей P1.vc & P2.vc, которая проходит через mp

1 голос
/ 15 ноября 2011

Ну, продолжая один шаг за раз, я бы посмотрел на самые близкие точки в самих многоугольниках. Допустим, a в A является ближайшей точкой к B и b в B является ближайшей точкой к A . Вы знаете, что средняя точка AB находится в нужных сегментах.

Каковы возможности для a ? Это может быть вершина A или точка в одной стороне. То же самое относится к b . Что происходит с "равноудаленными сегментами"? Как их построить в каждом конкретном случае?

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

...