【发布时间】:2018-12-05 05:38:23
【问题描述】:
我正在尝试用 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;
}
到目前为止,这似乎工作正常,但我现在需要在我的模拟中包括平移加速度,所以我的问题是:当你向边缘(或任何非质心点)施加力时会发生什么对象?平移加速度是否与施加在质心上的加速度相同?
【问题讨论】:
-
这不是一道物理题,而不仅仅是一道编程题吗?
-
我投票结束这个问题,因为它是一个物理问题而不是编程问题。
-
回答您的问题:是的,施加在身体任何部位的力的平移加速度将与施加在质心上的力相同。
标签: c# simulation physics