【问题标题】:Efficient, correct and optimized algorithm to find intersection between two lines高效、正确和优化的算法来找到两条线之间的交点
【发布时间】:2009-10-24 04:41:35
【问题描述】:

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

给你四个点 A、B、C、D。 求 AB 和 CD 的交点。 尽可能优化算法。

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

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

【问题讨论】:

    标签: algorithm


    【解决方案1】:

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

    也就是说,这里的 a discussion 应该会对您有所帮助。

    【讨论】:

    • 所有数学运算,无论多么简单,都是算法。
    • @BipedalShark:重点是,这是一个计算论坛,而不是数学论坛。例如,谈论这种“算法”的复杂性是没有意义的。参见例如本次元讨论:meta.stackexchange.com/questions/26339/…
    • 链接讨论中的第一个子标题显示了我所知道的从四个点到这两条线的交点的最有效方法。关于该问题的大多数其他数学讨论都假设您从斜截式 (y = mx + b) 的线开始,但在实际应用中,我发现您更有可能从点开始。
    【解决方案2】:

    对于这类问题,我更喜欢 Bourke 先生的网站。这是他关于 line intersectoin 的文章:

    Intersection point of two lines

    鉴于这是多么微不足道,优化起来相当困难。

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

    【讨论】:

      【解决方案3】:

      没那么简单。

      据我所知,Pascal 示例 (http://actionsnippet.com/?p=956) 不适用于共线点。

      我找不到正确实现的算法,所以我必须自己编写。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多