![]() |
|
A class representing multi-dimensional spline curves. More...
#include <Spline.h>
Public Types | |
enum | { Dimension = Dim_ } |
enum | { Degree = Degree_ } |
typedef Scalar_ | Scalar |
typedef SplineTraits< Spline >::PointType | PointType |
The point type the spline is representing. More... | |
typedef SplineTraits< Spline >::KnotVectorType | KnotVectorType |
The data type used to store knot vectors. More... | |
typedef SplineTraits< Spline >::ParameterVectorType | ParameterVectorType |
The data type used to store parameter vectors. More... | |
typedef SplineTraits< Spline >::BasisVectorType | BasisVectorType |
The data type used to store non-zero basis functions. More... | |
typedef SplineTraits< Spline >::BasisDerivativeType | BasisDerivativeType |
The data type used to store the values of the basis function derivatives. More... | |
typedef SplineTraits< Spline >::ControlPointVectorType | ControlPointVectorType |
The data type representing the spline's control points. More... | |
Public Member Functions | |
Spline () | |
Creates a (constant) zero spline. For Splines with dynamic degree, the resulting degree will be 0. More... | |
template<typename OtherVectorType , typename OtherArrayType > | |
Spline (const OtherVectorType &knots, const OtherArrayType &ctrls) | |
Creates a spline from a knot vector and control points. More... | |
template<int OtherDegree> | |
Spline (const Spline< Scalar, Dimension, OtherDegree > &spline) | |
Copy constructor for splines. More... | |
const KnotVectorType & | knots () const |
Returns the knots of the underlying spline. More... | |
const ControlPointVectorType & | ctrls () const |
Returns the ctrls of the underlying spline. More... | |
PointType | operator() (Scalar u) const |
Returns the spline value at a given site \(u\). More... | |
SplineTraits< Spline >::DerivativeType | derivatives (Scalar u, DenseIndex order) const |
Evaluation of spline derivatives of up-to given order. More... | |
template<int DerivativeOrder> | |
SplineTraits< Spline, DerivativeOrder >::DerivativeType | derivatives (Scalar u, DenseIndex order=DerivativeOrder) const |
Evaluation of spline derivatives of up-to given order. More... | |
SplineTraits< Spline >::BasisVectorType | basisFunctions (Scalar u) const |
Computes the non-zero basis functions at the given site. More... | |
SplineTraits< Spline >::BasisDerivativeType | basisFunctionDerivatives (Scalar u, DenseIndex order) const |
Computes the non-zero spline basis function derivatives up to given order. More... | |
template<int DerivativeOrder> | |
SplineTraits< Spline, DerivativeOrder >::BasisDerivativeType | basisFunctionDerivatives (Scalar u, DenseIndex order=DerivativeOrder) const |
Computes the non-zero spline basis function derivatives up to given order. More... | |
DenseIndex | degree () const |
Returns the spline degree. More... | |
DenseIndex | span (Scalar u) const |
Returns the span within the knot vector in which u is falling. More... | |
Static Public Member Functions | |
static DenseIndex | Span (typename SplineTraits< Spline >::Scalar u, DenseIndex degree, const typename SplineTraits< Spline >::KnotVectorType &knots) |
Computes the span within the provided knot vector in which u is falling. More... | |
static BasisVectorType | BasisFunctions (Scalar u, DenseIndex degree, const KnotVectorType &knots) |
Returns the spline's non-zero basis functions. More... | |
static BasisDerivativeType | BasisFunctionDerivatives (const Scalar u, const DenseIndex order, const DenseIndex degree, const KnotVectorType &knots) |
Computes the non-zero spline basis function derivatives up to given order. More... | |
Static Private Member Functions | |
template<typename DerivativeType > | |
static void | BasisFunctionDerivativesImpl (const typename Spline< Scalar_, Dim_, Degree_ >::Scalar u, const DenseIndex order, const DenseIndex p, const typename Spline< Scalar_, Dim_, Degree_ >::KnotVectorType &U, DerivativeType &N_) |
Private Attributes | |
KnotVectorType | m_knots |
ControlPointVectorType | m_ctrls |
A class representing multi-dimensional spline curves.
The class represents B-splines with non-uniform knot vectors. Each control point of the B-spline is associated with a basis function
\begin{align*} C(u) & = \sum_{i=0}^{n}N_{i,p}(u)P_i \end{align*}
Scalar_ | The underlying data type (typically float or double) |
Dim_ | The curve dimension (e.g. 2 or 3) |
Degree_ | Per default set to Dynamic; could be set to the actual desired degree for optimization purposes (would result in stack allocation of several temporary variables). |
typedef SplineTraits<Spline>::BasisDerivativeType Eigen::Spline< Scalar_, Dim_, Degree_ >::BasisDerivativeType |
The data type used to store the values of the basis function derivatives.
typedef SplineTraits<Spline>::BasisVectorType Eigen::Spline< Scalar_, Dim_, Degree_ >::BasisVectorType |
The data type used to store non-zero basis functions.
typedef SplineTraits<Spline>::ControlPointVectorType Eigen::Spline< Scalar_, Dim_, Degree_ >::ControlPointVectorType |
The data type representing the spline's control points.
typedef SplineTraits<Spline>::KnotVectorType Eigen::Spline< Scalar_, Dim_, Degree_ >::KnotVectorType |
The data type used to store knot vectors.
typedef SplineTraits<Spline>::ParameterVectorType Eigen::Spline< Scalar_, Dim_, Degree_ >::ParameterVectorType |
The data type used to store parameter vectors.
typedef SplineTraits<Spline>::PointType Eigen::Spline< Scalar_, Dim_, Degree_ >::PointType |
The point type the spline is representing.
typedef Scalar_ Eigen::Spline< Scalar_, Dim_, Degree_ >::Scalar |
The spline curve's scalar type.
anonymous enum |
anonymous enum |
|
inline |
Creates a (constant) zero spline. For Splines with dynamic degree, the resulting degree will be 0.
References Eigen::Spline< Scalar_, Dim_, Degree_ >::Degree, Eigen::Dynamic, Eigen::Spline< Scalar_, Dim_, Degree_ >::m_knots, and oomph::PseudoSolidHelper::Zero.
|
inline |
Creates a spline from a knot vector and control points.
knots | The spline's knot vector. |
ctrls | The spline's control point vector. |
|
inline |
|
static |
Computes the non-zero spline basis function derivatives up to given order.
The function computes
\begin{align*} \frac{d^i}{du^i} N_{i,p}(u), \hdots, \frac{d^i}{du^i} N_{i+p+1,p}(u) \end{align*}
with i ranging from 0 up to the specified order.
u | Parameter \(u \in [0;1]\) at which the non-zero basis function derivatives are computed. |
order | The order up to which the basis function derivatives are computes. |
degree | The degree of the underlying spline |
knots | The underlying spline's knot vector. |
References constants::degree.
SplineTraits< Spline< Scalar_, Dim_, Degree_ >, DerivativeOrder >::BasisDerivativeType Eigen::Spline< Scalar_, Dim_, Degree_ >::basisFunctionDerivatives | ( | Scalar | u, |
DenseIndex | order | ||
) | const |
Computes the non-zero spline basis function derivatives up to given order.
The function computes
\begin{align*} \frac{d^i}{du^i} N_{i,p}(u), \hdots, \frac{d^i}{du^i} N_{i+p+1,p}(u) \end{align*}
with i ranging from 0 up to the specified order.
u | Parameter \(u \in [0;1]\) at which the non-zero basis function derivatives are computed. |
order | The order up to which the basis function derivatives are computes. |
References constants::degree.
SplineTraits<Spline, DerivativeOrder>::BasisDerivativeType Eigen::Spline< Scalar_, Dim_, Degree_ >::basisFunctionDerivatives | ( | Scalar | u, |
DenseIndex | order = DerivativeOrder |
||
) | const |
Computes the non-zero spline basis function derivatives up to given order.
The function computes
\begin{align*} \frac{d^i}{du^i} N_{i,p}(u), \hdots, \frac{d^i}{du^i} N_{i+p+1,p}(u) \end{align*}
with i ranging from 0 up to the specified order.
u | Parameter \(u \in [0;1]\) at which the non-zero basis function derivatives are computed. |
order | The order up to which the basis function derivatives are computes. Using the template version of this function is more efficieent since temporary objects are allocated on the stack whenever this is possible. |
|
staticprivate |
References a, j, k, min, n, p, UniformPSDSelfTest::r, RachelsAdvectionDiffusion::U, and oomph::PseudoSolidHelper::Zero.
SplineTraits< Spline< Scalar_, Dim_, Degree_ > >::BasisVectorType Eigen::Spline< Scalar_, Dim_, Degree_ >::basisFunctions | ( | Scalar | u | ) | const |
Computes the non-zero basis functions at the given site.
Splines have local support and a point from their image is defined by exactly \(p+1\) control points \(P_i\) where \(p\) is the spline degree.
This function computes the \(p+1\) non-zero basis function values for a given parameter value \(u\). It returns
\begin{align*} N_{i,p}(u), \hdots, N_{i+p+1,p}(u) \end{align*}
u | Parameter \(u \in [0;1]\) at which the non-zero basis functions are computed. |
References Eigen::Spline< Scalar_, Dim_, Degree_ >::BasisFunctions(), and constants::degree.
|
static |
Returns the spline's non-zero basis functions.
The function computes and returns
\begin{align*} N_{i,p}(u), \hdots, N_{i+p+1,p}(u) \end{align*}
u | The site at which the basis functions are computed. |
degree | The degree of the underlying spline. |
knots | The underlying spline's knot vector. |
References constants::degree, i, j, N, p, UniformPSDSelfTest::r, Eigen::Spline< Scalar_, Dim_, Degree_ >::Span(), tmp, and RachelsAdvectionDiffusion::U.
Referenced by Eigen::Spline< Scalar_, Dim_, Degree_ >::basisFunctions().
|
inline |
Returns the ctrls of the underlying spline.
References Eigen::Spline< Scalar_, Dim_, Degree_ >::m_ctrls.
DenseIndex Eigen::Spline< Scalar_, Dim_, Degree_ >::degree |
SplineTraits< Spline< Scalar_, Dim_, Degree_ >, DerivativeOrder >::DerivativeType Eigen::Spline< Scalar_, Dim_, Degree_ >::derivatives | ( | Scalar | u, |
DenseIndex | order | ||
) | const |
Evaluation of spline derivatives of up-to given order.
The function returns
\begin{align*} \frac{d^i}{du^i}C(u) & = \sum_{i=0}^{n} \frac{d^i}{du^i} N_{i,p}(u)P_i \end{align*}
for i ranging between 0 and order.
u | Parameter \(u \in [0;1]\) at which the spline derivative is evaluated. |
order | The order up to which the derivatives are computed. |
References Eigen::derivativesImpl(), and res.
Referenced by check_global_interpolation_with_derivatives2d().
SplineTraits<Spline, DerivativeOrder>::DerivativeType Eigen::Spline< Scalar_, Dim_, Degree_ >::derivatives | ( | Scalar | u, |
DenseIndex | order = DerivativeOrder |
||
) | const |
Evaluation of spline derivatives of up-to given order.
The function returns
\begin{align*} \frac{d^i}{du^i}C(u) & = \sum_{i=0}^{n} \frac{d^i}{du^i} N_{i,p}(u)P_i \end{align*}
for i ranging between 0 and order.
u | Parameter \(u \in [0;1]\) at which the spline derivative is evaluated. |
order | The order up to which the derivatives are computed. Using the template version of this function is more efficieent since temporary objects are allocated on the stack whenever this is possible. |
|
inline |
Returns the knots of the underlying spline.
References Eigen::Spline< Scalar_, Dim_, Degree_ >::m_knots.
Referenced by eval_spline3d_onbrks().
Spline< Scalar_, Dim_, Degree_ >::PointType Eigen::Spline< Scalar_, Dim_, Degree_ >::operator() | ( | Scalar | u | ) | const |
Returns the spline value at a given site \(u\).
The function returns
\begin{align*} C(u) & = \sum_{i=0}^{n}N_{i,p}P_i \end{align*}
u | Parameter \(u \in [0;1]\) at which the spline is evaluated. |
References constants::degree, and p.
DenseIndex Eigen::Spline< Scalar_, Dim_, Degree_ >::span | ( | Scalar | u | ) | const |
Returns the span within the knot vector in which u is falling.
u | The site for which the span is determined. |
References constants::degree, and Eigen::Spline< Scalar_, Dim_, Degree_ >::Span().
|
static |
Computes the span within the provided knot vector in which u is falling.
References constants::degree.
Referenced by Eigen::Spline< Scalar_, Dim_, Degree_ >::BasisFunctions(), and Eigen::Spline< Scalar_, Dim_, Degree_ >::span().
|
private |
Control points.
Referenced by Eigen::Spline< Scalar_, Dim_, Degree_ >::ctrls().
|
private |
Knot vector.
Referenced by Eigen::Spline< Scalar_, Dim_, Degree_ >::knots(), and Eigen::Spline< Scalar_, Dim_, Degree_ >::Spline().