NURBSCurveWithContinuity< D > Class Template Reference

#include <NURBSCurve.h>

Inheritance diagram for NURBSCurveWithContinuity< D >:

Public Member Functions

 NURBSCurveWithContinuity ()
 
 NURBSCurveWithContinuity (const NURBSCurveWithContinuity< D > &other)
 
template<typename Dummy = Result<void>>
std::enable_if_t< D !=DYNAMICDEGREE, Dummy > Init (Int points, NURBSCURVE_CONTINUITY continuity=NURBSCURVE_CONTINUITY::OPEN)
 
template<typename Dummy = Result<void>>
std::enable_if_t< D==DYNAMICDEGREE, Dummy > Init (Int points, Int degree, NURBSCURVE_CONTINUITY continuity=NURBSCURVE_CONTINUITY::OPEN)
 
Result< VectorEvaluateAt (Float s) const
 
Result< VectorDeriveAt (Float s) const
 
Int GetPointCount () const
 
Result< VectorGetPoint (Int i) const
 
Result< Vector4dGetPointWithWeight (Int i) const
 
const Block< const Vector4dGetPointsWithWeights () const
 
Result< void > SetPoint (Int i, const Vector &point)
 
Result< void > SetPointWithWeight (Int i, const Vector4d &point)
 
Result< void > ChangePoints (const Block< const Vector > &points)
 
Result< void > SetPointsWithWeights (const Block< const Vector4d > &points)
 
Result< void > ChangeWeights (const Block< const Float32 > &weights)
 
Result< void > ChangeWeights (const Block< const Float > &weights)
 
Result< void > SetKnots (NURBSCURVE_KNOTMODE mode)
 
Result< void > SetKnots (const Block< const Float > &knots)
 
Result< void > SetKnots (Block< const Float > &&knots)
 
- Public Member Functions inherited from NURBSCurve< DYNAMICDEGREE >
 NURBSCurve ()
 
 NURBSCurve (const NURBSCurve< D > &other)
 
std::enable_if_t< D !=DYNAMICDEGREE, Dummy > Init (Int points, NURBSCURVE_KNOTMODE mode=NURBSCURVE_KNOTMODE::CLAMPED_UNIFORM)
 
std::enable_if_t< D==DYNAMICDEGREE, Dummy > Init (Int points, Int degree, NURBSCURVE_KNOTMODE mode=NURBSCURVE_KNOTMODE::CLAMPED_UNIFORM)
 
void Reset ()
 
Result< VectorEvaluateAt (Float s) const
 
Result< VectorDeriveAt (Float s) const
 
Result< IntGetDegree () const
 
Result< IntGetMaxDegree () const
 
Int GetPointCount () const
 
Result< IntGetWeightCount () const
 
Result< VectorGetPoint (Int i) const
 
Result< Vector4dGetPointWithWeight (Int i) const
 
const Block< const Vector4dGetPointsWithWeights () const
 
Result< FloatGetWeight (Int i) const
 
const BaseArray< Float > & GetKnots () const
 
NURBSCURVE_KNOTMODE GetKnotMode () const
 
Result< void > SetPoint (Int i, const Vector &point)
 
Result< void > SetPointWithWeight (Int i, const Vector4d &point)
 
Result< void > ChangePoints (const Block< const Vector > &points)
 
Result< void > SetPoints (const Block< const Vector > &points)
 
Result< void > SetPointsWithWeights (const Block< const Vector4d > &points)
 
Result< void > SetWeight (Int i, Float weight)
 
Result< void > ChangeWeights (const Block< const Float32 > &weights)
 
Result< void > ChangeWeights (const Block< const Float > &weights)
 
Result< void > SetKnot (Int i, Float knot)
 
Result< void > SetKnots (NURBSCURVE_KNOTMODE mode)
 
Result< void > SetKnots (const Block< const Float > &knots)
 
Result< void > SetKnots (Block< const Float > &&knots)
 
Result< Pair< Block< Vector4d >, Int > > InsertKnot (Float s, Int nTimes)
 
Result< Pair< Block< Vector4d >, Int > > AddControlPoint (const Float t)
 

