给定所有纬度/经度坐标,如何确定点是否在矩形内?

时间:2012-12-07 23:33:14

标签: gps latitude-longitude rectangles

如果给定矩形的所有4个角的x / y坐标,然后是另一个x / y,如果左上角为0,0,则很容易确定该点是否在矩形内。

但是如果坐标是纬度/经度,它们可以是负数(请参阅附件)。有没有一个公式可以在这种情况下工作?

enter image description here

1 个答案:

答案 0 :(得分:2)

Mathematicaly,您可以使用不等式来确定。

编辑:在做这个例子时,我注意到你把坐标放在反格式(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)

因此,如果我们想确定Point Z(10,15)是否属于您的视角,请先检查是否

y > x/3 - (10/6)

然后在Z(10,15)的情况下:

15 > 10/3 - (10/6)

15 > 10/6

15 > 1.66 is true

因此这个边缘符合条件。每个边缘都需要相同的逻辑。

请注意,确定您是否使用&gt;或者&lt;,您需要判断在某个x值处,我们的y值比y矩形边缘大y或更小。

你可以使用&lt;和&gt;如果你想要一个点严格在矩形内; &lt; =和&gt; =如果矩形边缘上的点也属于矩形。你决定了。

我希望我的解释清楚。如果有些问题不清楚,请随时询问更多。