3 #include <SpaceVecAlg/SpaceVecAlg>
14 inline T
interpolate(
const T & start,
const T & end,
double ratio)
16 return (1 - ratio) * start + ratio * end;
25 inline Eigen::Quaterniond
interpolate(
const Eigen::Quaterniond & start,
const Eigen::Quaterniond & end,
double ratio)
27 return start.slerp(ratio, end);
36 inline Eigen::Matrix3d
interpolate(
const Eigen::Matrix3d & start,
const Eigen::Matrix3d & end,
double ratio)
38 return interpolate<Eigen::Quaterniond>(Eigen::Quaterniond(start), Eigen::Quaterniond(end), ratio).toRotationMatrix();
47 inline sva::PTransformd
interpolate(
const sva::PTransformd & start,
const sva::PTransformd & end,
double ratio)
60 template<
class T,
class U = T>
108 const Eigen::Quaterniond & end,
114 Eigen::AngleAxisd aa(start.inverse() * end);
115 return aa.angle() * aa.axis();
119 return Eigen::Vector3d::Zero();
131 const Eigen::Matrix3d & end,
137 Eigen::AngleAxisd aa(start.transpose() * end);
138 return aa.angle() * aa.axis();
142 return Eigen::Vector3d::Zero();
154 const sva::PTransformd & end,
160 return sva::transformError(start, end);
164 return sva::MotionVecd::Zero();
176 const sva::ForceVecd & end,
186 return sva::ForceVecd::Zero();