Вычислите ориентированную сумму углов между точкой p и каждой из вершин полигона. Если общий ориентированный угол составляет 360 градусов, точка внутри. Если общее количество 0, точка снаружи.
мне нравится этот метод лучше, потому что это более устойчиво и менее зависит от числовой точности.
Методы, которые вычисляют четность количества пересечений, ограничены, потому что можно 'поразить' вершину во время вычисления количества пересечений.
РЕДАКТИРОВАНИЕ: Между прочим, этот метод работает с вогнутыми и выпуклыми полигонами.
РЕДАКТИРОВАНИЕ: Я недавно нашел целое статья Wikipedia о теме.
ProgID обычно имеет вид Library.Class, вы можете просмотреть, какие классы предоставляет COM-библиотека, используя oleview.
В oleview вам нужна функция View TypeLib (три маленькие красные треугольники). Имя библиотеки будет вверху, и вы захотите использовать имя класса, как показано в разделе CoClasses