Skip to content
Snippets Groups Projects
Commit bd01bd0b authored by Savici, Andrei T.'s avatar Savici, Andrei T.
Browse files

Use the correct formula for inverse. refs #13247

parent 5a648446
No related branches found
No related tags found
No related merge requests found
...@@ -226,31 +226,30 @@ void CoordTransformAffine::buildNonOrthogonal( ...@@ -226,31 +226,30 @@ void CoordTransformAffine::buildNonOrthogonal(
// Start with identity // Start with identity
m_affineMatrix.identityMatrix(); m_affineMatrix.identityMatrix();
Mantid::Kernel::Matrix<coord_t> A(outD,inD); //A matrix is columns of basis vectors
Mantid::Kernel::Matrix<coord_t> A(inD,outD);
for(size_t i = 0; i < outD; i++){ for(size_t i = 0; i < outD; i++){
for(size_t j = 0; j < inD; j++){ for(size_t j = 0; j < inD; j++){
A[i][j]=axes[i][j]; A[j][i]=axes[i][j];
} }
} }
Mantid::Kernel::Matrix<coord_t> AT=A; Mantid::Kernel::Matrix<coord_t> AT=A;
AT.Transpose(); AT.Transpose();
Mantid::Kernel::Matrix<coord_t> AAT=A*AT; Mantid::Kernel::Matrix<coord_t> ATA=AT*A;
AAT.Invert(); ATA.Invert();
Mantid::Kernel::Matrix<coord_t> Ainv=AT*AAT; Mantid::Kernel::Matrix<coord_t> Ainv=ATA*AT;
Mantid::Kernel::Matrix<coord_t> offset(1,inD); Mantid::Kernel::Matrix<coord_t> offset(inD,1);
for(size_t j = 0; j < inD; j++){ for(size_t j = 0; j < inD; j++){
offset[0][j]=origin[j]; offset[j][0]=origin[j];
} }
Mantid::Kernel::Matrix<coord_t> outoffset=offset*Ainv; Mantid::Kernel::Matrix<coord_t> outoffset=Ainv*offset;
for(size_t i = 0; i < outD; i++){ for(size_t i = 0; i < outD; i++){
for(size_t j = 0; j < inD; j++){ for(size_t j = 0; j < inD; j++){
m_affineMatrix[i][j]=Ainv[i][j]*scaling[i]; m_affineMatrix[i][j]=Ainv[i][j]*scaling[i];
} }
m_affineMatrix[i][inD]=-outoffset[0][i]*scaling[i]; m_affineMatrix[i][inD]=-outoffset[i][0]*scaling[i];
} }
// Copy into the raw matrix (for speed) // Copy into the raw matrix (for speed)
copyRawMatrix(); copyRawMatrix();
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment