Rhino C++ API  8.6
Public Member Functions | Public Attributes | List of all members
ON_CurveTreeBezier Class Reference

#include <opennurbs_plus.h>

Inheritance diagram for ON_CurveTreeBezier:
ON_BezierCurve

Public Member Functions

 ON_CurveTreeBezier ()
 
 ON_CurveTreeBezier (const ON_BezierCurve &bezier_curve)
 
bool IsFartherThan (double d, const class ON_BoundingBox &box) const
 
bool IsFartherThan (double d, const class ON_CurveTreeBezier &other) const
 
bool IsFartherThan (double d, const class ON_SurfaceTreeBezier &other) const
 
double MaximumDistanceTo (const ON_CurveTreeBezier &other) const
 
double MaximumDistanceTo (const ON_SurfaceTreeBezier &other) const
 
double MinimumDistanceTo (const ON_CurveTreeBezier &other) const
 
double MinimumDistanceTo (const ON_SurfaceTreeBezier &other) const
 
bool SetBezier (const ON_BezierCurve &bezier_curve)
 
bool SetLeafBox ()
 
- Public Member Functions inherited from ON_BezierCurve
 ON_BezierCurve ()
 
 ON_BezierCurve (const ON_2dPointArray &)
 sets control points More...
 
 ON_BezierCurve (const ON_3dPointArray &)
 sets control points More...
 
 ON_BezierCurve (const ON_4dPointArray &)
 sets control points More...
 
 ON_BezierCurve (const ON_BezierCurve &)
 
 ON_BezierCurve (const ON_PolynomialCurve &)
 
 ON_BezierCurve (int dim, bool bIsRational, int order)
 
 ~ON_BezierCurve ()
 
ON_BoundingBox BoundingBox () const
 
bool ChangeDimension (int desired_dimension)
 
bool ChangeWeights (int i0, double w0, int i1, double w1)
 
const ON_4dPoint ControlPoint (int cv_index) const
 
double ControlPolygonLength () const
 
bool Create (int dim, bool bIsRational, int order)
 
ON_3dVector CurvatureAt (double t) const
 
double * CV (int cv_index) const
 
int CVCount () const
 
int CVSize () const
 
ON::point_style CVStyle () const
 
int Degree () const
 
ON_3dVector DerivativeAt (double t) const
 
void Destroy ()
 
int Dimension () const
 
ON_Interval Domain () const
 
void Dump (ON_TextLog &) const
 for debugging More...
 
void EmergencyDestroy ()
 call if memory used by ON_NurbsCurve becomes invalid More...
 
bool Ev1Der (double t, ON_3dPoint &point, ON_3dVector &first_derivative) const
 
bool Ev2Der (double t, ON_3dPoint &point, ON_3dVector &first_derivative, ON_3dVector &second_derivative) const
 
bool Evaluate (double t, int der_count, int v_stride, double *v) const
 
bool EvCurvature (double t, ON_3dPoint &point, ON_3dVector &tangent, ON_3dVector &kappa) const
 
bool EvPoint (double t, ON_3dPoint &point) const
 
bool EvTangent (double t, ON_3dPoint &point, ON_3dVector &tangent) const
 
int FindRoots (double *root, double tol=ON_ZERO_TOLERANCE) const
 
bool GetBBox (double *box_min, double *box_max, bool bGrowBox=false) const
 
bool GetBoundingBox (ON_BoundingBox &bbox, int bGrowBox=false) const
 
bool GetClosestPoint (ON_3dPoint P, double *t, double maximum_distance=0.0, const ON_Interval *sub_domain=0) const
 
bool GetCV (int cv_index, ON::point_style pointstyle, double *cv) const
 
bool GetCV (int cv_index, ON_3dPoint &point) const
 
bool GetCV (int cv_index, ON_4dPoint &point) const
 
bool GetLocalClosestPoint (ON_3dPoint P, double seed_parameter, double *t, const ON_Interval *sub_domain=0) const
 
bool GetLocalCurveIntersection (const ON_BezierCurve *other_bezcrv, double this_seed_t, double other_seed_t, double *this_t, double *other_t, const ON_Interval *this_domain=0, const ON_Interval *other_domain=0) const
 
