【问题标题】:Find the closest paths to each other?找到彼此最近的路径?
【发布时间】:2015-02-13 15:05:50
【问题描述】:

我有一组从同一点开始但朝不同方向移动的路径。我有另一条称为原始路径的路径,它也从同一点开始。所有这些路径都是二维的,即我有 (x,y) 值。我需要找出最接近原始路径的路径(在一组路径中)。我该怎么做?

【问题讨论】:

    标签: graphics path


    【解决方案1】:

    如果您知道路径的长度,则可以使用 A* 算法。您没有提及任何编程语言,也没有显示一些相关代码。这样我可以给你一个更详细的答案。

    编辑:

    我认为解决方案是像这样简化问题:

    如果你有一个 Square 类,它的方法在一个点在这个正方形内时返回 true(这很容易编程并且应该高效工作)。您在原始路径上放置了 3 个相当大的正方形。 然后你遍历可选路径的所有点并检查是否所有方块都被这条路径击中。如果他们是您将它们添加到另一个列表以进行下一次递归。如果遍历所有路径,请检查是否只有 1 条路径击中所有方块(是解决方案),您返回它。如果超过 1 条路径击中所有方格,则输入下一个递归,其中 2ce 方格和一半边长。如果没有路径命中所有正方形,则将下一次递归的边长增加 25%,然后将此递归的所有路径放入下一次。由于需要检查的路径越来越少,这应该具有相当不错的性能。

    【讨论】:

    • 编程语言-C++ 所有路径都保存在数组中,每条路径包含50个点。
    • 你看过 A* 吗?搜索节点只能是对带有索引的路径数组的引用。扩展节点意味着您将索引推进一。启发式将是与目标的距离+已经走过的距离。
    • 如果路径之间存在交叉点,您可以将路径划分为具有理想 A* 图形的路径块,当然扩展节点意味着在这种情况下您有多个节点
    • 问题详细描述可以看这里(附图)---ogre3d.org/forums/viewtopic.php?f=1&t=82770
    • 所以你需要这些东西来做人工智能算法吗?和电脑游戏一样?
    猜你喜欢
    • 1970-01-01
    • 2015-02-03
    • 2020-08-27
    • 1970-01-01
    • 2022-11-01
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 2013-01-10
    相关资源
    最近更新 更多