INOS
CINOSNurbsCurve< N > Class Template Reference

Classes

struct  SPreviousCache
 

Public Types

typedef TINOSVector< N > _array_vector[DF_INOS_NURBSCURVE_MAX_DEGREE+1]
 get auLevel derivative at param 'adU' (The NURBS book, page 93, A3.2)
 

Public Member Functions

void AddPoint (CINOSNurbsPoint< N > &aPoint)
 add control point to curve
 
void AddPoint (TINOSVector< N > &aPoint)
 add control point to curve
 
void AddKnot (double adKnot, uint32 auMultiplicity)
 add knot to curve
 
void SetPoints (uint32 auPoints)
 set number of control points
 
uint32 GetPoints ()
 get number of control points
 
void SetInterpolationPoints (uint32 auInterpolationPoints)
 set number of interpolation points
 
uint32 Check ()
 check curve
 
double GetLength ()
 get curve length
 
uint32 Prepare ()
 
virtual void GetPosition (double adP, TINOSVector< N > &ovPos)
 get position at 'adP'
 
virtual void GetPosition (double adP, TINOSVector< N > &ovPos, uint32 &auSegment)
 get position at 'adP'
 
virtual void GetPositionFirst (TINOSVector< N > &ovPos)
 get first position
 
virtual void GetPositionLast (TINOSVector< N > &ovPos)
 get last position
 
void GetLocalPositionU (double adU, TINOSVector< N > &ovPos)
 get position at param 'adU' (The NURBS book, page 124, A4.1)
 
void GetPositionU (double adU, TINOSVector< N > &ovPos)
 get position at param 'adU' (The NURBS book, page 124, A4.1)
 
virtual void GetPositionU (double adU, TINOSVector< N > &ovPos, uint32 auUSpan)
 get position at param 'adU' (The NURBS book, page 124, A4.1)
 
virtual void GetDerivative (uint32 auLevel, double adP, TINOSVector< N > &ovDer)
 get auLevel derivative at 'adP'
 
virtual void GetDerivativeBgn (uint32 auLevel, TINOSVector< N > &ovDer)
 get auLevel derivative at curve begin
 
virtual void GetDerivativeEnd (uint32 auLevel, TINOSVector< N > &ovDer)
 get auLevel derivative at curve end
 
virtual void GetDerivativeU (uint32 auLevel, double adU, TINOSVector< N > &ovDer)
 
virtual void GetD2max (TINOSVector< N > &ovD2Max)
 get max. second derivative over the whole curve
 
virtual void GetD3max (TINOSVector< N > &ovD3Max)
 get max. 3rd derivative over the whole curve
 
double GetGlobalU (double adP)
 approximately project P tu U
 
double GetLocalU (double adP, uint32 auChannel)
 
 CINOSNurbsCurve (uint32 auDegree=DF_INOS_NURBSCURVE_MAX_DEGREE, uint32 auInterpolationPoints=DF_INOS_NURBSCURVE_INTERPOLATION_POINTS, uint32 auLengthMask=0xFFFFFFF8)
 constructor
 
virtual ~CINOSNurbsCurve ()
 destructor
 

Static Public Attributes

static constexpr double d43 = 4.0/3.0
 
static constexpr double d13 = 1.0/3.0
 

Protected Types

enum  { eFlgPrepared = 0x00000001 , eFlgCustomWeight = 0x00000002 , eFlgZeroWeight = 0x00000004 , eFlgCurveValid = 0x00000008 }
 
enum  { eCnsMaxChannels = 4 }
 

Protected Member Functions

uint32 FindSpan (double u) const
 determine the knot span index (The NURBS book, page 68, A2.1)
 
void BasisFuns (double u, uint32 i, _vector &Nb) const
 compute the nonvanishing basis functions (The NURBS book, page 70, A2.2)
 
void DersBasisFuns (uint32 n, double u, uint32 span, _matrix &ders) const
 compute nonzero basis functions and their derivatives (The NURBS book, page 72, A2.3)
 
void CurveDerivs (double u, uint32 d, _array_vector &ck)
 compute curve derivatives (The NURBS book, page 93, A3.2)
 
uint32 GetSegment (uint32 auChannel, double adP, TINOSVector< N > &ovPos)
 
 DECLARE_DYNAMIC_N (CINOSNurbsCurve, N)
 

Protected Attributes

uint32 m_uFlags = eFlgZeroWeight
 flags
 
uint32 D = 1
 curve degree
 
const uint32 m_uLengthMask = 0xFFFFFFF8
 length mask (bit = 1 -> axis is not length relevant)
 
uint32 m_uInterpolationPoints = DF_INOS_NURBSCURVE_INTERPOLATION_POINTS
 curve interpolation points
 
double m_dLength = std::numeric_limits<double>::quiet_NaN()
 curve length
 
inos_std::vector< CINOSNurbsPoint< N > > P
 control points
 
inos_std::vector< double > U
 knot vector
 
uint8 m_uLengthDims [N]
 length relevant dimensions indices
 
uint8 m_uNoLengthDims
 numeber of length relevant dimensions
 
struct CINOSNurbsCurve::SPreviousCache m_sPreviousCache [eCnsMaxChannels]
 
inos_std::vector< CINOSSpline * > m_UofPs
 

Friends

class CINOSMovePath
 

Member Function Documentation

◆ CurveDerivs()

template<int N>
void CINOSNurbsCurve< N >::CurveDerivs ( double  u,
uint32  d,
_array_vector ck 
)
inlineprotected

compute curve derivatives (The NURBS book, page 93, A3.2)

compute ratinal curve derivatives (The NURBS book, page 127, A4.2)


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