Предположим, что на плоскости имеется много выпуклых многоугольников, возможно, отображение. Эти многоугольники могут сталкиваться друг с другом и разделять край, но не могут перекрываться.Как определить, пересекаются ли два выпуклых многоугольника?
Чтобы проверить, если два полигона P и Q перекрытия, сначала можно протестировать каждое ребро в P, чтобы увидеть, если она пересекается с любым из ребер в Q. Если пересечение найдено, я заявляю, что P и Q пересекаются. Если ни одна из них не пересекается, я должен проверить на случай, что P полностью содержится в Q и наоборот. Далее, есть случай, когда P == Q. Наконец, есть случай, который разделяет несколько ребер, но не все из них. (Эти последние два случая, вероятно, можно рассматривать как один и тот же общий случай, но это может быть неважно.)
У меня есть алгоритм, который определяет, где пересекаются два отрезка. Если два сегмента являются колинейными, они не считаются пересекающимися для моих целей.
Правильно ли я перечислил случаи? Любые предложения по тестированию на эти случаи?
Обратите внимание, что я не ищу, чтобы найти новый выпуклый многоугольник, являющийся пересечением, я просто хочу знать, существует ли пересечение. Есть много хорошо документированных алгоритмов для поиска пересечения, но мне не нужно проходить все усилия.
Остерегайтесь проблем точности с плавающей запятой при решении вопроса о колинеарности не вертикальных сегментов горизонтальной линии, если вы решите пойти этим путем. –