Точка в полигоне уже предполагает 2D-ограничение, а GPS-координаты 3D. Сразу же, это доставляет вам неприятности.
Простой обходной путь - сбросить высоту GPS, уменьшив ее до двухмерных координат поверхности. Ваша следующая проблема в том, что ваша 2D поверхность теперь является сферой. На сферической поверхности многоугольник делит поверхность на две части, но не существует очевидного «внутри». Есть левая сторона и правая сторона, которая следует из порядка точек в многоугольнике, но ни одна из сторон не является очевидной "внутри". Рассматривайте экватор как тривиальный многоугольник - какое полушарие находится «внутри» экватора?
Далее следует вопрос о ребрах многоугольника. По определению это прямые, то есть отрезки. Но линии на сферической поверхности странные - они обычно известны как большие круги . И любые два больших круга пересекаются ровно в двух точках. Это не так, как ведут себя декартовы линии. Хуже того, уравнения для большого круга не являются линейными при выражении в координатах GPS, потому что это пары долгота / широта.
Я могу представить, что в этот момент вы чувствуете себя немного смущенным. Возможно, вы захотите взглянуть на это с другой стороны - у нас похожая проблема с картами. Глобальные карты по определению являются попытками сгладить эту неплоскую поверхность. Поскольку это не совсем возможно, вы получите картографических проекций . Вы также можете проецировать угловые точки ваших многоугольников на такие проекции. А поскольку проекции плоские, вы можете нарисовать края на проекции. Теперь вы видите проблему визуально: в двух разных проекциях одинаковые многоугольники будут содержать разные части мира!
Итак, поскольку мы согласились с тем, что в реальном мире ребра многоугольников представляют собой большие круги, мы должны действительно рассмотреть проекцию, которая сохраняет большие круги прямыми. Существует ровно одно семейство проекций, обладающее этим свойством, и это Гномоническая проекция . Это семейство проекций, потому что вы можете выбрать любую точку в качестве центра.
Как это происходит, у нас здесь есть одна естественная точка: точка GPS, которую мы рассматриваем. Если вы поместите это в центр, нарисуйте гномическую проекцию вокруг него, спроецируйте края многоугольника, а затем нарисуйте многоугольник, и вы получите точное решение.
За исключением того, что настоящая земля не сферическая. Сожалею. В любом случае, насколько точным должен был быть тест?