Левая или правая сторона полилинии - PullRequest
2 голосов
/ 27 июня 2011

Это довольно сложно, так как заголовок подсказывает, что мне нужно определить, какая сторона полилинии является точкой.

Я делал это в прошлом, используя углы и немного предварительной обработки, но, к сожалению, нужно довольно быстрое решение.

Кто-нибудь с умными идеями?

EDIT:

Цель состоит в том, чтобы вычислить, с какой стороны пути урагана проходит ряд локаций.

1 Ответ

0 голосов
/ 05 февраля 2012

Если у вас есть таблица со структурой следующей формы

| Point_Data |
+------------+
| id   | int |
| lon  | int |
| lat  | int |

Вы можете задать хранимую процедуру следующим образом:

create procedure getPoints (@lat0 int, @lon0 int, @lat1 int, @lon1 int)
as
    select id, lon, lat
           isLeft = (lat1 - lat0) * (lon - lon0)
                  - (lat - lat0) * (lon1 - lon0)
      from Point_Data
GO

Где isLeft будет> 0, если он слева, 0, если в строке, или <0, если справа от строки. Это взято из <a href="http://softsurfer.com/Archive/algorithm_0101/algorithm_0101.htm" rel="nofollow"> области 2D и 3D треугольников и многоугольников .

...