Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

物理引擎中符号和单位

引言

本文为物理引擎系列的开篇,本文详细介绍物理引擎的几个约定:符号、单位、坐标系。

符号约定

标量(Scalar)通常用斜体字母表示,如质量或时间

向量(Vector)则通常用粗体小写字母,例如, ,。或带箭头的字母,如,,表示。我们将优先采用粗体字母表示向量。

物理量标量符号向量符号MKS单位描述
时间 (Time)- (秒)描述事件发生的时刻或持续时间。
质量 (Mass)- (千克)物体惯性的量度。
位置 (Position)- (米)物体在世界空间中的坐标。
位移 (Displacement)- (米)位置的变化量。
速度 (Velocity) (速率)位置随时间的变化率。
加速度 (Acceleration)速度随时间的变化率。
力 (Force)- (牛顿)导致物体加速度的原因。
冲量 (Impulse)-力在一段时间上的累积效应。
动量 (Momentum)-物体质量和速度的乘积。
角度 (Angle)- (弧度)描述物体的朝向或旋转量。
角速度 (Angular Velocity)- (omega)角度随时间的变化率。
角加速度 (Angular Acceleration)- (alpha)角速度随时间的变化率。
力矩 (Torque)- (tau)导致物体角加速度的原因。
转动惯量 (Moment of Inertia) (惯性张量)物体对旋转运动的阻力。

单位制

绝大多数现代物理引擎,如Box2DNVIDIA PhysX,都强烈推荐或内部默认使用 MKS单位制,它是国际单位制(SI)的一部分。该系统以米(Meter)、千克(Kilogram)和秒(Second)作为基本单位。所有其他物理量的单位都由这三个基本单位导出,例如力的单位牛顿(N)定义为 kg·m/s²。

右手和左手坐标系

坐标系定义了空间中点的位置和方向,是进行任何几何计算的基础。在3D空间中,主要存在两种手性(Chirality)的坐标系:右手坐标系左手坐标系

  • 右手坐标系 (Right-Handed System):这是数学和物理学界的标准。你可以用右手来判断:伸出食指指向X轴正方向,中指指向Y轴正方向,那么拇指的指向就是Z轴的正方向。OpenGLBullet 和大部分物理引擎都使用右手坐标系。

  • 左手坐标系 (Left-Handed System):用左手可以进行类似判断。食指指向X轴正方向,中指指向Y轴正方向,拇指指向Z轴正方向。Direct3DUnityUE 引擎使用左手坐标系。

两种坐标系之间的转换可以通过反转其中一个轴的坐标来实现。例如,从右手系转换到左手系,可以令 。在混合使用不同坐标系约定的库(例如,使用左手系的渲染引擎和使用右手系的物理引擎)时,必须在数据交换的边界处进行正确的坐标转换。

向上的方向

另一个重要的约定是哪个轴代表“上”方向。最常见的两种约定是:

  • Y-Up:Y轴的正方向为“上”。这在2D游戏和许多3D建模软件(如Blender)中很常见。
  • Z-Up:Z轴的正方向为“上”。这在建筑和CAD领域以及某些3D引擎(如Unreal Engine)中更为流行。

各种软件,坐标系和向上的约定可以参考Freya总结的图。