2

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

如何检查我的坐标是否在选定区域?

面积和点坐标

4

2 回答 2

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).

对于任何界定该区域的线,您都会得到这样的条件。

于 2013-01-02T10:18:36.937 回答
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 -)

只需要比较方向的符号而不是大小。

于 2013-01-02T10:26:39.347 回答