代码之家  ›  专栏  ›  技术社区  ›  HankMoody

用几何级数移动物体

  •  0
  • HankMoody  · 技术社区  · 6 年前

    object.x += (target - object.x) * 0.1;  // Distance reduced by 10% each frame
    

    我以60帧每秒的速度执行这个。如何计算到达目标所需的时间(或帧数)(比给定半径更近)?

    我想它叫 geometric progression exponential decay 但却找不到如何运用这些思想和公式来解决我的问题。

    1 回复  |  直到 6 年前
        1
  •  1
  •   meowgoesthedog    6 年前

    评论给出了线索:

    // Distance reduced by 10% each frame
    

    这可以用来构造 最终位置公式:

    final = abs(initial - target) * pow(1 - 0.1, frames);
    

    要反转表达式,请使用 对数 :

    frames = log(min_dist / abs(initial - target)) / log(1 - 0.1);
    

    log 它接受一个基地;如果您的语言不支持,则上述选项是等效的。)


    编辑:要计算乘数:

    mult = 1 - pow(min_dist / abs(initial - target)), 1 / frames);