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

计算一段时间后加速体的位置[关闭]

  •  20
  • Iain  · 技术社区  · 18 年前

    如何计算加速体(如汽车)在特定时间(如1秒)后的位置?

    对于一个不加速的运动物体,它是一个线性关系,所以我假设对于一个加速物体,它在某处包含一个正方形。

    有什么想法吗?

    5 回复  |  直到 17 年前
        1
  •  34
  •   Chris Johnson Thomas M. DuBuisson    18 年前

    方程为:s=ut+(1/2)a t^2

    其中s为位置,u为t=0时的速度,t为时间,a为恒定加速度。

    通常在游戏编程的情况下,人们会使用稍微不同的公式:在每一帧,速度和位置的变量不是从分析上集成的,而是从数值上集成的:

    s = s + u * dt;
    u = u + a * dt;
    

    其中dt是帧的长度(使用计时器测量:1/60秒左右)。这种方法的优点是加速度可以随时间变化。

    一些人注意到,数值积分的欧拉方法(如图所示)虽然是最简单的证明方法,但精度相当低。看见 Velocity Verlet (通常用于游戏中),以及 4th order Runge Kutta

        2
  •  7
  •   freespace    18 年前

    这取决于加速度是否恒定。如果是的话,那很简单

    s = ut+1/2 at^2
    

    最简单也是最不准确的是 Euler's method

    v[n] = v[n-1] * t * a[t]
    

    n 是索引,, t 是时间步长的大小。该职位也同样更新。这只适用于准确度不太重要的情况。Euler方法的一个特殊版本将产生弹丸运动的精确解(见wiki),因此,尽管该方法很粗糙,但它可以完美地用于某些情况。

    Velocity Verlet

        3
  •  1
  •   asterite    18 年前

    你可以用谷歌搜索。我发现: http://www.ugrad.math.ubc.ca/coursedoc/math101/notes/applications/velocity.html

    但如果你不想阅读,那就是:

    p(t)=x(0)+v(0)*t+(1/2) A. t^2

    哪里

    • x(0)=时间零点的位置
    • v(0)=时间零点的速度(如果没有速度,可以忽略此项)
    • a=加速度
    • t=您当前的itme
        4
  •  1
  •   Mihai Limbășan    18 年前

    假设你处理的是恒定加速度,公式是:

    距离=(初始速度*时间)+(加速度*时间*时间)/2

    距离 旅行的距离是多少

    是初始速度(如果物体处于初始静止状态,则为零,因此在这种情况下可以去掉该项)

    时间 时间到了吗

    是(恒定)加速度

    一本关于这个主题的好书是 Physics for Game Developers .

        5
  •  1
  •   jholl    18 年前

    x(t) = (1/2 * a * t^2) + (v0 * t)