在对象边缘施加力时会发生什么?

时间:2018-06-26 13:17:37

标签: c# simulation physics

我正在尝试用C#构建2D物理引擎(刚体动力学模拟)。到目前为止,我已经模拟了大小不同的盒子(正方形),这些盒子固定在适当的位置,但是在对其施加力时可以围绕它们的质心(质量中心)旋转。这是在施加力时调用的Box.ApplyForce()方法:

    public void ApplyForce(double x, double y, Vector force)
    {
        //angular acceleration = torque(angular force) / moment of inertia
        Force tempForce = new Force(x, y, force.X, force.Y);
        forceList.Add(tempForce);

        Vector displacement = new Vector(x, y);

        double torque = displacement.X * tempForce.yForce - displacement.Y * tempForce.xForce;

        double momentOfInertia = (mass*(size*size*2))/12;

        angularAcceleration += torque / momentOfInertia;
    }

现在,到目前为止,这似乎工作正常,但是我现在需要在模拟中包括平移加速度,所以我的问题是:将力施加到边缘(或任何非质心点)时会发生什么?对象?平移加速度会不会与应用于质心的加速度相同?

1 个答案:

答案 0 :(得分:0)

在模拟平移运动时,这些模拟正方形是否在平面上?它们在施加力时可以旋转,也可以平移吗?

如果盒子在平坦的表面上,则当您模拟平移加速度时它无法旋转,而施加力的位置无关紧要。刚度与施加力的角度或力矢量在平移运动方向上的分量无关紧要。垂直于表面的矢量分量将影响法向力的大小,如果您考虑到这一点,则会影响摩擦力。

如果盒子不在表面上,而是在施加力时只是漂浮在空间中,答案会变得更加复杂。也许可以澄清一下您要模拟的内容。