3D数学-动力学

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

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
3D游戏与计算机图形学中的数学方法是指在游戏和图形学领域中使用的数学原理、算法和技术。这些数学方法的应用可以帮助我们实现逼真的图形效果和流畅的游戏体验。 在3D游戏中,数学方法被广泛应用于处理和渲染3D模型、光照和阴影、纹理映射、相机投影等方面。通过应用线性代数、矩阵运算和几何学等数学方法,我们可以计算出3D模型的位置、旋转和缩放,以及模型之间的碰撞检测和物理模拟。 另外,在计算机图形学中,数学方法也广泛应用于图形算法和渲染技术的开发中。比如,光线追踪算法需要使用向量和数值计算来模拟光线的传播和反射;反走样算法利用采样理论和随机数生成来减少图形的锯齿感;着色器程序利用向量和矩阵运算来计算光照效果和材质属性等。 此外,数学方法还被应用于游戏的物理引擎开发中。物理引擎使用物理学的方程和数值计算来模拟游戏中的物体运动、碰撞和力的作用。通过应用牛顿定律、刚体动力学和碰撞检测的数学方法,我们可以实现真实世界的物理效果,从而让游戏更加逼真和惟妙惟肖。 总之,3D游戏与计算机图形学中的数学方法是实现逼真图形和流畅游戏的基础。通过应用线性代数、几何学、向量和矩阵运算等数学原理,我们可以计算、模拟和渲染出令人惊叹的图形效果,同时实现真实世界的物理效果。这些数学方法的运用使得游戏和计算机图形学领域取得了巨大的发展和进步。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值