bool GetLocalSurfaceIntersection (const ON_BezierSurface *bezsrf, double seed_t, double seed_u, double seed_v, double *t, double *u, double *v, const ON_Interval *tdomain=0, const ON_Interval *udomain=0, const ON_Interval *vdomain=0) const
 
int GetNurbForm (ON_NurbsCurve &nurbs_curve) const
 
bool GetTightBoundingBox (ON_BoundingBox &tight_bbox, bool bGrowBox=false, const ON_Xform *xform=nullptr) const
 
bool IncreaseDegree (int desired_degree)
 
int IntersectCurve (const ON_BezierCurve *bezierB, ON_SimpleArray< ON_X_EVENT > &x, double intersection_tolerance=0.0, double overlap_tolerance=0.0, const ON_Interval *bezierA_domain=0, const ON_Interval *bezierB_domain=0) const
 
int IntersectSelf (ON_SimpleArray< ON_X_EVENT > &x, double intersection_tolerance=0.0) const
 
int IntersectSurface (const ON_BezierSurface *bezsrfB, ON_SimpleArray< ON_X_EVENT > &x, double intersection_tolerance=0.0, double overlap_tolerance=0.0, const ON_Interval *bezierA_domain=0, const ON_Interval *bezsrfB_udomain=0, const ON_Interval *bezsrfB_vdomain=0) const
 
bool IsRational () const
 
bool IsValid () const
 
bool Loft (const ON_3dPointArray &points)
 
bool Loft (int pt_dim, int pt_count, int pt_stride, const double *pt, int t_stride, const double *t)
 
bool MakeNonRational ()
 
bool MakeRational ()
 
bool Morph (const ON_SpaceMorph &morph)
 
ON_BezierCurve operator* (const ON_BezierCurve &B) const
 
ON_BezierCurve operator* (double a) const
 
ON_BezierCurve operator+ (const double *v) const
 
ON_BezierCurve operator+ (const ON_BezierCurve &B) const
 
ON_BezierCurve operator+ (ON_3dVector v) const
 Arithmetic operations. More...
 
ON_BezierCurve operator- (const double *v) const
 
ON_BezierCurve operator- (const ON_BezierCurve &crv) const
 
ON_BezierCurve operator- (ON_3dVector v) const
 
ON_BezierCurveoperator= (const ON_2dPointArray &)
 sets control points More...
 
ON_BezierCurveoperator= (const ON_3dPointArray &)
 sets control points More...
 
ON_BezierCurveoperator= (const ON_4dPointArray &)
 sets control points More...
 
ON_BezierCurveoperator= (const ON_BezierCurve &)
 
ON_BezierCurveoperator= (const ON_PolynomialCurve &)
 
int Order () const
 order = degree + 1 More...
 
ON_3dPoint PointAt (double t) const
 
bool Reparameterize (double c)
 
bool Reparametrize (double)
 
bool ReserveCVCapacity (int desired_cv_capacity)
 Tools for managing CV and knot memory. More...
 
bool Reverse ()
 
bool Rotate (double rotation_angle, const ON_3dVector &rotation_axis, const ON_3dPoint &rotation_center)
 
bool Rotate (double sin_angle, double cos_angle, const ON_3dVector &rotation_axis, const ON_3dPoint &rotation_center)
 
bool Scale (double scale_factor)
 
bool ScaleConrolPoints (int i, double w)
 
bool SetCV (int cv_index, const ON_3dPoint &point)
 
bool SetCV (int cv_index, const ON_4dPoint &point)
 
bool SetCV (int cv_index, ON::point_style pointstyle, const double *cv)
 
bool SetWeight (int cv_index, double weight)
 
bool Split (double t, ON_BezierCurve &left_side, ON_BezierCurve &right_side) const
 
ON_3dVector TangentAt (double t) const
 
bool Transform (const ON_Xform &xform)
 
bool Translate (const ON_3dVector &translation_vector)
 
bool Trim (const ON_Interval &interval)
 
double Weight (int cv_index) const
 
bool ZeroCVs ()
 

Public Attributes

ON_CurveLeafBox m_leafbox
 
- Public Attributes inherited from ON_BezierCurve
double * m_cv
 The i-th cv begins at cv[i*m_cv_stride]. More...
 
int m_cv_capacity
 
int m_cv_stride
 Number of doubles per cv ( >= ((m_is_rat)?m_dim+1:m_dim) ) More...
 
int m_dim
 Implementation. More...
 
int m_is_rat
 1 if bezier is rational, 0 if bezier is not rational More...
 
int m_order
 order = degree+1 More...
 

Additional Inherited Members

- Static Public Member Functions inherited from ON_BezierCurve
static ON_BezierCurve CrossProduct (const ON_BezierCurve &A, ON_3dVector V)
 
static ON_BezierCurve Derivative (const ON_BezierCurve &A)
 
static bool Derivative (const ON_BezierCurve &A, ON_BezierCurve &derivativeA)
 
static ON_BezierCurve DotProduct (const ON_BezierCurve &A, const double *B)
 
static ON_BezierCurve DotProduct (const ON_BezierCurve &A, const ON_BezierCurve &B)
 
static ON_BezierCurve DotProduct (const ON_BezierCurve &A, ON_3dVector B)
 

Constructor & Destructor Documentation

◆ ON_CurveTreeBezier() [1/2]

ON_CurveTreeBezier::ON_CurveTreeBezier ( )

C++ defaults for destruction, copy construction, and operator= work fine.

◆ ON_CurveTreeBezier() [2/2]

ON_CurveTreeBezier::ON_CurveTreeBezier ( const ON_BezierCurve bezier_curve)

Description: Copy constructs the bezier_curve and then sets the leaf box.

Member Function Documentation

◆ IsFartherThan() [1/3]

bool ON_CurveTreeBezier::IsFartherThan ( double  d,
const class ON_BoundingBox box 
) const

◆ IsFartherThan() [2/3]

bool ON_CurveTreeBezier::IsFartherThan ( double  d,
const class ON_CurveTreeBezier other 
) const

Description: Quickly determine if the shortest distance from the bezier surface to this bezier curve is greater than d. Parameters: d - [in] distance (> 0.0) other - [in] Returns: True if the shortest distance from the other bezier to this bezier curve is greater than d. It is not the case that false means that the shortest distance is less than or equal to d.

◆ IsFartherThan() [3/3]

bool ON_CurveTreeBezier::IsFartherThan ( double  d,
const class ON_SurfaceTreeBezier other 
) const

◆ MaximumDistanceTo() [1/2]

double ON_CurveTreeBezier::MaximumDistanceTo ( const ON_CurveTreeBezier other) const

Description: Quickly find an upper bound on the distance between the two bezier curves. Parameters: other - [in] another bezier curve Returns: A distance that is greater than or equal to the longest distance from this curve to the other curve. Put another way, if Q is any point on this bezier curve and P is any point on the other bezier curve, then then P.DistanceTo(Q) <= MaximumDistanceTo(other).

◆ MaximumDistanceTo() [2/2]

double ON_CurveTreeBezier::MaximumDistanceTo ( const ON_SurfaceTreeBezier other) const

◆ MinimumDistanceTo() [1/2]

double ON_CurveTreeBezier::MinimumDistanceTo ( const ON_CurveTreeBezier other) const

Description: Quickly find a lower bound on the distance between the two bezier curves. Parameters: other - [in] another bezier curve Returns: A distance that is less than or equal to the shortest distance from this curve to the other curve. Put another way, if Q is any point on this bezier curve and P is any point on the other bezier curve, then then P.DistanceTo(Q) >= MinimumDistanceTo(other).

◆ MinimumDistanceTo() [2/2]

double ON_CurveTreeBezier::MinimumDistanceTo ( const ON_SurfaceTreeBezier other) const

◆ SetBezier()

bool ON_CurveTreeBezier::SetBezier ( const ON_BezierCurve bezier_curve)

Description: Sets the bezier curve and its leaf box. Parameters: bezier_curve - [in] Returns: True if bezier_curve is valid. See Also: ON_CurveTreeBezier::SetLeafBox

◆ SetLeafBox()

bool ON_CurveTreeBezier::SetLeafBox ( )

Description: Sets m_leafbox to be the smallest curve leaf box that contains this bezier curve. Returns: True if this bezier is valid and the leaf box is set.

Member Data Documentation

◆ m_leafbox

ON_CurveLeafBox ON_CurveTreeBezier::m_leafbox