2015-12-20 4 views
-3

Я пытаюсь реализовать алгоритм графа видимости из книги вычислительной геометрии Де Берга и др. Вы можете найти алгоритм здесь: http://cs.smith.edu/~streinu/Teaching/Courses/274/Spring98/Projects/Philip/fp/algVisibility.htmКак проверить, пересекает ли сегмент линии простой многоугольник

У меня возникли проблемы с первой линией ВИДИМОМ алгоритма:

if pwi intersects the interior of the obstacle of which wi is a vertex, locally at wi then return false 

В книге говорится, что она должна принять O (Г п) (где п все точки в плоскости), но это не объясняет, как сделать проверку. Найденные алгоритмы принимают линейное время по отношению к числу вершин многоугольника.

Любая помощь приветствуется.

+1

Итак, в чем вопрос? – Gemasoft

+1

Он/она хочет знать, как это сделать в O (log n). Но я думаю, что это невозможно. – cantelope

+0

Кто-то, не потрудился с заполнением простого имени в профиль, не заслуживает того, чтобы беспокоить других, чтобы избавиться от времени ... – ankhzet

ответ

0

Я считаю, что шаг, с которым вы беспокоитесь занимает не более O (журнал п) время, , потому что вы можете использовать бинарный поиск на препятствие, для которого ж я является вершиной.

+0

Вы имеете в виду делать бинарный поиск в массиве w? Смотря для чего? Я этого не вижу. – user5701449

+0

Думаю, я понял. Предполагая, что _p_ - это вершина многоугольника, а _q_ и _r_ - их смежные вершины в многоугольнике, то для всех вершин _v_ между _q_ и _r_ в массиве _w_ сегмент _pv_ будет находиться внутри многоугольника. И все остальные вершины, не видимые в многоугольнике, будут иметь сегмент линии, блокирующий их. Это верно? – user5701449

+0

Я только что протестировал его и, похоже, сработал. Благодаря! Любите свою работу кстати. – user5701449

Смежные вопросы