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

#include <opennurbs_plus.h>

Inheritance diagram for ON_SurfaceTreeBezier:
ON_BezierSurface

Public Member Functions

 ON_SurfaceTreeBezier ()
 
 ON_SurfaceTreeBezier (const ON_BezierSurface &bezier_surface)
 
bool IsFartherThan (double d, const ON_3dPoint &P) const
 
bool IsFartherThan (double d, const ON_BoundingBox &bbox) const
 
bool IsFartherThan (double d, const ON_CurveTreeBezier &other) const
 
bool IsFartherThan (double d, const ON_SurfaceTreeBezier &other) const
 
double MaximumDistanceTo (const class ON_SurfaceTreeBezier &stbez) const
 
double MaximumDistanceTo (const ON_CurveTreeBezier &other) const
 
double MaximumDistanceTo (ON_3dPoint P) const
 
double MaximumDistanceTo (ON_BoundingBox bbox) const
 
double MinimumDistanceTo (const class ON_SurfaceTreeBezier &stbez) const
 
double MinimumDistanceTo (const ON_CurveTreeBezier &other) const
 
double MinimumDistanceTo (ON_3dPoint P) const
 
double MinimumDistanceTo (ON_BoundingBox bbox) const
 
bool SetBezier (const ON_BezierSurface &bezier_surface)
 
bool SetLeafBox ()
 
- Public Member Functions inherited from ON_BezierSurface
 ON_BezierSurface ()
 
 ON_BezierSurface (const ON_BezierSurface &)
 
 ON_BezierSurface (const ON_PolynomialSurface &)
 
 ON_BezierSurface (int dim, bool is_rat, int order0, int order1)
 
 ~ON_BezierSurface ()
 
ON_BoundingBox BoundingBox () const
 
bool Create (int dim, bool is_rat, int order0, int order1)
 
double * CV (int cv_index0, int cv_index1) const
 
int CVSize () const
 
ON::point_style CVStyle () const
 
int Degree (int) const
 
void Destroy ()
 
int Dimension () const
 
ON_Interval Domain (int) const
 
void Dump (ON_TextLog &) const
 for debugging More...
 
void EmergencyDestroy ()
 call if memory used by ON_NurbsCurve becomes invalid More...
 
bool Evaluate (double, double, int, int, double *) const
 
bool GetBBox (double *, double *, bool bGrowBox=false) const
 
bool GetBoundingBox (ON_BoundingBox &bbox, int bGrowBox) const
 
bool GetClosestPoint (ON_3dPoint P, double *s, double *t, double maximum_distance=0.0, const ON_Interval *sub_domain0=0, const ON_Interval *sub_domain1=0) const
 
bool GetCV (int, int, ON::point_style, double *) const
 
bool GetCV (int, int, ON_3dPoint &) const
 
bool GetCV (int, int, ON_4dPoint &) const
 
bool GetLocalClosestPoint (ON_3dPoint P, double s_seed, double t_seed, double *s, double *t, const ON_Interval *sub_domain0=0, const ON_Interval *sub_domain1=0) const
 
int GetNurbForm (ON_NurbsSurface &) const
 
bool GetSurfaceSize (double *width, double *height) const
 
ON_BezierCurveIsoCurve (int dir, double c, ON_BezierCurve *iso=nullptr) const
 returns the isocurve.
More...
 
bool IsRational () const
 true if NURBS curve is rational More...
 
bool IsSingular (int) const
 
bool IsValid () const
 
bool Loft (const ON_ClassArray< ON_BezierCurve > &curve_list)
 
bool Loft (int count, const ON_BezierCurve *const *curve_list)
 
bool MakeNonRational ()
 
bool MakeRational ()
 
bool Morph (const ON_SpaceMorph &morph)
 
ON_BezierSurfaceoperator= (const ON_BezierSurface &)
 
ON_BezierSurfaceoperator= (const ON_PolynomialSurface &)
 
int Order (int) const
 = IsRational() ? Dim()+1 : Dim() More...
 
ON_3dPoint PointAt (double s, double t) const
 
bool ReserveCVCapacity (int)
 Tools for managing CV and knot memory. More...
 
bool Reverse (int)
 
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 SetCV (int, int, const ON_3dPoint &)
 
bool SetCV (int, int, const ON_4dPoint &)
 
bool SetCV (int, int, ON::point_style, const double *)
 
bool SetWeight (int, int, double)
 
bool Split (int, double, ON_BezierSurface &, ON_BezierSurface &) const
 
bool Transform (const ON_Xform &)
 
bool Translate (const ON_3dVector &translation_vector)
 
bool Transpose ()
 transpose surface parameterization (swap "s" and "t") More...
 
bool Trim (int dir, const ON_Interval &domain)
 
double Weight (int, int) const
 
