Как определить, перекрывается ли 2D-сегмент (чистое перекрытие, не примыкает и не касается) 2D-кольцом (выпуклым)?
Мои первые подходы заключались в использовании:
не пересекается Но это не сработало, потому что касание/примыкание не считаются непересекающимися
перекрывается Но это не сработало, потому что касание/примыкание считается перекрытием
Я попробовал несколько других комбинаций (используя внутри), и я не могу найти простой способ. Под простым я подразумеваю: использовать пару алгоритмов повышающей геометрии без реализации алгоритма вычислительной геометрии.
Я считаю, что решение находится где-то в стратегиях...
Я думаю, что могу переопределить проблему: Как мне найти примыкающие кольца (многоугольники)? (примечание: я могу создать вырожденное кольцо из ребра).
Вот фигурка того, что я хочу. Красный сегмент должен возвращать OVERLAP, синий NO OVERLAP.
Система: Boost_1.54, CentOS-5, gcc-4.7.2
touches()
оба кольца должны иметь свои точки с одинаковым порядком, то есть по часовой стрелке или против часовой стрелки, но проблема в том, что я хочу найти, касается ли 2d-сегмент 2d-кольца аtouches()
не работает для сегмента-кольца. Я пытался создать вырожденное кольцо с краевыми точками: (край.первый, край.секундный, край.первый), но это не всегда работает.overlaps()
не подходит, потому что я хочу только прикосновений. - person Dimitris Dakopoulos   schedule 14.04.2014