23 throw std::runtime_error(
"Should call Element::cacheTransforms() first");
48 = Eigen::Translation3d(pars[
X], pars[
Y], pars[
Z])
49 * Eigen::AngleAxisd(pars[
THZ], Eigen::Vector3d::UnitZ())
50 * Eigen::AngleAxisd(pars[
THY], Eigen::Vector3d::UnitY())
51 * Eigen::AngleAxisd(pars[
THX], Eigen::Vector3d::UnitX());
69 throw std::runtime_error(
"Invalid parameter name "+parname);
77 case THX:
return "thx";
78 case THY:
return "thy";
79 case THZ:
return "thz";
80 case ROT:
return "rot";
81 case OFF:
return "off";
82 case SCL:
return "scl";
83 case NPAR:
return "npar";
84 default:
throw std::runtime_error(
"Invalid parameter");
90 return off * Amg::Vector3D::UnitY();
95 return -rot * d0.cross(Amg::Vector3D::UnitZ());
100 return d0.array() * Eigen::Array3d{0., scl/
m_lenY, 0.};
130 double off = parvec[
OFF];
131 double rot = parvec[
ROT];
136 local.array().colwise() += Eigen::Array3d{0. ,off, 0.};
139 local.topRows<2>().
array() += d0.topRows<2>().
array().colwise().reverse().colwise() * Eigen::Array2d{0., rot};
142 local.array() += d0.array().colwise() * Eigen::Array3d{0., scl, 0.};
145 local.topRows<2>().
array() += (d0.topRows<2>().array().colwise().reverse() * d0.topRows<2>().array()).colwise() * Eigen::Array2d{0., npar};
static Amg::Vector3D stgcOffset(double off)
void applyDeformation2(const ParameterVector &parvec, VectorSetRef local) const
ElementModelSTGC()=delete
virtual ipar_t getParameterIndex(const std::string &parname) const override
virtual std::string getParameterName(ipar_t ipar) const override
void applyDeformation(const ParameterVector &parvec, Eigen::Ref< Amg::Vector3D > local) const
static Amg::Vector3D stgcRotation(double rot, const Amg::Vector3D &d0)
virtual void transform(const ParameterVector &parvec, VectorSetRef local) const override
Transform a set of vectors expressed in local frame, stored in a matrix.
Amg::Vector3D stgcNonPar(double npar, const Amg::Vector3D &d0) const
Amg::Vector3D stgcScale(double scl, const Amg::Vector3D &d0) const
virtual void cacheTransform(ParameterVector &parvec) const override
Cache the rigid component of this deformation model.
Eigen::Ref< VectorSet > VectorSetRef
Eigen::Matrix< double, 3, Eigen::Dynamic, Eigen::ColMajor|Eigen::AutoAlign, 3, 5 > VectorSet
Eigen::Matrix< double, 3, 1 > Vector3D
std::vector< double > parameters
Eigen::Affine3d transformCache