многоугольник определяется как последовательный список пар точек A, B, C .... A.
нет стороны A-B, B-C ... пересекает любую другую сторону
Определить поле Xmin, Xmax, Ymin, Ymax
случай 1, контрольная точка P лежит за пределами поля
В случае 2 контрольная точка P лежит внутри коробки:
Определите «диаметр» D коробки {[Xmin, Ymin] - [Xmax, Ymax]} (и добавьте немного больше, чтобы избежать возможной путаницы с D на стороне)
Определить градиенты М со всех сторон
Найдите градиент Mt, наиболее отличающийся от всех градиентов M
Тестовая линия проходит от P при градиенте Mt на расстояние D.
Установить количество пересечений на ноль
Для каждой из сторон A-B, тест B-C для пересечения P-D со стороной
от его начала до, но НЕ ВКЛЮЧАЯ его конца. Увеличить количество пересечений
если необходимо. Обратите внимание, что нулевое расстояние от P до пересечения указывает, что P находится на стороне
Нечетное число указывает, что P находится внутри многоугольника