如果给定矩形的所有 4 个角的 x/y 坐标,然后是另一个 x/y,则如果左上角为 0,0,则很容易确定该点是否在矩形内。
但是,如果坐标是纬度/经度,它们可能是负数(请参阅附件)。有没有可以在这种情况下工作的公式?
如果给定矩形的所有 4 个角的 x/y 坐标,然后是另一个 x/y,则如果左上角为 0,0,则很容易确定该点是否在矩形内。
但是,如果坐标是纬度/经度,它们可能是负数(请参阅附件)。有没有可以在这种情况下工作的公式?
在数学上,您可以使用不等式来确定这一点。
编辑:在做这个例子时,我注意到你把坐标用逆格式(y,x)而不是(x,y)。在我的示例中,我使用 (x,y) 格式,所以我只是颠倒了顺序以便于解释。
假设 A = (-130,10) B = (-100,20) C = (-125,-5) D = (-100,5)
你从你的矩形边缘建立一个不等式:
if( (x,y) < AB && (x,y) > AC && (x,y) > CD && (x,y) < BD) then
(x,y) belongs to rectangle ABCD
end if
如果所有不等式都为真,那么您的点属于矩形
具体例子:
AB 表示段,但可以用公式表示:y = ax + b
确定 a (公式的斜率,而不是点 A)你得到的差异
(Ay - By) / (Ax - Bx)
Ay 表示 A 点的 Y 分量,在这种情况下为 10
这个公式给了我们
(10 - 20) / (-130 - -100) = -10 / -30 = 1/3
现在我们有
y = x/3 + b
我们现在确定 b。我们现在 A 点和 B 点都属于该公式。所以我们用它们中的任何一个来替换公式中的 x,y 值。让我们以 B 点为例:
20 = -100/3 + b
我们隔离 b 给我们:
b = -100 / 60 = -10/6
我们现在有
y = x/3 - (6/10)
因此,如果我们想确定点 Z (10, 15) 是否属于您的矩形,您首先检查是否
y > x/3 - (10/6)
然后在 Z(10, 15) 的情况下:
15 > 10/3 - (10/6)
15 > 10/6
15 > 1.66 is true
因此,该边缘满足条件。您需要对每个边使用相同的逻辑。
请注意,要确定是使用 > 还是 <,您需要判断在某个 x 值处,我们的点是否具有比矩形边缘更大或更小的 y 值。
如果您希望点严格位于矩形内,则可以使用 < 和 >;<= 和 >= 如果矩形边缘上的点也属于矩形。你决定。
我希望我的解释是清楚的。如果某些点不清楚,请随时询问更多。