23 #if !defined(OPENNURBS_NURBSCURVE_INC_)
24 #define OPENNURBS_NURBSCURVE_INC_
26 #include <pcl/pcl_exports.h>
51 ON_BOOL32 bIsRational,
76 ON_BOOL32 bIsRational,
82 unsigned int SizeOf()
const;
85 ON__UINT32
DataCRC(ON__UINT32 current_remainder)
const;
101 bool bIgnoreParameterization,
102 double tolerance = ON_ZERO_TOLERANCE
107 void Initialize(
void);
118 ON_BOOL32 bIsRational,
134 bool CreateClampedUniformNurbs(
139 double knot_delta = 1.0
153 bool CreatePeriodicUniformNurbs(
158 double knot_delta = 1.0
361 double tolerance = ON_ZERO_TOLERANCE
390 double tolerance = ON_ZERO_TOLERANCE
397 double tolerance = ON_ZERO_TOLERANCE
404 double tolerance = ON_ZERO_TOLERANCE
467 double cos_angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE_COSINE,
468 double curvature_tolerance=ON_SQRT_EPSILON
508 double point_tolerance=ON_ZERO_TOLERANCE,
509 double d1_tolerance=ON_ZERO_TOLERANCE,
510 double d2_tolerance=ON_ZERO_TOLERANCE,
511 double cos_angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE_COSINE,
512 double curvature_tolerance=ON_SQRT_EPSILON
627 double knot_tolerance=0.0,
682 double tolerance = 0.0,
772 ON::point_style CVStyle()
const;
859 int KnotMultiplicity(
870 const double* Knot()
const;
884 bool MakeClampedUniformKnotVector(
900 bool MakePeriodicUniformKnotVector(
908 double SuperfluousKnot(
912 double GrevilleAbcissa(
916 bool GetGrevilleAbcissae(
943 int knot_multiplicity
948 bool MakeNonRational();
955 int desired_dimension
962 bool ReserveCVCapacity(
965 bool ReserveKnotCapacity(
971 double ControlPolygonLength()
const;
978 bool ConvertSpanToBezier(
1007 bool IsSingular()
const;
1037 int RemoveSingularSpans();
1042 bool HasBezierSpans()
const;
1055 bool MakePiecewiseBezier(
1056 bool bSetEndWeightsToOne =
false
1077 bool ChangeEndWeights(
double w0,
double w1 );
1099 bool Reparameterize(
double c );
virtual ON_BOOL32 GetNurbFormParameterFromCurveParameter(double curve_t, double *nurbs_t) const
virtual ON_BOOL32 SetEndPoint(ON_3dPoint end_point)
virtual ON__UINT32 DataCRC(ON__UINT32 current_remainder) const
virtual ON_BOOL32 GetCurveParameterFromNurbFormParameter(double nurbs_t, double *curve_t) const
virtual ON_BOOL32 IsValid(ON_TextLog *text_log=NULL) const =0
virtual bool MakeDeformable()
virtual ON_BOOL32 Transform(const ON_Xform &xform)
bool SetDomain(ON_Interval domain)
virtual ON_BOOL32 Read(ON_BinaryArchive &binary_archive)
virtual ON_BOOL32 GetSpanVector(double *knots) const =0
virtual ON_Interval Domain() const =0
virtual int IsPolyline(ON_SimpleArray< ON_3dPoint > *pline_points=NULL, ON_SimpleArray< double > *pline_t=NULL) const
virtual ON_BOOL32 IsLinear(double tolerance=ON_ZERO_TOLERANCE) const
virtual ON_BOOL32 IsPlanar(ON_Plane *plane=NULL, double tolerance=ON_ZERO_TOLERANCE) const
virtual ON_BOOL32 Reverse()=0
virtual ON_BOOL32 Write(ON_BinaryArchive &binary_archive) const
virtual void Dump(ON_TextLog &) const
virtual int Degree() const =0
virtual bool Extend(const ON_Interval &domain)
virtual ON_BOOL32 IsArc(const ON_Plane *plane=NULL, ON_Arc *arc=NULL, double tolerance=ON_ZERO_TOLERANCE) const
virtual ON_BOOL32 GetBBox(double *boxmin, double *boxmax, int bGrowBox=false) const =0
virtual bool IsDeformable() const
virtual ON_BOOL32 IsInPlane(const ON_Plane &test_plane, double tolerance=ON_ZERO_TOLERANCE) const =0
virtual ON_BOOL32 GetParameterTolerance(double t, double *tminus, double *tplus) const
virtual ON_BOOL32 IsPeriodic() const
virtual bool GetNextDiscontinuity(ON::continuity c, double t0, double t1, double *t, int *hint=NULL, int *dtype=NULL, double cos_angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE_COSINE, double curvature_tolerance=ON_SQRT_EPSILON) const
unsigned int SizeOf() const
virtual ON_BOOL32 IsClosed() const
virtual ON_BOOL32 SetStartPoint(ON_3dPoint start_point)
virtual ON_BOOL32 Split(double t, ON_Curve *&left_side, ON_Curve *&right_side) const
virtual bool IsContinuous(ON::continuity c, double t, int *hint=NULL, double point_tolerance=ON_ZERO_TOLERANCE, double d1_tolerance=ON_ZERO_TOLERANCE, double d2_tolerance=ON_ZERO_TOLERANCE, double cos_angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE_COSINE, double curvature_tolerance=ON_SQRT_EPSILON) const
virtual ON_BOOL32 Trim(const ON_Interval &domain)
virtual ON_BOOL32 ChangeClosedCurveSeam(double t)
virtual int Dimension() const =0
virtual bool ChangeDimension(int desired_dimension)
virtual ON_BOOL32 SwapCoordinates(int i, int j)
virtual int SpanCount() const =0
virtual ON_BOOL32 Evaluate(double t, int der_count, int v_stride, double *v, int side=0, int *hint=0) const =0
ON_Curve & operator=(const ON_Curve &)
virtual int HasNurbForm() const
virtual int GetNurbForm(ON_NurbsCurve &nurbs_curve, double tolerance=0.0, const ON_Interval *subdomain=NULL) const