0

我想在 Java 中创建一个物理引擎。然而,这不是我关心的代码。它只是刚体物理的数学,特别是力以及它们如何影响物体的旋转。

例如,假设我有一个边长相同的正方形。由于重力(无空气阻力),广场将向地面加速。这意味着在正方形的每个点上都会有 (0,-9.8)m/s 的矢量力。

现在让我们说这个正方形稍微旋转了一下。当这个旋转的正方形与地面(一个平面)接触时,在接触点(很可能是正方形的一个角)会有一个脉冲速度矢量。但是,广场上其他角落的力量会发生什么变化?从原始重力来看,它们是如何受到影响的?

如果我的问题不够详细,我深表歉意。我很想上传一张图表,但我还没有声誉。

4

3 回答 3

1
  1. 旋转是动能的形式

    首先是运动的类比

    • alpha- 角位置 [rad]
    • omega- 角速度 [rad/s]
    • epsilon- 角加速度 [rad/s^2]
    • alpha(t)/(dt^2)=omega(t)/dt=epsilon(t)

    现在惯性

    • I- 二次旋转质量惯性 [kg.m^2]
    • m- 质量 [公斤]
    • M- 扭矩 [Nm]

    和一些待利用的方程

    1. M=epsilon*I- 实现加速所需的扭矩,反之亦然 [Nm]
    2. acc=epsilon*radius- 周界加速度 [m/s^2]
    3. vel=omega*radius- 周界速度 [m/s^2]

    等式 #1 可用于直接计算力。等式 #2、#3 可用于计算基于摩擦的力,例如车轮抓地力/阻力。不要忘记动能Ek=0.5*m*vel^2+0.5*I*omega^2,这样你就可以利用能量守恒定律。

  2. object1object2旋转的连续接触过程中发生这种情况

    圆周速度/加速度产生相互作用力,这会减慢在 上object2产生阻力object2和反作用力的旋转object1

    如果object1不是固定的,那么这个力也会产生扭矩并旋转object1

    如果旋转被迫突然停止,那么所有旋转部分的动能都被移动到碰撞反作用力脉冲上。

    如果物体处于更复杂的旋转运动中,那么您应该计算实际的旋转轴alpha,omega,epsilon并使用它,因为物体可以旋转更多的旋转,每个旋转具有不同的旋转中心。

    此外,如果物体正在旋转并且在不同的轴上应用了另一个旋转,那么这会产生陀螺扭矩,也会在垂直于两者的第三轴上产生旋转。

    所以当你把所有这些放在一起时,你就会知道你需要什么结构。如果没有关于模拟结构和属性的更多信息,抱歉不能比这更具体......

于 2015-01-09T09:26:21.270 回答
0

施加的力在计算接触冲量时不起作用,因为据说冲量发生在比模拟时间步长小得多的时间尺度上。基本上,由于重力或其他力的影响,撞击期间的速度变化可以忽略不计。

于 2015-01-08T14:48:17.437 回答
0

如果我理解正确,您会担心广场的不同角落 - 一个有影响,三个没有。

但是,由于您要进行刚体动力学,因此将刚体视为具有质心(在本例中为正方形的中心)、位置、旋转和几何形状(在本例中广场,但它可以是任何东西)。

顶点的角相对于质心处于恒定位置和旋转 - 只有刚体的位置和旋转会同时改变世界上所有四个角的位置。此视图的一个优点是它独立于几何图形 - 您可以有 10 或 20 个角,并且方法是相同的。

关于计算旋转:重力和以前一样工作。然而,你现在有另一种力量(来自它作用时间的冲动)——你必须将两者的效果相加才能获得系统的完整结果。

在您描述的情况下,冲动将是由于其中一个角落发生碰撞。它必须在接触点处使用接触法线进行计算 - 在这种情况下是平面的法线。

如果法线指向与质心不同的方向,这将导致旋转(以及位置变化)。

位置变化量取决于您对接触计算和分辨率、材料属性、数值步进、冲击速度、时间步长的建模方式……

正如其他人所提到的,阅读物理(刚体动力学)和物理模拟可能是更好地理解这些概念的良好起点。

于 2015-01-08T23:54:40.350 回答