Skip to content
Snippets Groups Projects
Commit 9ee59e5a authored by juergen's avatar juergen
Browse files

fixed BZDNG-49: superposition failed in windows:

-replaced all reinterpret_casts with manual copying over index by index

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@1871 5a81b35b-ba03-0410-adc8-b2c5c5119f08
parent 8f1de2c9
No related branches found
No related tags found
No related merge requests found
......@@ -27,6 +27,7 @@
#include <Eigen/SVD>
#include <Eigen/LU>
#include <iostream>
#include <ost/base.hh>
#include <ost/geom/vec3.hh>
#include <ost/mol/alg/svd_superpose.hh>
......@@ -108,19 +109,54 @@ SuperposerSVD::SuperposerSVD(int natoms, bool alloc_atoms):
}
geom::Vec3 SuperposerSVD::EigenVec3ToVec3(const EVec3 &vec){
#if defined _MSC_VER
geom::Vec3 myvec3;
for (int i=0; i<3; ++i) {
myvec3[i]=vec[i];
}
return myvec3;
#else
return *reinterpret_cast<const geom::Vec3*>(&vec);
#endif
}
geom::Mat3 SuperposerSVD::EigenMat3ToMat3(const EMat3 &mat){
#if defined _MSC_VER
geom::Mat3 mymat3;
for (int i=0; i<3; ++i) {
for (int j=0; j<3; ++j) {
mymat3(j,i)=mat(i,j);
}
}
return mymat3;
#else
return *reinterpret_cast<const geom::Mat3*>(&mat);
#endif
}
EVec3 SuperposerSVD::Vec3ToEigenRVec(const geom::Vec3 &vec){
#if defined _MSC_VER
EVec3 myvec3=EVec3::Zero();
for (int counter=0; counter<3; ++counter) {
myvec3[counter]=vec[counter];
}
return myvec3;
#else
return *reinterpret_cast<const ERVec3*>(&vec);
#endif
}
EVec3 SuperposerSVD::Vec3ToEigenVec(const geom::Vec3 &vec){
return *reinterpret_cast<const EVec3*>(&vec);
#if defined _MSC_VER
EVec3 myvec3=EVec3::Zero();
for (int counter=0; counter<3; ++counter) {
myvec3[counter]=vec[counter];
}
return myvec3;
#else
return *reinterpret_cast<const EVec3*>(&vec);
#endif
}
EMatX SuperposerSVD::SubtractVecFromMatrixRows(EMatX Mat,
......@@ -165,6 +201,7 @@ SuperpositionResult SuperposerSVD::DoSuperposition()
atoms1_=this->SuperposerSVD::SubtractVecFromMatrixRows(atoms1_, avg1_);
atoms2_=this->SuperposerSVD::SubtractVecFromMatrixRows(atoms2_, avg2_);
EMatX atoms2=atoms2_.transpose();
//single value decomposition
Eigen::SVD<EMat3> svd(atoms2*atoms1_);
......
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