我正在尝试计算2D胶囊质心周围的惯性矩,我将其分为矩形和两个半圆。 C 是质心,旋转轴穿过这一点。
我知道围绕垂直于其平面的轴穿过整圆中心的半圆的惯性矩 1/2MR²其中 M 是半圆的质量和 R 是半径(如果我错了,请纠正我)。这里,对于两个半圆,它是 A 和 B 。对于矩形,通过其质心的惯性矩 1/12 M(L²+W²)其中 M 是矩形的质量, L 和 W 是它的尺寸。这里,质心与质心 C 相同。
根据Parallel Axis Theorem,围绕平行于现有轴的轴的惯性矩是加到质量上的现有惯性矩乘以两个轴之间的平方垂直距离。在这里,对于半圆,在 C 附近,它将是 1 /2MR²+ M(AC²或BC²)。
胶囊的总惯性矩将是其组成惯性矩的总和,因此它将是矩形+ 2 *(半圆形)。基于此,这就是我所做的,但我不认为我做对了,因为我的胶囊在整个地方抖动而不是按预期旋转。
float momentOfInertiaOfRectangle = (massOfRectangle / 12.0f) * ((extentLength * extentLength) + (extentWidth * extentWidth));
float momentOfInertiaOfSemiCircle = massOfSemicircle * ((0.5f * m_CapsuleRadius * m_CapsuleRadius) + (extentLength * extentLength * 0.25f));
float totalMomentOfInertia = momentOfInertiaOfRectangle + (momentOfInertiaOfSemiCircle * 2.0f);
如果我做错了请告诉我,并为我澄清一下。谢谢。