Преобразование из одной системы координат в другую.
D3DXVECTOR3 CentralPoint,
DirectionX,
DirectionY,
DirectionZ;
, где:
CentralPoint -- Центр системы координат
DirectionX -- Направляющий ед-й вектор оси X
DirectionY -- Направляющий ед-й вектор оси Y
DirectionZ -- Направляющий ед-й вектор оси Z
(Т.е. координатные оси не обязательно взаимно-перпендикулярны).
void csc3Dobj::_TranslateThis2Other(tCoordinateSystem &CSystem)
{
//Матрица совмещения локальной СК с глобальной СК:
objMatrTT = D3DXMATRIX( CSystem.DirectionX.x, CSystem.DirectionY.x, CSystem.DirectionZ.x, 0,
CSystem.DirectionX.y, CSystem.DirectionY.y, CSystem.DirectionZ.y, 0,
CSystem.DirectionX.z, CSystem.DirectionY.z, CSystem.DirectionZ.z, 0,
-D3DXVec3Dot(&(CSystem.DirectionX), &CSystem.CentralPoint),
-D3DXVec3Dot(&(CSystem.DirectionY), &CSystem.CentralPoint),
-D3DXVec3Dot(&(CSystem.DirectionZ), &CSystem.CentralPoint),
1);
float fDet;
objMatr = objMatrTT * objMatr;
D3DXMatrixInverse(&objMatrTT, &fDet, &objMatrTT);
objMatr *= objMatrTT;
};