Original Post
Can someone please explain a way to find the inverse of a 4x4 matrix other than useing adjoints....since i wrote this based on the adjoint method and it doesnt seem to work
Matrix Matrix::Inverse()
{
Matrix Cofactors,Adjoint;
Cofactors.Set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
Adjoint.Set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
int row=0,column=0;
float subMatrix[4][4]={0,0,0,0,
0,0,0,0,
0,0,0,0,
0,0,0,0};
for(int r=0;r<4;r++)
{
for(int c=0;c<4;c++)
{
for(int xr=0;xr<4;xr++)
{
if(xr==r)
continue;
for(int xc=0;xc<4;xc++)
{
if(xc==c)
{
continue;
}
else
{
subMatrix[row][column]=Entry[xr][xc];
column++;
}
}
row++;column=0;
}
if((r+c)%2)
Cofactors.Entry[r][c]-=Determinant(subMatrix,3);
else
Cofactors.Entry[r][c]+=Determinant(subMatrix,3);
row=0;column=0;
}
}
Adjoint=Cofactors.Transpose();
float Det=Determinant(Entry,4);
return Matrix(Adjoint.Entry[0][0]/Det,Adjoint.Entry[0][1]/Det,Adjoint.Entry[0][2]/Det,Adjoint.Entry[0][3]/Det,
Adjoint.Entry[1][0]/Det,Adjoint.Entry[1][1]/Det,Adjoint.Entry[1][2]/Det,Adjoint.Entry[1][3]/Det,
Adjoint.Entry[2][0]/Det,Adjoint.Entry[2][1]/Det,Adjoint.Entry[2][2]/Det,Adjoint.Entry[2][3]/Det,
Adjoint.Entry[3][0]/Det,Adjoint.Entry[3][1]/Det,Adjoint.Entry[3][2]/Det,Adjoint.Entry[3][3]/Det);
}
Matrix Matrix::Transpose()
{
return Matrix(Entry[0][0],Entry[1][0],Entry[2][0],Entry[3][0],
Entry[0][1],Entry[1][1],Entry[2][1],Entry[3][1],
Entry[0][2],Entry[1][2],Entry[2][2],Entry[3][2],
Entry[0][3],Entry[1][3],Entry[2][3],Entry[3][3]);
}
float Matrix::Determinant(float Matrix[4][4],int Dimen)
{
if (Dimen==2)
return ((Matrix[0][0]*Matrix[1][1])-(Matrix[1][0]*Matrix[0][1]));
float det=0;
int row=0,column=0;
float subMatrix[4][4]={0,0,0,0,
0,0,0,0,
0,0,0,0,
0,0,0,0};
for(int c=0;c