【问题标题】:Move along a path of points with even speed沿点的路径以均匀的速度移动
【发布时间】:2012-04-08 12:49:27
【问题描述】:

我有一系列点,并且我有一个应该沿着这些点描述的路径移动的对象。

我知道我需要根据时间找到相应的段,但我不知道如何精确地做到这一点。

请注意,沿路径的速度应该是恒定的,因此您必须考虑路段的距离。

【问题讨论】:

    标签: algorithm path geometry pseudocode


    【解决方案1】:

    这样的?要查找特定时间的片段,请遍历所有片段,添加片段的长度,直到到达目标时间。

    public int findSegment(int [] segments, int time) {
       time_so_far = 0;
       int i = 0;
       while (time_so_far < time) {
         time_so_far += segments[i];
         i++;
       }
       return i-1;
    }
    

    如果分段长度是距离,并且您考虑的速度不是 1,那么您需要执行 time_so_far += segments[i] / speed

    【讨论】:

      【解决方案2】:

      在开始之前为每个点分配时间点:第一个点得到 time=0,每个下一个点得到 time[i+1]=time[i]+distance(i,i+1)/velocity。

      那么对于每个时刻你可以通过以下方式计算位置:

      1. 找到第一个点,时间[i]
      2. 查找准确位置:point[i]+(current_time-time[i])*(point[i+1]-point[i])

      【讨论】:

        猜你喜欢
        • 2021-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-06
        相关资源
        最近更新 更多