检查所选区域中的坐标

时间:2013-01-02 10:01:00

标签: geometry coordinates area

我有4个区域坐标: x1,y1 ......等等还有一个位置 x0,y0

如何检查我所在区域的坐标?

Area and point coordinates

2 个答案:

答案 0 :(得分:2)

我将向您解释如何检查(x0,y0)位于(x1,y1)和(x2,y2)线的“下方”。基本上,您希望向量(x0-x1,y0-y1)指向(x2-x1,y2-y1)的“右侧”。这相当于说矩阵

x0-x1      y0-y1

x2-x1      y2-y1

有一个否定的决定因素。所以你的状况变成了

(x0-x1)(y2-y1) < (y0-y1)(x2-x1).

对于区域划分的任何行,你都会遇到这样的情况。

答案 1 :(得分:1)

A = {x1, y1}
B = {x2, y2}
C = {x3, x3}
D = {x4, x4}

首先,确保点形成多项式并且不是直线。这可以通过比较direction(AB) != direction(AC) != direction(AD)来完成,其中AB,AC,AD是方向向量。

要确保某个点P = {x0, y0}位于多边形ABCD内,只需检查sign(AC X AP) == sign(CD X CP) == sign(DB X DP) == sign(BA X BP)即可。

AC: Directional vector A -> C
AP: Directional vector A -> P
.
. so on!
.
X: Cross product
sign: sign of cross product (+ or -)

只需要比较方向的符号而不是幅度。