bool ZeroCVs ()
 zeros control vertices and, if rational, sets weights to 1 More...
 

Public Attributes

ON_SurfaceLeafBox m_leafbox
 
- Public Attributes inherited from ON_BezierSurface
double * m_cv
 
int m_cv_capacity
 if 0, then destructor does not free m_cv More...
 
int m_cv_stride [2]
 
int m_dim
 Implementation. More...
 
int m_is_rat
 0 = no, 1 = yes More...
 
int m_order [2]
 order = degree+1 >= 2 More...
 

Additional Inherited Members

- Static Public Member Functions inherited from ON_BezierSurface
static ON_BezierSurfaceInterpolateGrid (const double *point_grid, int dim, int point_count0, int point_count1, size_t point_stride0, size_t point_stride1, ON_BezierSurface *dest)
 Interpolate arectangular grid of points so that bez(i/(point_count0 - 1), i/(point_count1 - 1))) = point_grid[i][j]. The returned bezier has order (point_count0,point_count1). Be aware that interpolation of irregular grids can create surfaces with extreme oscillations. More...
 
static ON_BezierSurfaceInterpolateGrid (const ON_3dPoint *point_grid, int point_count0, int point_count1, size_t point_stride0, size_t point_stride1, ON_BezierSurface *dest)
 Interpolate arectangular grid of 3d points so that bez(i/(point_count0 - 1), i/(point_count1 - 1))) = point_grid[i][j] More...
 
static bool MatchTangency (ON_SimpleArray< ON_BezierSurface * > &BezArray, ON_3dPoint P, ON_3dVector N, double *pMaxAngleDeviation)
 

Constructor & Destructor Documentation

◆ ON_SurfaceTreeBezier() [1/2]

ON_SurfaceTreeBezier::ON_SurfaceTreeBezier ( )

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

◆ ON_SurfaceTreeBezier() [2/2]

ON_SurfaceTreeBezier::ON_SurfaceTreeBezier ( const ON_BezierSurface bezier_surface)

Member Function Documentation

◆ IsFartherThan() [1/4]

bool ON_SurfaceTreeBezier::IsFartherThan ( double  d,
const ON_3dPoint P 
) const

Description: Quickly determine if the shortest distance from the point P to this bezier curve is greater than d. Parameters: d - [in] distance (> 0.0) P - [in] Returns: True if the shortest distance from the point P 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() [2/4]

bool ON_SurfaceTreeBezier::IsFartherThan ( double  d,
const ON_BoundingBox bbox 
) const

Description: Quickly determine if the shortest distance from the bounding box to this bezier curve is greater than d. Parameters: d - [in] distance (> 0.0) bbox - [in] Returns: True if the shortest distance from the bounding box 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/4]

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

Description: Quickly determine if the shortest distance from the other bezier 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() [4/4]

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

Description: Quickly determine if the shortest distance from the other bezier 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.

◆ MaximumDistanceTo() [1/4]

double ON_SurfaceTreeBezier::MaximumDistanceTo ( const class ON_SurfaceTreeBezier stbez) const

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

◆ MaximumDistanceTo() [2/4]

double ON_SurfaceTreeBezier::MaximumDistanceTo ( const ON_CurveTreeBezier other) const

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

◆ MaximumDistanceTo() [3/4]

double ON_SurfaceTreeBezier::MaximumDistanceTo ( ON_3dPoint  P) const

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

◆ MaximumDistanceTo() [4/4]

double ON_SurfaceTreeBezier::MaximumDistanceTo ( ON_BoundingBox  bbox) const

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

◆ MinimumDistanceTo() [1/4]

double ON_SurfaceTreeBezier::MinimumDistanceTo ( const class ON_SurfaceTreeBezier stbez) const

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

◆ MinimumDistanceTo() [2/4]

double ON_SurfaceTreeBezier::MinimumDistanceTo ( const ON_CurveTreeBezier other) const

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

◆ MinimumDistanceTo() [3/4]

double ON_SurfaceTreeBezier::MinimumDistanceTo ( ON_3dPoint  P) const

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

◆ MinimumDistanceTo() [4/4]

double ON_SurfaceTreeBezier::MinimumDistanceTo ( ON_BoundingBox  bbox) const

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

◆ SetBezier()

bool ON_SurfaceTreeBezier::SetBezier ( const ON_BezierSurface bezier_surface)

Description: Copies bezier_surface and sets m_leafbox to be the smallest surface leaf box that contains the bezier surface. Returns: True if bezier_surface is valid and the leaf box is set.

◆ SetLeafBox()

bool ON_SurfaceTreeBezier::SetLeafBox ( )

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

Member Data Documentation

◆ m_leafbox

ON_SurfaceLeafBox ON_SurfaceTreeBezier::m_leafbox