zl程序教程

您现在的位置是:首页 >  后端

当前栏目

3D数学-动力学

3D 数学 动力学
2023-09-11 14:22:30 时间

3D数学-动力学

旋转运动学

二维旋转动力学

首先我们考虑最简单的情况:

我们将F施加在圆盘(忽略质量)上的一个点(质量为m)上

在这里插入图片描述

图中:F为我们施加的力,O是枢轴原点。

通过基本的运算,我们可以得到

F'= F*sinθ

那么切向加速度

a = F'/ m

切向加速度是线性速度的加速度,我们通过除以半径获得角加速度

α = a / r

现在,我们换一种方式,那就是通过杠杆臂的方式去施加力

在这里插入图片描述

为了能够计算出m点的角加速度,我们需要引入一个概念:扭矩

他的理解类似于力矩,公式如下

τ = Flsinθ,只有垂直部分的力才有效

那么通过扭矩,我们可以再次计算出m点的力

F'r = τ = Flsinθ
F' = Flsinθ / r
a = F'/ m
α = a / r = F'/ mr = Flsinθ / mr^2

现在,我们通过角加速度去表示扭矩

τ = α mr^2
τ = Jα

现在出现了一个新的表达式:mr^2,这个表达式我们用J符号来表示,称之为惯性矩或者转动惯量,注意惯性矩必须相对于某个枢轴进行测量,我们这里就是圆盘中心

他的物理意义为:抵抗角加速度的能力,当惯性矩越大,那么相同的扭矩能产生的角加速度就会越小

对于刚体的惯性矩的计算如下

在这里插入图片描述

为了解释这个公式,我们举一个例子

在这里插入图片描述

我们通过计算可得:

J1=28,J2=54,J3=36,J4=20

显然,对于质量相同的圆盘,质量分布到导致了他的转动惯量不同。

现在,我们将注意力转向动量,相对于线性动量–它的模拟,角动量也有类似的解读

角动量描述了停止物体旋转的难度。

在线性动量中,公式是:P = mv

那么角动量,公式是这样的:

角动量等于角速度乘以惯性矩

L = τt,角动量等于扭矩乘以时间
L = Jw,w为角速度,角动量也等于惯性矩乘以角速度

其实,已经很好理解了,线性动量可以理解为力的时间累积;而角动量理解为扭矩的时间累积

线性动量与角动量的关系,θ的作用是隔离切向运动

L = Prsinθ

三维旋转动力学

通过将二维原理扩展到三维

首先我们考虑扭矩,三维中扭矩成为了矢量,实际上,扭矩趋近于旋转轴(和指数映射类似)

如果无法理解为什么是叉乘的话,我建议你去先去学习一下四元数以及指数映射

τ = lxF

同样的,角动量也称为矢量

L = rxP

你可能会问J去哪了?它需要通过推导得出,实际上它成为了一个矩阵,现在它被称为惯性张量

在这里插入图片描述

在这里插入图片描述

接下来,我们将这个公式扩展到三维中,角加速度称为矢量,看上去没什么变化

τ = αJ
角动量:
τt = αtJ
L = wJ

它类似于F = am

此外,我们还需要介绍一个东西:平移轴定理

在这里插入图片描述

碰撞响应

这里我们只考虑单点碰撞,要求解两个物体之间的碰撞,需要计算冲击力

这里我们需要引入牛顿碰撞定律中的一个参数:e,恢复系数。

e=0时,则沿着法线的碰撞后速度为0,并且是完全非弹性碰撞;

e=1时,则沿着法线的碰撞后速度反向,并且是完全弹性碰撞;

考虑下面这个例子

在这里插入图片描述

m1m2发生碰撞,我们将响应冲击力大小表示为k,第一个物体m1接收的冲击力为-kn;而第二个物体m2则是相反的冲击力kn

动量表示为:

P1'= P1 - kn
P2'= P2 + kn
v1'= v1 - kn/m1
v2'= v2 + kn/m2
vrel' = v1' - v2',相对速度

现在,我们可以通过公式来计算冲击力k

vrel' n = -e vrel n 

最终计算可得

k = ( (e+1)vrel n ) / ( 1/m1 + 1/m2 ) n n

注意n为单位矢量

有了冲击力我们就可以准确的计算出碰撞后的速度了

当然这其实还不完整,因为还没有加入旋转,现在,我们考虑旋转效应

基本策略

  • 计算接触点的相对速度
  • 将相对速度投影到表面法线上,防止穿透必须抵消的速度
  • 计算冲击力k
  • 施加冲击力与两个物体上

之前,我们是从这个公式开始计算的,现在也是一样

vrel' n = -e vrel n 

不过,我们需要考虑旋转效应,并推导出新的表达式

我们使用ri表示物体i相对于其质心的撞击点的位置,wi表示物体的角速度,mi表示质量,Ji表示惯性张量;

对于线性速度而言,需要引入新的符号来区分接触点的线性速度ui以及质心的线性速度vi

使用了上述这些后,我们来计算每个物体的点速度,方法是:添加由于质心运动产生的速度,在加上由旋转而导致的速度

u1 = v1 + w1 x r1
u2 = v2 + w2 x r2

碰撞后的速度取决于质心线性速度的变化,也取决于角速度的变化

v1' = v1 - kn/m1
v2' = v2 + kn/m2
w1' = w1 - (r1 x kn)J1^-1
w2' = w2 + (r2 x kn)J2^-1

组合上面的公式,计算出碰撞后接触点的速度

u1' = v1' + w1' x r1
		= v1 - kn/m1 + (w1 - (r1 x kn)J1^-1) x r1
		= u1 - kn/m1 - k((r1 x n)J1^-1) x r1
u2' = u2 + kn/m2 + k((r2 x n)J2^-1) x r2
urel = u1 - u2,相对的点速度

现在,我们来改写我们的公式

-e urel n = urel' n

在通过这个公式最终计算出冲击力k

k = ((e+1) urel n) / [(1/m1 + 1/m2)n + ((r1xn)J1^-1)xr1 + ((r2xn)J2^-1)xr2] n

有了冲击力后,我们就可以计算出碰撞后的速度了,这次我们考虑了旋转效应!