argus98 (23.04.2017 17:32 - 17:54, просмотров: 451) ответил Гудвин на Поинтересуюсь: Кто как решает задачу определения вхождения точки с определенными координатами в полигон произвольной формы на карте? Например, имеется *.kml файл с несколькими десятками полигонов. Есть задача определить принадлежность точки
Как уже заметили ниже, критерий нахождения точки внутри полигона = поворот угла радиус-вектора на 2pi Приращение угла от точки (x1,y1) до (x2,y2) = arctg(y2/x2) - arctg(y1/x1)
Примечания:
а) Чтобы избежать вычисления arctg имеет смысл использовать тождество:
arctg(y2/x2) - arctg(y1/x1) = arctg((y2*x1-y1*x2)/(x2*x1+y2*y1)) = arctg(X/Y), т.е. числитель и знаменатель X/Y вычислять раздельно
б) т.к. главное значение arctg находится в пределах -pi/2..+pi/2, то следует отслеживать знаки числителя (X) и знаменателя (Y), которые однозначно определяют, в каком квадранте находится текущий угол
PS Ну и для верности:
если точка находится ВНЕ полигона, то поворот будет = 0.
0 и 2pi различить легко, поэтому требования к точности вычислений не шибко высокие. Ну разве что только полигон будет слишком изощрённой и/или кол-во точек границы полигона слишком большое.