高效,正确和优化的算法,可以找到两条线之间的交叉点

时间:2009-10-23 17:17:32

标签: algorithm

找到两条线之间交点的最有效算法是什么?

你有四个点A,B,C,D。 找到AB和CD之间的交叉点。 尽可能优化算法。

这有两种方法,一种是使用点积,另一种是使用斜率截距形式的线。哪一个更好。

这可能听起来是一个重复的问题,但我想问的是哪种方法更好,效率更高,复杂度更高。

3 个答案:

答案 0 :(得分:7)

这不需要任何算法,只需要solution of two intersecting lines。这是一个基本的数学问题,而不是计算问题(它只是代数操作)。

那就是说,a discussion你应该找到帮助。

答案 1 :(得分:2)

我更喜欢Bourke先生的网站提出这些类型的问题。这是他关于相交行的文章:

Intersection point of two lines

鉴于这是多么微不足道,优化非常困难。

我想你能做的最好就是确保所有内容都在CPU缓存中,这样你就可以全速运行这些数学运算。您可能想要预先计算一些差异(P2-P1),但在这个世界中很难说内存查找是否比仅仅执行减法更快。 CPU可以在1 op中进行减法和乘法,而内存查找,如果它们错过了缓存,则可能需要几个数量级的时间。

答案 2 :(得分:0)

这不是那么微不足道。

到目前为止,我记得Pascal示例(http://actionsnippet.com/?p=956)不适用于共线点。

我无法找到正确实现的算法,因此我必须自己编写。