Geometry 检查所选区域中的坐标是否正确

Geometry 检查所选区域中的坐标是否正确,geometry,coordinates,area,Geometry,Coordinates,Area,我有4个面积坐标:x1,y1。。。等,并有一个以上的位置x0,y0 如何检查我的坐标是否在所选区域 我将向您解释如何检查(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). (x0-x1)(y2

我有4个面积坐标:x1,y1。。。等,并有一个以上的位置x0,y0

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


我将向您解释如何检查(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).
(x0-x1)(y2-y1)<(y0-y1)(x2-x1)。
对于任何边界区域的线,都会得到这样的条件。

A = {x1, y1}
B = {x2, y2}
C = {x3, x3}
D = {x4, x4}
首先,确保点形成多项式且不在直线上。这可以通过比较
方向(AB)!=方向(AC)!=方向(AD)
其中AB、AC、AD是方向向量

为确保某点
p={x0,y0}
位于多边形
ABCD
内,检查
符号(AC X AP)=符号(CD X CP)=符号(DB X DP)=符号(BA X BP)


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

的可能重复项没有考虑单独检查每一行。有趣的解决方案。非常感谢。
AC: Directional vector A -> C
AP: Directional vector A -> P
.
. so on!
.
X: Cross product
sign: sign of cross product (+ or -)