kscreensaver: replace use of Eigen2 with Eigen3 API

Signed-off-by: Ivailo Monev <xakepa10@laimg.moc>
This commit is contained in:
Ivailo Monev 2017-06-24 05:21:31 +00:00
parent 532dbd0f5a
commit 14ff26cd9e
3 changed files with 5 additions and 6 deletions

View file

@ -1,6 +1,5 @@
macro_optional_find_package(Eigen3)
macro_log_feature(EIGEN3_FOUND "Eigen3" "A C++ template library for linear algebra" "kdesupport" FALSE "" "Needed to build the krotation and kpendulum screensavers" )
add_definitions(-DEIGEN2_SUPPORT)
option(KSCREENSAVER_SOUND_SUPPORT "Build with sound support" OFF)

View file

@ -333,7 +333,7 @@ RkOdeSolver<T, D>::rkStepCheck(const T& dx_requested)
// generic scaling factor
// |y| + |dx * dy/dx| + 1e-15
Matrix<T,D,1> yscal
= (m_y.cwise().abs() + (dx*m_dydx).cwise().abs()).cwise()
= (m_y.array().abs() + (dx*m_dydx).array().abs()).array()
+ 1e-15;
unsigned int iter = 0;
@ -354,13 +354,13 @@ RkOdeSolver<T, D>::rkStepCheck(const T& dx_requested)
}
// new dx -> update scaling vector
yscal
= (m_y.cwise().abs()
+ (dx*m_dydx).cwise().abs()).cwise()
= (m_y.array().abs()
+ (dx*m_dydx).array().abs()).array()
+ 1e-15;
}
ytmp = rkStep(dx, yerr); // try to make a step forward
t = (yerr.cwise() / yscal).cwise().abs(); // calc the error vector
t = (yerr.array() / yscal.array()).abs(); // calc the error vector
errmax = t.maxCoeff()/m_eps; // calc the rel. maximal error
++iter;
} while ((iter < maxiter) && (errmax >= 1.0));

View file

@ -549,7 +549,7 @@ void KRotationSaver::initData()
// omega_body = L_body * J_body^(-1)
// component-wise division because J_body is a diagonal matrix
Vector3d omega_body = (m_Lz * e_body.col(2)).cwise() / m_J;
Vector3d omega_body = (m_Lz * e_body.col(2)).array() / m_J.array();
// initial rotation vector
m_omega = et * omega_body;