Расчет координат инерционного тензора твердого тела

Я пытаюсь реализовать физическое моделирование небольшого твердого тела, используя DirectX для рисования моих объектов и его библиотеку Math, чтобы использовать преимущества SIMD-вычислений (классы XMMATRIX и XMVECTOR).

Мой вопрос о Тензор инерции, Я знаю, что с помощью его обратного я могу рассчитать угловое ускорение следующим образом:

AngAcc = Inverse(I) * torque

и этот тензор инерции в локальном пространстве является константой … поэтому я храню его инверсию в своем классе RigidBody с некоторыми другими членами:

//'W' suffix means 'world space'
//'L' suffix means 'local space'
XMFLOAT3 m_positionW;               //rigid body position
XMFLOAT4 m_orientationW;            //angular orientation
XMFLOAT3 m_velocityW;               //linear velocity
XMFLOAT3 m_rotationW;               //angular velocity (rotation)

XMFLOAT3X3 m_inverseInertiaTensorL; //inverse of the body inertia tensor in local space (constant)

XMFLOAT4X4 m_worldTransform;        //transform matrix for converting body space into world space
XMFLOAT3X3 m_inverseInertiaTensorW; //inverse of the body inertia tensor in world space (change every frame)

Теперь на каждом кадре Я должен рассчитать обратный инерционный тензор в мировых координатах… и в этот момент я немного растерялся …

Как я могу это сделать?

  1. Я должен умножить m_inverseInertiaTensorL на m_worldTransform? Если да, то как? первый — XMFLOAT3X3, а второй — XMFLOAT4X4 …
  2. Я должен использовать ориентацию? Где-то я читаю что-то вроде: «inverseWorldInertiaTensor = rot * inverseBodyInertiaTensor * rot.transpose ()», где я думаю, что «rot» — это матрица, подобная этой:

    XMMATRIX вращение = XMMatrixRotationQuaternion (ориентация W);

Я очень смущен … кто-то может мне помочь?

2

Решение

я нашел это умножение m_inverseInertiaTensorL на m_worldTransform это правильный путь; только часть вращения m_worldTransform необходимо, так что вы можете умножить m_inverseInertiaTensorL на 3×3-суб-матрица из m_worldTransform.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]