Private Types

using Interface = typename NURBSCurve< D >::Interface
 
using ParentType = NURBSCurve< D >
 

Private Member Functions

 MAXON_IMPLEMENTATION_SIMPLE (NURBSCurveWithContinuity)
 
MAXON_ATTRIBUTE_FORCE_INLINE Float AdjustT (Float s) const
 
Result< void > InitInternal (Int numPoints, Int degree, NURBSCURVE_CONTINUITY continuity)
 
template<typename Dummy = Result<void>>
std::enable_if_t< D !=DYNAMICDEGREE, Dummy > CallParentInit (Int numPoints, Int degree, NURBSCURVE_KNOTMODE mode)
 
template<typename Dummy = Result<void>>
std::enable_if_t< D==DYNAMICDEGREE, Dummy > CallParentInit (Int numPoints, Int degree, NURBSCURVE_KNOTMODE mode)
 
template<typename T >
Result< void > ChangeWeightsInternal (const Block< const T > &weights)
 
template<typename T >
Result< void > ChangeKnotsInternal (const Block< const T > &knots)
 

Private Attributes

Int _numPoints
 
NURBSCURVE_CONTINUITY _continuity
 

Additional Inherited Members

- Protected Member Functions inherited from NURBSCurve< DYNAMICDEGREE >
 NURBSCurve (const Interface::MTable &derivedTable)
 
Result< VectorEvaluateAt (Float u, Int span) const
 
Result< VectorDeriveAt (Float u, Int span) const
 
Result< Pair< Block< Vector4d >, Int > > InsertKnot (Float u, Int span, Int nTimes)
 
Float MapStoU (Float s) const
 
Float MapUtoS (Float u) const
 
Float GetUmin () const
 
Float GetUmax () const
 
Result< IntFindSpan (Float u) const
 
Result< KnotInfoGetKnotInfo (Int k)
 
Result< void > CheckForKnotConsistency ()
 
Result< void > InitKnots (NURBSCURVE_KNOTMODE mode)
 
maxon::Result< void > ComputeBasisFunctions (Float u, Int span, Int maxDerivationDegree, detail::SmallStackMatrix< 2+1, D+1, Float > &basisFunctionsOutput) const
 
Result< IntGetKnotCount () const
 
Result< Vector4dCalculatePointFromBasisFunctions (Int span, Int deg, const detail::SmallStackMatrix< 2+1, D+1, Float > &basisFunctions) const
 
Result< void > InitInternal (Int numPoints, Int degree, NURBSCURVE_KNOTMODE mode)
 
Result< void > InitInternal (Int degree, const BaseArray< Vector4d > &points, const BaseArray< Float > &knots)
 
Result< void > InitInternal (const NURBSCurve< OtherN > &other)
 
Result< FloatGetKnot (Int i) const
 
Result< void > ChangeWeightsInternal (const Block< const T > &weights)
 
- Protected Member Functions inherited from NURBSCurveInterface
MAXON_METHOD Result< VectorEvaluateAt (Float s) const
 
MAXON_METHOD Result< VectorDeriveAt (Float s) const
 
MAXON_METHOD Result< IntGetDegree () const
 
MAXON_METHOD Result< IntGetMaxDegree () const
 
MAXON_METHOD Int GetPointCount () const
 
MAXON_METHOD Result< IntGetWeightCount () const
 
MAXON_METHOD Result< VectorGetPoint (Int i) const
 
MAXON_METHOD Result< Vector4dGetPointWithWeight (Int i) const
 
MAXON_METHOD const Block< const Vector4dGetPointsWithWeights () const
 
MAXON_METHOD Result< FloatGetWeight (Int i) const
 
MAXON_METHOD Result< void > SetPoint (Int i, const Vector &point)
 
MAXON_METHOD Result< void > SetPointWithWeight (Int i, const Vector4d &point)
 
MAXON_METHOD Result< void > ChangePoints (const Block< Vector > &points)
 
MAXON_METHOD Result< void > SetPointsWithWeights (const Block< const Vector4d > &points)
 
MAXON_METHOD Result< void > SetWeight (Int i, Float weight)
 
