物理动画基础

Newton方程

  • 关于Newton方程,可参见Lagrange力学
  • 物理动画基于Newton方程
    • 建模(Modeling)
      • 定义力的模型F(r, v, t)
      • 由Newton方程,可以得到加速度a(t)
    • 初始条件(Initial Condition)
      • 定义初始位置r(0)、初始速度v(0)
    • 仿真(Simulation)
      • 求解任意时刻的位置r(t)、速度v(t)
  • 物理动画的基本循环
    • current state = initial state
    • t = 0
    • while t < t_{max} do
      • Determine F(t)
      • Determine a(t) by Newton’s equation
      • new state = integration of a(t) over timestep h
      • current state = new state
      • t = t + h
    • end

一个简单的例子

  • 自由落体的小球
    • v_0 = 0; x_0 = 100;
    • t = 0; n = 0;
    • while t < t_{max} do
      • a_n = -10;
      • if t is an output frame time then
        • output v_n, x_n;
      • end
      • v_{n + 1} = v_n + a_nh;
      • x_{n + 1} = x_n + v_nh;
      • n = n + 1; t = nh;
    • end
  • 如果想要改变物理动画的效果,那么只需改变力的模型,比如
    • 增加空气阻力

          \[ F_{air} = -dv. \]

      由Newton方程,

          \[ a = g - \frac dmv. \]

    • 增加风力

          \[ F_{wind} = dv_{wind}. \]

      由Newton方程,

          \[ a = g + \frac dm(v_{wind} - v). \]