geomc 1.0
A c++ linear algebra template library
Loading...
Searching...
No Matches
BSpline< T, N > Class Template Reference

A cubic spline with four guide points and continuous curvature. More...

#include <geomc/shape/CubicSpline.h>

Inheritance diagram for BSpline< T, N >:
CubicSpline< T, N, BSpline< T, N > > Dimensional< T, N >

Public Types

using elem_t
 The coordinate type of this object.
 
using point_t
 The type of a point in this object's space.
 

Public Member Functions

constexpr BSpline (const VecType< T, N > pts[4])
 Construct the spline from an array of control points.
 
constexpr BSpline (VecType< T, N > s0, VecType< T, N > s1, VecType< T, N > s2, VecType< T, N > s3)
 Construct the spline from four control points.
 
constexpr Vec< T, Nacceleration (T s) const
 Compute the second derivative (acceleration) of the spline at a given parameter value.
 
constexpr Rect< T, Nbounds () const
 Compute the bounding box of the spline.
 
constexpr VecType< T, N > * control_points ()
 
constexpr const VecType< T, N > * control_points () const
 
constexpr operator PolynomialSpline< T, N > () const
 Convert this spline to its coefficient representation.
 
constexpr operator Spline () const
 Convert to another type of cubic spline.
 
constexpr Vec< T, Noperator() (T s) const
 Evaluate the spline at a given parameter value.
 
constexpr Vec< T, Nvelocity (T s) const
 Compute the derivative (velocity) of the spline at a given parameter value.
 

Static Public Member Functions

static constexpr SimpleMatrix< T, 4, 4 > basis ()
 
static constexpr SimpleMatrix< T, 4, 4 > inverse_basis ()
 

Public Attributes

VecType< T, Ns0
 Guide point for s = -1.
 
VecType< T, Ns1
 Guide point for s = 0.
 
VecType< T, Ns2
 Guide point for s = 1.
 
VecType< T, Ns3
 Guide point for s = 2.
 

Static Public Attributes

static constexpr SimpleMatrix< T, 4, 4 > CoefficientsToControl
 
static constexpr SimpleMatrix< T, 4, 4 > ControlToCoefficients
 
static constexpr index_t N
 The dimension of this object.
 

Related Symbols

(Note that these are not member symbols.)

template<typename T, index_t N, Transform< T, N > Xf>
BSpline< T, Noperator* (const Xf &xf, const BSpline< T, N > &spline)
 
template<typename T, index_t N, Transform< T, N > Xf>
BSpline< T, Noperator/ (const BSpline< T, N > &spline, const Xf &xf)
 

Detailed Description

template<typename T, index_t N>
class geom::BSpline< T, N >

A cubic spline with four guide points and continuous curvature.

The curve does not necessarily pass through the guide points. Concatenated B-splines which share three consecutive guide points are continuous in position, velocity, and curvature.

Member Typedef Documentation

◆ point_t

using point_t
inherited

The type of a point in this object's space.

An N-vector of T if N > 1, otherwise a T.

Member Data Documentation

◆ CoefficientsToControl

template<typename T, index_t N>
SimpleMatrix<T,4,4> CoefficientsToControl
staticconstexpr
Initial value:
= {
{3, -3, 2, 0},
{3, 0, -1, 0},
{3, 3, 2, 0},
{3, 6, 11, 18},
}

◆ ControlToCoefficients

template<typename T, index_t N>
SimpleMatrix<T,4,4> ControlToCoefficients
staticconstexpr
Initial value:
= {
{ 1, 4, 1, 0},
{-3, 0, 3, 0},
{ 3, -6, 3, 0},
{-1, 3, -3, 1},
}

The documentation for this class was generated from the following file: