У меня есть матрица вида камеры, которую я получил из программы GL. Я знаю , что эта матрица предназначена для правой руки, поскольку именно так работает GL, но как я могу проверить, является ли эта матрица правой или левой рукой программно?
Для матрицы проекции я проверяю, положительна ли матрица [3] [4] (главная строка), чтобы увидеть, если она левша. Это правильно?
Спасибо.
EDIT
Я пробовал решение для детерминанта, но, к сожалению, это не так (по крайней мере, согласно моим экспериментам):
Я использовал математические функции DX9 для проверки (чтобы избежать возможных ошибок в моем коде).
Я запустил следующий код:
D3DXVECTOR3 vEye(0,0,0);
D3DXVECTOR3 vTarget(6,3,0);
D3DXVECTOR3 vUp(0,0,1);
D3DXMATRIX matViewLH;
D3DXMATRIX matViewRH;
D3DXMatrixLookAtLH(&matViewLH, &vEye, &vTarget, &vUp);
D3DXMatrixLookAtRH(&matViewRH, &vEye, &vTarget, &vUp);
float fLHDet = D3DXMatrixDeterminant(&matViewLH);
float fRHDet = D3DXMatrixDeterminant(&matViewRH);
И два детерминанта были равны (оба равны 0,999999994) и, очевидно, имели один и тот же знак.
Что касается моей проблемы - поскольку я получаю и матрицу вида, и матрицу проекции, и мне относительно легко проверить, является ли матрица проекции LH или RH - я использую эту информацию для идентификации системы координат.