【问题标题】:Algorithm to find best fitting point on a plane在平面上找到最佳拟合点的算法
【发布时间】:2020-06-30 12:17:49
【问题描述】:

我正在为我的游戏开发一个使用 A* 的寻路系统,我需要以这样一种方式定位节点,使它们与其他点的距离最小。

我想知道是否有一种算法可以让我在尽可能靠近指定位置的平面或直线(相邻点之间)上找到最佳拟合点,同时保持相邻点之间的最小距离。

基本上我需要一个算法,给定输入(伪代码)min distance = 2, original position = 1, 1 和一组现有的点会这样做:

在示例中,形状是三角形,点可以使用毕达哥拉斯定理计算,但我需要它适用于任何形状。

【问题讨论】:

  • 你为什么会选择这一点?即,您如何衡量最优性?给定点到所有三个邻居的总距离为 6.36。如果选择 (1, 1),则得到 5.89。 min distance 是什么意思?这是您希望允许的距初始点的最大距离吗?

标签: algorithm computational-geometry


【解决方案1】:

您的问题似乎令人不安。如果你画出“禁区”,它们会形成一个由磁盘联合组成的复杂几何体。

有两种情况:

  • 如果新点属于允许的区域,则完成;

  • 否则你需要找到最近的允许点。

通过计算所有距离,很容易看出一个点是否允许。但是找到最近的允许点似乎更具挑战性。 (顺便说一句,这一点可能很远。) 如果目标点位于圆内,则最近的候选位置可能是圆上的正交投影,或者是两个圆之间的交点。计算所有这些点并检查它们是否被允许。然后保留最近的候选人。

红色表示允许的候选人。身着黑衣的被禁候选人。

对于 N 个点,这是一个 O(N³) 过程。这可能可以通过计算几何技术减少 N 倍,但代价是高复杂度。

【讨论】:

    猜你喜欢
    • 2017-01-15
    • 2022-07-10
    • 2019-06-11
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    相关资源
    最近更新 更多