23 #if !defined(OPENNURBS_NURBSSURFACE_INC_)
24 #define OPENNURBS_NURBSSURFACE_INC_
26 #include <pcl/pcl_exports.h>
86 ON_BOOL32 bIsRational,
98 ON_BOOL32 bIsRational,
109 ON__UINT32
DataCRC(ON__UINT32 current_remainder)
const;
125 bool bIgnoreParameterization,
126 double tolerance = ON_ZERO_TOLERANCE
370 double tolerance = ON_ZERO_TOLERANCE
447 double cos_angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE_COSINE,
448 double curvature_tolerance=ON_SQRT_EPSILON
483 double point_tolerance=ON_ZERO_TOLERANCE,
484 double d1_tolerance=ON_ZERO_TOLERANCE,
485 double d2_tolerance=ON_ZERO_TOLERANCE,
486 double cos_angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE_COSINE,
487 double curvature_tolerance=ON_SQRT_EPSILON
624 double offset_distance,
626 double* max_deviation = NULL
890 int knot_multiplicity=1
903 int desired_dimension
935 int knot_array_capacity
939 int cv_array_capacity
987 int m_knot_capacity[2];
1112 ON__UINT32
DataCRC(ON__UINT32 current_remainder)
const;
1207 int bGrowBox =
false
1227 int bGrowBox =
false,
1368 int knot_multiplicity=1
1377 int desired_dimension
1722 int m_knot_capacity[3];
1730 bool ON_GetCageXform(
1784 int bGrowBox =
false
1789 int bGrowBox =
false,
1858 double support_distance,
1859 double falloff_distance
1864 double support_distance,
1865 double falloff_distance
1870 double support_distance,
1871 double falloff_distance
1876 double support_distance,
1877 double falloff_distance
1882 double support_distance,
1883 double falloff_distance
1888 double support_distance,
1889 double falloff_distance
1964 #if defined(ON_DLL_TEMPLATE)
1968 #pragma warning( push )
1969 #pragma warning( disable : 4231 )
1979 #pragma warning( pop )
bool IsIdentity(const ON_BoundingBox &bbox) const
const ON_MorphControl * m_control
ON_BOOL32 Transform(const ON_Xform &xform)
ON_BOOL32 IsValid(ON_TextLog *text_log=NULL) const
ON_NurbsCurve m_nurbs_curve
bool GetTightBoundingBox(ON_BoundingBox &tight_bbox, int bGrowBox=false, const ON_Xform *xform=0) const
bool m_sporh_bQuickPreview
ON_NurbsCage m_nurbs_cage
bool AddBoxLocalizer(ON_BoundingBox bbox, double support_distance, double falloff_distance)
ON_3dex MaxCVIndex() const
bool AddCylinderLocalizer(ON_Line axis, double support_distance, double falloff_distance)
void DestroyRuntimeCache(bool bDelete=true)
ON_NurbsSurface m_nurbs_surface0
const double * CV(ON_3dex) const
ON_Interval m_nurbs_curve_domain
ON_ClassArray< ON_Localizer > m_localizers
bool AddPlaneLocalizer(const ON_Plane &plane, double support_distance, double falloff_distance)
bool AddConvexPolygonLocalizer(const ON_SimpleArray< ON_Plane > &planes, double support_distance, double falloff_distance)
bool m_sporh_bPreserveStructure
unsigned int SizeOf() const
void Dump(ON_TextLog &) const
ON_BOOL32 HasBrepForm() const
double Weight(ON_3dex) const
ON_BOOL32 Read(ON_BinaryArchive &archive)
const double * Knot(int dir) const
ON_BOOL32 Write(ON_BinaryArchive &archive) const
bool AddControlLocalizer(double support_distance, double falloff_distance)
ON_BOOL32 GetBBox(double *boxmin, double *boxmax, int bGrowBox=false) const
int CVCount(int dir) const
bool IsIdentity(const ON_BoundingBox &bbox) const
ON_Brep * BrepForm(ON_Brep *brep=NULL) const
bool GetCageMorph(class ON_CageMorph &cage_morph) const
ON_NurbsCurve m_nurbs_curve0
bool AddSphereLocalizer(ON_3dPoint center, double support_distance, double falloff_distance)
ON::object_type ObjectType() const
ON_NurbsSurface m_nurbs_surface
ON::object_type ObjectType() const
bool IsSingular(int) const
ON_BOOL32 GetBBox(double *boxmin, double *boxmax, int bGrowBox=false) const
bool GetTightBoundingBox(ON_BoundingBox &tight_bbox, int bGrowBox=false, const ON_Xform *xform=0) const
bool SetKnot(int dir, int knot_index, double knot_value)
ON__UINT32 DataCRC(ON__UINT32 current_remainder) const
ON_3dPoint PointAt(ON_3dPoint rst) const
bool GetCV(int i, int j, int k, ON_4dPoint &) const
double Knot(int dir, int knot_index) const
bool Create(const ON_3dPoint *box_corners, int order0, int order1, int order2, int cv_count0, int cv_count1, int cv_count2)
bool SetCV(int i, int j, int k, const ON_3dPoint &point)
bool GetSpanVector(int dir, double *span_vector) const
ON_BOOL32 Read(ON_BinaryArchive &archive)
ON_BOOL32 IncreaseDegree(int dir, int desired_degree)
unsigned int SizeOf() const
ON_NurbsCage(const ON_3dPoint *box_corners, int order0, int order1, int order2, int cv_count0, int cv_count1, int cv_count2)
ON_BOOL32 ChangeDimension(int desired_dimension)
double Weight(int i, int j, int k) const
bool Create(int dim, bool is_rat, int order0, int order1, int order2, int cv_count0, int cv_count1, int cv_count2)
ON_NurbsCage & operator=(const ON_BezierCage &src)
bool Trim(int dir, const ON_Interval &domain)
ON_BOOL32 IsValid(ON_TextLog *text_log=NULL) const
ON::point_style CVStyle() const
ON_NurbsCage(const ON_NurbsCage &src)
ON_BOOL32 Write(ON_BinaryArchive &archive) const
ON_NurbsCage & operator=(const ON_NurbsCage &src)
ON_NurbsCage(const ON_BoundingBox &bbox, int order0, int order1, int order2, int cv_count0, int cv_count1, int cv_count2)
ON_3dPoint PointAt(double r, double s, double t) const
bool SetCV(int i, int j, int k, ON::point_style, const double *)
ON_NurbsSurface * IsoSurface(int dir, double c, ON_NurbsSurface *srf=0) const
bool SetWeight(int i, int j, int k, double w)
bool Transpose(int dir0, int dir1)
bool Evaluate(double r, double s, double t, int der_count, int v_stride, double *v, int side=0, int *hint=0) const
bool SetCV(int i, int j, int k, const ON_4dPoint &hpoint)
bool InsertKnot(int dir, double knot_value, int knot_multiplicity=1)
bool Extend(int dir, const ON_Interval &domain)
ON_Interval Domain(int) const
bool IsPeriodic(int) const
bool GetCV(int i, int j, int k, ON::point_style, double *) const
ON_NurbsCage(int dim, bool is_rat, int order0, int order1, int order2, int cv_count0, int cv_count1, int cv_count2)
int SpanCount(int dir) const
double GrevilleAbcissa(int dir, int gindex) const
double * CV(int i, int j, int k) const
bool ReserveKnotCapacity(int dir, int cv_capacity)
void DestroyRuntimeCache(bool bDelete=true)
int Degree(int dir) const
bool Create(const ON_BoundingBox &bbox, int order0, int order1, int order2, int cv_count0, int cv_count1, int cv_count2)
ON_NurbsCage(const ON_BezierCage &src)
int KnotCount(int dir) const
bool IsParallelogram(double tolerance) const
ON_BOOL32 Transform(const ON_Xform &xform)
bool ReserveCVCapacity(int cv_capacity)
bool GetCV(int i, int j, int k, ON_3dPoint &) const
bool IsDeformable() const
void Dump(ON_TextLog &text_log) const
bool ClampEnd(int dir, int end)
double * CV(int i, int j) const
ON_BOOL32 SetCV(int i, int j, const ON_3dPoint &cv)
bool MakePeriodicUniformKnotVector(int dir, double delta=1.0)
ON_BOOL32 GetCV(int i, int j, ON_4dPoint &cv) const
bool SetPeriodicGrevilleKnotVector(int dir, int g_stride, const double *g)
ON_BOOL32 GetSpanVector(int, double *) const
int KnotMultiplicity(int dir, int knot_index) const
ON_BOOL32 SetCVRow(int row_index, int v_stride, const double *v)
ON_NurbsSurface(const ON_BezierSurface &bezier_surface)
ON_BOOL32 Split(int dir, double c, ON_Surface *&west_or_south_side, ON_Surface *&east_or_north_side) const
ON_BOOL32 Create(int dim, ON_BOOL32 is_rat, int order0, int order1, int cv_count0, int cv_count1)
ON_BOOL32 SetCVColumn(int col_index, const ON_3dPoint &cv)
ON_BOOL32 Read(ON_BinaryArchive &)
bool IsClamped(int dir, int end=2) const
static ON_NurbsSurface * New(const ON_BezierSurface &bezier_surface)
const double * Knot(int dir) const
bool IsRational(void) const
ON_BOOL32 ConvertSpanToBezier(int span_index0, int span_index1, ON_BezierSurface &bezier_surface) const
bool MakeClampedUniformKnotVector(int dir, double delta=1.0)
ON_NurbsSurface(int dimension, ON_BOOL32 bIsRational, int order0, int order1, int cv_count0, int cv_count1)
bool ChangeDimension(int desired_dimension)
bool IsDuplicate(const ON_NurbsSurface &other, bool bIgnoreParameterization, double tolerance=ON_ZERO_TOLERANCE) const
ON_BOOL32 Evaluate(double, double, int, int, double *, int=0, int *=0) const
ON_BOOL32 IsPeriodic(int) const
unsigned int SizeOf() const
ON_BOOL32 SwapCoordinates(int, int)
int CreateConeSurface(ON_3dPoint apex_point, const ON_Curve &curve, const ON_Interval *curve_domain=NULL)
ON_NurbsSurface & operator=(const ON_BezierSurface &bezier_surface)
ON_BOOL32 IsClosed(int) const
ON_BOOL32 GetBBox(double *, double *, ON_BOOL32=false) const
ON_BOOL32 SetCVColumn(int col_index, int v_stride, const double *v)
ON_Interval Domain(int) const
ON_BOOL32 ReserveCVCapacity(int cv_array_capacity)
bool IsDeformable() const
ON_BOOL32 Write(ON_BinaryArchive &) const
int SetKnot(int dir, int knot_index, double knot_value)
bool IncreaseDegree(int dir, int desired_degree)
bool IsContinuous(ON::continuity c, double s, 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
ON_BOOL32 ChangeSurfaceSeam(int dir, double t)
ON_BOOL32 IsSingular(int) const
ON_BOOL32 GetParameterTolerance(int, double, double *, double *) const
double Weight(int i, int j) const
int GetNurbForm(ON_NurbsSurface &, double=0.0) const
ON_NurbsSurface & operator=(const ON_NurbsSurface &)
ON_BOOL32 SetCV(int i, int j, const ON_4dPoint &cv)
ON_BOOL32 SetWeight(int i, int j, double weight)
bool CollapseSide(int side, ON_3dPoint point=ON_unset_point)
ON_BOOL32 Trim(int dir, const ON_Interval &domain)
double ControlPolygonLength(int dir) const
ON_Surface * Offset(double offset_distance, double tolerance, double *max_deviation=NULL) const
ON_BOOL32 ReserveKnotCapacity(int dir, int knot_array_capacity)
void Dump(ON_TextLog &) const
bool GetNextDiscontinuity(int dir, 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
double SuperfluousKnot(int dir, int end) const
ON_Curve * IsoCurve(int dir, double c) const
ON_BOOL32 TensorProduct(const ON_NurbsCurve &, const ON_NurbsCurve &, ON_TensorProduct &)
double Knot(int dir, int knot_index) const
ON_BOOL32 GetSurfaceSize(double *width, double *height) const
double GrevilleAbcissa(int dir, int cv_index) const
int KnotCount(int dir) const
static ON_NurbsSurface * New(const ON_NurbsSurface &nurbs_surface)
bool InsertKnot(int dir, double knot_value, int knot_multiplicity=1)
static ON_NurbsSurface * New(int dimension, ON_BOOL32 bIsRational, int order0, int order1, int cv_count0, int cv_count1)
ON_BOOL32 GetCV(int i, int j, ON::point_style, double *cv) const
bool Extend(int dir, const ON_Interval &domain)
bool GetGrevilleAbcissae(int dir, double *g) const
ON_BOOL32 SetCVRow(int row_index, const ON_3dPoint &cv)
virtual int CreateRuledSurface(const ON_Curve &curveA, const ON_Curve &curveB, const ON_Interval *curveA_domain=NULL, const ON_Interval *curveB_domain=NULL)
ON_BOOL32 SetCV(int i, int j, ON::point_style, const double *cv)
ON_BOOL32 IsPlanar(ON_Plane *plane=NULL, double tolerance=ON_ZERO_TOLERANCE) const
static ON_NurbsSurface * New()
ON__UINT32 DataCRC(ON__UINT32 current_remainder) const
virtual ~ON_NurbsSurface()
ON::point_style CVStyle() const
bool ClampEnd(int dir, int end)
ON_BOOL32 GetCV(int i, int j, ON_3dPoint &cv) const
bool SetClampedGrevilleKnotVector(int dir, int g_stride, const double *g)
ON_BOOL32 SetDomain(int dir, double t0, double t1)
ON_BOOL32 Transform(const ON_Xform &)
ON_BOOL32 IsValid(ON_TextLog *text_log=NULL) const
ON_NurbsSurface(const ON_NurbsSurface &nurbs_surface)
virtual ~ON_TensorProduct()
virtual int DimensionA() const =0
virtual bool Evaluate(double, const double *, double, const double *, double *)=0
virtual int DimensionB() const =0
virtual int DimensionC() const =0