Skip to content
Snippets Groups Projects
Commit dede0596 authored by Vakhtang Tsulaia's avatar Vakhtang Tsulaia
Browse files

Merge branch 'master-geoxf-rollback' into 'master'

Rolled back two commits which affected Pow::operator()

See merge request !100
parents 614cc422 9668399f
No related branches found
No related tags found
1 merge request!100Rolled back two commits which affected Pow::operator()
...@@ -231,25 +231,23 @@ __attribute__ ((flatten)) ...@@ -231,25 +231,23 @@ __attribute__ ((flatten))
// //
// Get the translation part and the rotation part: // Get the translation part and the rotation part:
// //
Eigen::Matrix3d linear = m_xf.linear (); GeoTrf::RotationMatrix3D rotate = m_xf.rotation ();
Eigen::EigenSolver<GeoTrf::RotationMatrix3D> solver(linear);
Eigen::MatrixXcd D = solver.eigenvalues().asDiagonal();
Eigen::MatrixXcd V = solver.eigenvectors();
GeoTrf::Vector3D translate = m_xf.translation (); GeoTrf::Vector3D translate = m_xf.translation ();
Eigen::AngleAxis<double> aa(rotate);
//
// Evaluate the function
//
double nTimes = (*m_function) (x); double nTimes = (*m_function) (x);
// //
// Modify: // Modify:
// //
translate *= nTimes; translate *= nTimes;
Eigen::Matrix3cd DPowN=Eigen::Matrix3cd::Zero(); double& delta = aa.angle();
for (unsigned int i=0;i<3;i++) DPowN(i,i)=pow(D(i,i),nTimes); delta *= nTimes;
// //
// Now compose these and return a result: // Now compose these and return a result:
// //
GeoTrf::Transform3D tRPowN = GeoTrf::Transform3D::Identity(); return GeoTrf::Translation3D (translate) * GeoTrf::Transform3D(aa);
tRPowN.linear()=(V*DPowN*V.inverse()).real();
return GeoTrf::Translation3D (translate) * tRPowN;
} }
GeoTrf::Transform3D Pow::operator () (const GeoGenfun::Argument & argument) const GeoTrf::Transform3D Pow::operator () (const GeoGenfun::Argument & argument) const
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment