23 #if !defined(OPENNURBS_CURVE_INC_)
24 #define OPENNURBS_CURVE_INC_
157 int bGrowBox =
false,
229 int desired_dimension
261 int* span_vector_index,
295 double tolerance = ON_ZERO_TOLERANCE
335 double tolerance = ON_ZERO_TOLERANCE
364 double tolerance = ON_ZERO_TOLERANCE,
373 double tolerance = ON_ZERO_TOLERANCE
388 double tolerance = ON_ZERO_TOLERANCE
402 double tolerance = ON_ZERO_TOLERANCE
423 double min_abs_size = 0.0,
424 double min_rel_size = 10.0
503 double cos_angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE_COSINE,
504 double curvature_tolerance=ON_SQRT_EPSILON
545 double point_tolerance=ON_ZERO_TOLERANCE,
546 double d1_tolerance=ON_ZERO_TOLERANCE,
547 double d2_tolerance=ON_ZERO_TOLERANCE,
548 double cos_angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE_COSINE,
549 double curvature_tolerance=ON_SQRT_EPSILON
996 double tolerance = 0.0,
1047 double tolerance = 0.0,
1128 double RelTol=ON_SQRT_EPSILON)
const;
1133 #if defined(ON_DLL_TEMPLATE)
1137 #pragma warning( push )
1138 #pragma warning( disable : 4231 )
1140 #pragma warning( pop )
1175 int bGrowBox =
false,
1216 bool ON_ForceMatchCurveEnds(
1246 bool bPreserveDirection =
false,
1375 int ON_ClosedCurveOrientation(
const ON_Curve& curve,
const ON_Xform* xform );
bool GetTightBoundingBox(ON_BoundingBox &tight_bbox, int bGrowBox=false, const ON_Xform *xform=0) const
bool Duplicate(ON_CurveArray &) const
bool Read(ON_BinaryArchive &)
bool Write(ON_BinaryArchive &) 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
bool IsClosable(double tolerance, double min_abs_size=0.0, double min_rel_size=10.0) const
virtual ON_BOOL32 GetParameterTolerance(double t, double *tminus, double *tplus) const
virtual ON_BOOL32 Trim(const ON_Interval &domain)
void DestroyRuntimeCache(bool bDelete=true)
ON_3dVector DerivativeAt(double t) const
virtual ON_BOOL32 SetStartPoint(ON_3dPoint start_point)
virtual ON_BOOL32 Split(double t, ON_Curve *&left_side, ON_Curve *&right_side) const
bool GetTightBoundingBox(ON_BoundingBox &tight_bbox, int bGrowBox=false, const ON_Xform *xform=0) const
ON_3dPoint PointAtEnd() const
virtual int HasNurbForm() const
virtual ON_BOOL32 ChangeClosedCurveSeam(double t)
virtual ON_BOOL32 Evaluate(double t, int der_count, int v_stride, double *v, int side=0, int *hint=0) const =0
virtual int Degree() const =0
ON_Curve(const ON_Curve &)
bool IsArcAt(double t, const ON_Plane *plane=0, ON_Arc *arc=0, double tolerance=ON_ZERO_TOLERANCE, double *t0=0, double *t1=0) const
unsigned int SizeOf() const
virtual ON_BOOL32 SetEndPoint(ON_3dPoint end_point)
virtual ON_BOOL32 GetSpanVectorIndex(double t, int side, int *span_vector_index, ON_Interval *span_domain) const
virtual int IsPolyline(ON_SimpleArray< ON_3dPoint > *pline_points=NULL, ON_SimpleArray< double > *pline_t=NULL) const
virtual ON_BOOL32 SetDomain(double t0, double t1)
ON_BOOL32 Ev2Der(double t, ON_3dPoint &point, ON_3dVector &first_derivative, ON_3dVector &second_derivative, int side=0, int *hint=0) const
virtual ON_BOOL32 GetNurbFormParameterFromCurveParameter(double curve_t, double *nurbs_t) const
ON_BOOL32 EvTangent(double t, ON_3dPoint &point, ON_3dVector &tangent, int side=0, int *hint=0) const
virtual ON_BOOL32 GetCurveParameterFromNurbFormParameter(double nurbs_t, double *curve_t) const
virtual int GetNurbForm(ON_NurbsCurve &nurbs_curve, double tolerance=0.0, const ON_Interval *subdomain=NULL) const
bool FirstSpanIsLinear(double min_length, double tolerance, ON_Line *span_line) const
ON_BOOL32 EvPoint(double t, ON_3dPoint &point, int side=0, int *hint=0) const
ON_3dVector TangentAt(double t) const
virtual ON_BOOL32 IsClosed() const
ON_Curve & operator=(const ON_Curve &)
ON_3dVector CurvatureAt(double t) const
virtual bool IsEllipse(const ON_Plane *plane=NULL, ON_Ellipse *ellipse=NULL, double tolerance=ON_ZERO_TOLERANCE) const
ON::object_type ObjectType() const
virtual ON_BOOL32 IsLinear(double tolerance=ON_ZERO_TOLERANCE) const
virtual ON_Curve * DuplicateCurve() const
virtual bool ChangeDimension(int desired_dimension)
ON_3dPoint PointAtStart() const
ON_3dPoint PointAt(double t) 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 IsPeriodic() const
virtual ON_BOOL32 Reverse()=0
ON_BOOL32 FrameAt(double t, ON_Plane &plane) const
virtual ON_BOOL32 IsArc(const ON_Plane *plane=NULL, ON_Arc *arc=NULL, double tolerance=ON_ZERO_TOLERANCE) const
bool SetDomain(ON_Interval domain)
bool FirstSpanIsLinear(double min_length, double tolerance) const
virtual int SpanCount() const =0
virtual ON_BOOL32 GetSpanVector(double *knots) const =0
ON_BOOL32 EvCurvature(double t, ON_3dPoint &point, ON_3dVector &tangent, ON_3dVector &kappa, int side=0, int *hint=0) const
virtual bool Extend(const ON_Interval &domain)
bool LastSpanIsLinear(double min_length, double tolerance, ON_Line *span_line) const
bool LastSpanIsLinear(double min_length, double tolerance) const
ON_BOOL32 Ev1Der(double t, ON_3dPoint &point, ON_3dVector &first_derivative, int side=0, int *hint=0) const
ON_BOOL32 GetDomain(double *t0, double *t1) const
virtual ON_Interval Domain() const =0
bool ParameterSearch(double t, int &index, bool bEnableSnap, const ON_SimpleArray< double > &m_t, double RelTol=ON_SQRT_EPSILON) const
virtual ON_BOOL32 IsInPlane(const ON_Plane &test_plane, double tolerance=ON_ZERO_TOLERANCE) const =0
ON_NurbsCurve * NurbsCurve(ON_NurbsCurve *pNurbsCurve=NULL, double tolerance=0.0, const ON_Interval *subdomain=NULL) const
virtual ON_BOOL32 IsPlanar(ON_Plane *plane=NULL, double tolerance=ON_ZERO_TOLERANCE) const
bool EvaluatePoint(const class ON_ObjRef &objref, ON_3dPoint &P) const