【问题标题】:Algorithm for finding path to point寻找点路径的算法
【发布时间】:2010-12-23 11:56:00
【问题描述】:

我不确定我的措辞是否正确,但基本上我在 X,Y 点有一个对象,我想要一个算法可以将此点指向 X',Y' 但喜欢显示它的路线以便我可以制作动画它。我正在构建一个瓷砖游戏,当游戏开始时,我希望瓷砖能够神奇地将自己放入一个漂亮的 2d 数组中。所以我会生成一个随机坐标,然后告诉它在 50 帧内到达目标。 谢谢

【问题讨论】:

  • 既然我的路径是线性的,有没有比 A* 更简单的东西?谢谢
  • 你能告诉我们更多关于这条路的信息吗?你是说你只是想要一种画线的方法?

标签: c++ algorithm path find


【解决方案1】:

您需要使用 A-star 算法。见here

【讨论】:

    【解决方案2】:

    听起来你只是想要一个线性变换。喜欢

    Xt = (((X'-X)/T)*t)+X, Yt = (((Y'-Y)/T)*t)+Y
    

    或者在英语中,图块在时间 t 的坐标是沿其路径的 t/total_frames 长度。如果你不想避开障碍物,A* 就太过分了。

    【讨论】:

    • 在向量表示法中,y = a+t*b,其中 a、b 和 y 是向量,t 是标量。 a 是从原点到直线上任意点的向量,b 平行于直线。如果 a 和 c 是线上的两个点,b=c-a(您可以在 Todd 的公式中看到,尽管他涉及微分)。另一种形式是y = a*t+c*(1-t)
    • 您可以使用多项式获得更复杂的曲线:y(t) = a*t**2 + b*t + cy(t) = a*t**3 + b*t**2 + c*t+d,其中系数是向量。以分段方式组合多项式,您就有了样条曲线。使用两个(或更多)标量变量,您将获得曲面(包括 > 2 维曲面)。
    【解决方案3】:

    因此,您希望以 50 步从 (X, Y) 线性插值到 (X', Y')。 首先定义在每个方向上移动的总距离:

    dx = X' - X
    dy = Y' - Y
    

    假设 n = 50 帧, 在第 i 帧(因此 i 在 [0, n-1] 范围内)将图块放在坐标 (x, y) 处,定义为:

    x = X + dx * (i / (n-1))
    y = Y + dy * (i / (n-1))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      相关资源
      最近更新 更多