2d物理引擎学习 - 线性运动

发布时间 2023-12-23 00:33:55作者: yanghui01

线性运动相关公式(Linear Motion)

加速度(acceleration): a = (v1-v0) / t,单位:m/s2,方向:力作用方向或速度变化方向

瞬时速度(velocity):v1 = v0 + a * t,单位:m/s,方向:力作用方向或运动方向

位移:x = v0 * t + 1/2 * a * t2,单位:m,标量

平均速度:v = x / t = (v0+v1) / 2

推导公式:v12 - v02 = 2 * a * x

 

冲量(Impulse):I = F * t,其中F为恒力,单位:N*s或kg*m/s,方向:力作用方向

动量:p = m * v,单位:kg*m/s或N*s,方向:与速度方向相同

动量定理:冲量 = 动量的变化

    I = Δp = p1 - p0 = m * Δv = m * (v1 - v0)

 

牛顿第二定律:有力作用就会产生加速度

    F = m * a,单位:N/m或kg*m/s2,方向:力作用方向

动量(energy):E = 1/2 * m * v2,单位:焦耳(J),标量

动能定理:所有外力对物体所做的功(work)等于动能的变化

    F * x = W = ΔE = 1/2 * m * v12 - 1/2 * m * v02

动能守恒定律:能量既不会凭空产生,也不会凭空消失,它只会从一种形式转化为另一种形式,或者从一个物体转移到其它物体,而能量的总量保持不变。

    能的转化可以用做功多少来计算。

 

 

碰撞的3种类型

1) 弹性碰撞:无动能损失,碰撞后两物体会分离

2) 非弹性碰撞:损失一部分动能(转化为热能,声能等),碰撞后两物体分离

3) 完全非弹性碰撞:动能损失最大(转化为热能,声能等),碰撞后两物体结合在一起

 

 

两物体碰撞后的速度计算

质量m1,速度v1的物体1;与质量m2,速度v2的物体2发生碰撞;两物体均向右运动,且v1>v2

1) 弹性碰撞,碰撞过程中能量不损失

a) 动量守恒方程:m1 * v1 + m2 * v2 = m1 * v1' + m2 * v2'

b) 动能守恒方程:1/2 * m * v12 + 1/2 * m * v22 = 1/2 * m * v1'2 + 1/2 * m * v2'2

c) 推论:碰撞前后的相对运动速度不变,v1 - v2 = v2' - v1'

由a和b我们可以解出碰撞后的速度v1'和v2'(推导过程可以参考:弹性碰撞后速度方向_碰撞模型中的速度关系推导-CSDN博客

 

2) 非弹性碰撞,碰撞过程会损失能量

a) 恢复系数:e = (v2' - v1') / (v1 - v2),它反映的是碰撞物体变形的恢复能力,是一个控制碰撞弹性程度的量。

    对于弹性碰撞,因为碰撞前后相对运动速度不变,所以e = 1;对于完全非弹性碰撞e=0;对于非弹性碰撞,值在0~1之间。

b) 碰撞后的速度:

c) 推导,我是参考的这边:

手把手做一个2D物理引擎吧! - Part 1 (codetiger.me)

碰撞求解(二):使用冲量 · Issue #35 · phenomLi/Blog · GitHub

 

碰撞后的速度=碰撞前的速度+变化的速度,即:v' = v + Δv

    物体1碰撞后的速度:v1' = v1 + Δv1,根据动量定理可知:Δv = Δp / m,所以 v'1 = v1 +  Δp / m1

    物体2的碰撞速度:v2' = v2 - Δv2 = v2 - Δp / m2,受到的是相反的冲量所以是减

 

 

参考

弹性碰撞后速度方向_碰撞模型中的速度关系推导-CSDN博客*

2D 游戏物理引擎 - 碰撞约束 - 知乎 (zhihu.com)

 

动量公式完全弹性碰撞-动能和动量之间的关系区别 (ychedu.com)

高中物理专题——动量守恒定律考点归纳 - 知乎 (zhihu.com)