Data una matrice pivot composta nel modo seguente:
mat4w pivotedMat(true);
pivotedMat.translate(P);
pivotedMat *= pivotPos;
pivotedMat *= pivotRot;
pivotedMat *= R;
pivotedMat *= pivotRot.getInverse();
pivotedMat *= pivotPos.getInverse();
pivotedMat.scale(S);
Che viene poi tradotto e ruotato da un'altra matrice in modo tale che:
mat4w newMat = transformMat * pivotedMat;
È possibile scomporre la matrice (newMat) per recuperare i nuovi valori di P, R e S se tutti i valori che componevano la precedente matrice girevole sono noti?
risposte:
0 per risposta № 1È possibile scomporre una matrice di trasformazione affine T
in traduzione Pos
e rotazione Rot
matrici che utilizzano il seguente codice:
mat4 Rot;
mat4 Pos;
mat4 InvT = T.GetInversed();
for ( int i = 0 ; i < 3 ; i++ )
{
for ( int j = 0 ; j < 3 ; j++ )
{
Rot[i][j] = InvT[j][i];
}
}
Pos = Rot.GetInversed() * vec3( -InvT[3].x, -InvT[3].y, -InvT[3].z );