【发布时间】:2013-08-14 14:08:50
【问题描述】:
我在 stackoverflow 上看到了很多帖子,它们都在讨论这个话题。我从stackoverflow中获取了一个解决方案,但我找不到帖子。也就是说:如果两条线相交,那么叉积对于左侧和右侧会产生两个不同的结果。一正一负。否则两者具有相同的符号。到目前为止还好。 使用的公式是,其中 AB 是一条线,CD 是另一条线。
dotproductleft = (B.x-A.x)(C.y-B.y)-(B.y-A.y)(C.x-B.x)
dotproductright = (B.x-A.x)(D.y-B.y)-(B.y-A.y)(D.x-B.x)
如果我为以下给定的 GPS 坐标计算此值,我会得到一个交叉点,在不可能交叉的情况下。
A:x:15.4433917 y:47.0697272
B:x:15.4433661 y:47.0697722
C: x: 15.4434363 y: 47.0696776
D:x:15.442966 y:47.0700098
如果我在 Google Maps Engine 上绘制它,我可以看到这些线之间肯定没有交集。
dotproductleft 的结果:-7.372399999828474E-10 和 dotproductright 的结果:1.1921940000328E-8
它在其他示例中运行良好,但在这里我发现它无法正常运行。但我没有发现公式中有任何错误。
【问题讨论】:
-
The post you mention,供参考。
-
是吗?这似乎说明了一些不同的事情
-
不,这不是我要找的参考。但雅各布的回答带来了一个想法。
-
您知道,AB 和 CD 之间的点积是
(B.x-A.x)*(D.x-C.x) + (B.y-A.y)*(D.y-C.y)
标签: math geometry intersection line-intersection