получить вектор направления из матрицы btScalar

Я создал пуленепробиваемую машину с составным шасси, а состав состоит из 2 корпусов, шасси и башни.

Я могу получить преобразование башни и матрицу opengl следующим образом:

// get chassis and turret transforms
btTransform chassisTransform = m_vehicle->getChassisWorldTransform();
btTransform turretTransform = compound->getChildTransform(1);
// multiply transforms to get updated turret transform
turretTransform *= chassisTransform;

// get turret matrix
btScalar turretMatrix[16];
turretTransform.getOpenGLMatrix(turretMatrix);

Я пытаюсь получить турель вперед / вектор направления из этой матрицы. Мне это нужно, чтобы камера была зафиксирована в положении и направлении башни.

То, что я пробовал, это:

btVector3 turretForwardVector = btVector3(turretMatrix[2], turretMatrix[6], turretMatrix[9]);

Но это не дает мне правильный вектор.

Где именно я должен искать вектор в этой матрице?

0

Решение

Ваше мышление правильно. Достаточно извлечь только строку или столбец vectur. Прямо сейчас в матричной нотации OpenGL вы извлекаете строку Z. Я предлагаю вам попробовать колонку, т.е. turretMatrix[0x8 … 0xb]

1

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector