12 #include "ndCoreStdafx.h"
14 #include "ndClassAlloc.h"
16 #ifndef __ND_BEZIER_SPLINE_H__
17 #define __ND_BEZIER_SPLINE_H__
32 D_CORE_API ndInt32 GetDegree ()
const;
34 D_CORE_API
ndBigVector CurvePoint (ndFloat64 u)
const;
35 D_CORE_API
ndBigVector CurveDerivative (ndFloat64 u, ndInt32 index = 1)
const;
36 D_CORE_API ndInt32 CurveAllDerivatives (ndFloat64 u,
ndBigVector*
const defivatives)
const;
38 D_CORE_API ndFloat64 CalculateLength (ndFloat64 tol)
const;
41 D_CORE_API
void CreateFromKnotVectorAndControlPoints (ndInt32 degree, ndInt32 knotCount,
const ndFloat64*
const knotVector,
const ndBigVector*
const controlPoints);
43 D_CORE_API
void InsertKnot (ndFloat64 u);
44 D_CORE_API
bool RemoveKnot (ndFloat64 u, ndFloat64 tol);
46 D_CORE_API ndInt32 GetControlPointCount()
const;
50 D_CORE_API
ndBigVector GetControlPoint(ndInt32 i)
const;
51 D_CORE_API
void SetControlPoint(ndInt32 i,
const ndBigVector& point);
53 D_CORE_API ndInt32 GetKnotCount()
const;
57 D_CORE_API ndFloat64 GetKnot(ndInt32 i)
const;
58 D_CORE_API ndFloat64 FindClosestKnot (
ndBigVector& closestPointOnCurve,
const ndBigVector& point, ndInt32 subdivitionSteps = 2)
const;
60 D_CORE_API
void Trace()
const;
65 ndInt32 GetSpan(ndFloat64 u)
const;
67 ndBigVector CurvePoint (ndFloat64 u, ndInt32 span)
const;
68 void CreateCubicKnotVector(ndInt32 count,
const ndBigVector*
const points);
71 void BasicsFunctions (ndFloat64 u, ndInt32 span, ndFloat64*
const functionOut)
const;
72 void BasicsFunctionsDerivatives (ndFloat64 u, ndInt32 span, ndFloat64*
const derivatyivesOut)
const;
79 ndInt32 m_controlPointsCount;