我正在尝试用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;
}
现在,到目前为止,这似乎工作正常,但是我现在需要在模拟中包括平移加速度,所以我的问题是:将力施加到边缘(或任何非质心点)时会发生什么?对象?平移加速度会不会与应用于质心的加速度相同?
答案 0 :(得分:0)
在模拟平移运动时,这些模拟正方形是否在平面上?它们在施加力时可以旋转,也可以平移吗?
如果盒子在平坦的表面上,则当您模拟平移加速度时它无法旋转,而施加力的位置无关紧要。刚度与施加力的角度或力矢量在平移运动方向上的分量无关紧要。垂直于表面的矢量分量将影响法向力的大小,如果您考虑到这一点,则会影响摩擦力。
如果盒子不在表面上,而是在施加力时只是漂浮在空间中,答案会变得更加复杂。也许可以澄清一下您要模拟的内容。