|
Выход за координаты полигона Google Map. Как определить? |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 17)
|
Oct 9 2011, 20:35
|
Профессионал
    
Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256

|
Цитата А любители - GPS c GSM или WiFi. Исходные данные: территория города и координаты объекта (широта, долгота) Задача: определить, находится ли объект на территории города или нет? Спасибо.
|
|
|
|
|
Oct 10 2011, 07:04
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(Alt.F4 @ Oct 10 2011, 10:46)  Расскажу ситуацию более конкретно. На сайте есть гугл-карта, в БД лежат координаты объекта. Юзер задает полигон, а я должен проверить, находится ли объект из БД на это территории или нет. Занумеруем вершины полигона. Проводим радиус-вектор от объекта до 1-й вершины. Поворачиваем до второй .... Если после прихода в первую угол поворота будет(-)2pi - объект внутри. Если 0 - снаружи. Цитата(SSerge @ Oct 10 2011, 11:00)  Если объект внутри, получите 360 градусов (2пи), если снаружи, то ноль. Почти слово в слово. Только про минус забыли написать.
|
|
|
|
|
Oct 10 2011, 09:11
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(Палыч @ Oct 10 2011, 13:05)  По геометрии в школе двойка была? Строите два вектора: от точки положения объекта до двух соседних точек контура "геозоны". Косинус угла между векторами: отношение скалярного произведения векторов к произведению их длинн. Лучше векторное произведение - знак автоматически будет получаться. Цитата(Alt.F4 @ Oct 10 2011, 12:21)  SSerge, Tanya, а как это будет выглядеть в формулах? Спасибо. А куда приходить за деньгами? Спасибо.
|
|
|
|
|
Oct 10 2011, 10:31
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(Tanya @ Oct 10 2011, 13:39)  В том, что ориентированный угол так нельзя получить. Можно. Знак векторного произведения дает ориентацию угла. Чудесно... Вы получили синус угла = плюс 1/2. Чему равен угол? 30 градусов? 150? Поскольку выше были раскрыты все "тайны" геометрии, то можно привести и результирующую формулу: угол между направлениями на точку 2 и 1 из положения объекта= atan2( R2x * R1y - R2y * R1x , R1x * R2x + R1y * R2y) где Rix - проекция вектора "объект - точка контура i" на ось Х (т.е. координата Х точки i минус координата Х объекта). Riy - проекция вектора "объект - точка контура i" на ось Y (вычисляется аналогично). To Alt.F4 C Вас объяснение: куда делись произведения длин векторов? ...и пиво! P.S. Кстати, вычисления не будут иметь смысл, если положение объекта вточности совпадает с одной из точек контура "геозоны". На это - нужна дополнительная проверка!
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|