MAXON_METHOD Result< void > ChangeWeights (const Block< const Float > &weights)
 
MAXON_METHOD Result< void > ChangeWeights (const Block< const Float32 > &weights)
 
MAXON_METHOD Result< Pair< Block< Vector4d >, Int > > AddControlPoint (const Float t)
 
- Protected Attributes inherited from NURBSCurve< DYNAMICDEGREE >
Int _curveDegree
 

Member Typedef Documentation

◆ Interface

using Interface = typename NURBSCurve<D>::Interface
private

◆ ParentType

using ParentType = NURBSCurve<D>
private

Constructor & Destructor Documentation

◆ NURBSCurveWithContinuity() [1/2]

◆ NURBSCurveWithContinuity() [2/2]

Member Function Documentation

◆ MAXON_IMPLEMENTATION_SIMPLE()

MAXON_IMPLEMENTATION_SIMPLE ( NURBSCurveWithContinuity< D >  )
private

◆ Init() [1/2]

std::enable_if_t<D != DYNAMICDEGREE, Dummy> Init ( Int  points,
NURBSCURVE_CONTINUITY  continuity = NURBSCURVE_CONTINUITY::OPEN 
)

◆ Init() [2/2]

std::enable_if_t<D == DYNAMICDEGREE, Dummy> Init ( Int  points,
Int  degree,
NURBSCURVE_CONTINUITY  continuity = NURBSCURVE_CONTINUITY::OPEN 
)

◆ EvaluateAt()

Result<Vector> EvaluateAt ( Float  s) const

◆ DeriveAt()

Result<Vector> DeriveAt ( Float  s) const

◆ GetPointCount()

Int GetPointCount ( void  ) const

◆ GetPoint()

Result<Vector> GetPoint ( Int  i) const

◆ GetPointWithWeight()

Result<Vector4d> GetPointWithWeight ( Int  i) const

◆ GetPointsWithWeights()

const Block<const Vector4d> GetPointsWithWeights ( ) const

◆ SetPoint()

Result<void> SetPoint ( Int  i,
const Vector point 
)

◆ SetPointWithWeight()

Result<void> SetPointWithWeight ( Int  i,
const Vector4d point 
)

◆ ChangePoints()

Result<void> ChangePoints ( const Block< const Vector > &  points)

◆ SetPointsWithWeights()

Result<void> SetPointsWithWeights ( const Block< const Vector4d > &  points)

◆ ChangeWeights() [1/2]

Result<void> ChangeWeights ( const Block< const Float32 > &  weights)

◆ ChangeWeights() [2/2]

Result<void> ChangeWeights ( const Block< const Float > &  weights)

◆ SetKnots() [1/3]

Result<void> SetKnots ( NURBSCURVE_KNOTMODE  mode)

◆ SetKnots() [2/3]

Result<void> SetKnots ( const Block< const Float > &  knots)

◆ SetKnots() [3/3]

Result<void> SetKnots ( Block< const Float > &&  knots)

◆ AdjustT()

MAXON_ATTRIBUTE_FORCE_INLINE Float AdjustT ( Float  s) const
private

◆ InitInternal()

Result<void> InitInternal ( Int  numPoints,
Int  degree,
NURBSCURVE_CONTINUITY  continuity 
)
private

◆ CallParentInit() [1/2]

std::enable_if_t<D != DYNAMICDEGREE, Dummy> CallParentInit ( Int  numPoints,
Int  degree,
NURBSCURVE_KNOTMODE  mode 
)
private

◆ CallParentInit() [2/2]

std::enable_if_t<D == DYNAMICDEGREE, Dummy> CallParentInit ( Int  numPoints,
Int  degree,
NURBSCURVE_KNOTMODE  mode 
)
private

◆ ChangeWeightsInternal()

Result<void> ChangeWeightsInternal ( const Block< const T > &  weights)
private

◆ ChangeKnotsInternal()

Result<void> ChangeKnotsInternal ( const Block< const T > &  knots)
private

Member Data Documentation

◆ _numPoints

Int _numPoints
private

◆ _continuity

NURBSCURVE_CONTINUITY _continuity
private