8#ifndef model_PARAMETRICCURVE_H_
9#define model_PARAMETRICCURVE_H_
107 template <
typename Derived,
short unsigned int dim>
111 typedef Eigen::Matrix<double, dim, 1> VectorDim;
116 Derived& derivedCurve() {
return *
static_cast<Derived*
>(
this); }
117 Derived* p_derivedCurve() {
return static_cast<Derived*
>(
this); }
118 const Derived& derivedCurve()
const {
return *
static_cast<const Derived*
>(
this); }
119 const Derived* p_derivedCurve()
const {
return static_cast<const Derived*
>(
this); }
130 return p_derivedCurve()->get_ru(
u).norm();
135 return p_derivedCurve()->get_ru(
u).squaredNorm();
140 return p_derivedCurve()->get_ru(
u).normalized();
150 return get_rl(
u).dot(p_derivedCurve()->get_ruu(
u));
162 VectorDim ru (p_derivedCurve()->get_ru (
u));
163 VectorDim ruu(p_derivedCurve()->get_ruu(
u));
164 return (ruu - ru*ru.dot(ruu)/j2)/j2;
181 template <
short unsigned int qOrder,
template <
short unsigned int,
size_t>
class QuadratureRule>
189 template <
short unsigned int qOrder,
template <
short unsigned int,
size_t>
class QuadratureRule>
190 VectorDim
rm()
const {
191 VectorDim
temp(VectorDim::Zero());
197 return p_derivedCurve()->get_r(
u)*
get_j(
u);
Class template that computes tangent, curvature and torsion of a parametric curve in arbitrary dimen...
double get_j(const double &u) const
double get_kappa(const double &u) const
the scalar curvature
double get_ju(const double &u) const
VectorDim get_rl(const double &u) const
VectorDim rm_integrand(const double &u) const
VectorDim get_rll(const double &u) const
double get_jSquare(const double &u) const
static void integrate(IntegrandType(*fp)(const double &), IntegrandType &intgrl)