23 #if !defined(OPENNURBS_NURBSSURFACE_INC_) 24 #define OPENNURBS_NURBSSURFACE_INC_ 41 int DimensionA()
const = 0;
44 int DimensionB()
const = 0;
47 int DimensionC()
const = 0;
50 bool Evaluate(
double,
104 unsigned int SizeOf()
const override;
107 ON__UINT32
DataCRC(ON__UINT32 current_remainder)
const override;
123 bool bIgnoreParameterization,
124 double tolerance = ON_ZERO_TOLERANCE
127 void Initialize(
void);
165 int CreateRuledSurface(
196 int CreateConeSurface(
263 bool GetBBox(
double* boxmin,
double* boxmax,
bool bGrowBox =
false )
const override;
348 double tolerance = ON_ZERO_TOLERANCE
425 double cos_angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE_COSINE,
426 double curvature_tolerance=ON_SQRT_EPSILON
461 double point_tolerance=ON_ZERO_TOLERANCE,
462 double d1_tolerance=ON_ZERO_TOLERANCE,
463 double d2_tolerance=ON_ZERO_TOLERANCE,
464 double cos_angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE_COSINE,
465 double curvature_tolerance=ON_SQRT_EPSILON
604 double offset_distance,
606 double* max_deviation =
nullptr 636 double ControlPolygonLength(
int dir )
const;
718 ON::point_style CVStyle()
const;
805 int KnotMultiplicity(
827 bool MakeClampedUniformKnotVector(
845 bool MakePeriodicUniformKnotVector(
856 double SuperfluousKnot(
861 double GrevilleAbcissa(
866 bool GetGrevilleAbcissae(
871 bool SetClampedGrevilleKnotVector(
877 bool SetPeriodicGrevilleKnotVector(
893 int knot_multiplicity=1
898 bool MakeNonRational();
905 bool ChangeDimension(
906 int desired_dimension
920 bool ChangeSurfaceSeam(
935 bool ReserveKnotCapacity(
938 int knot_array_capacity
940 bool ReserveCVCapacity(
942 int cv_array_capacity
960 bool ConvertSpanToBezier(
990 int m_knot_capacity[2];
1096 unsigned int SizeOf()
const override;
1099 ON__UINT32
DataCRC(ON__UINT32 current_remainder)
const override;
1177 bool GetBBox(
double* boxmin,
double* boxmax,
bool bGrowBox =
false )
const override;
1220 bool IsParallelogram(
double tolerance)
const;
1320 int knot_multiplicity=1
1323 bool IncreaseDegree(
1328 bool ChangeDimension(
1329 int desired_dimension
1453 bool IsRational()
const;
1523 ON::point_style CVStyle()
const;
1619 bool MakeRational();
1621 bool MakeNonRational();
1637 double GrevilleAbcissa(
1649 bool ReserveCVCapacity(
1653 bool ReserveKnotCapacity(
1674 int m_knot_capacity[3];
1682 bool ON_GetCageXform(
1712 unsigned int SizeOf()
const override;
1734 bool GetBBox(
double* boxmin,
double* boxmax,
bool bGrowBox =
false )
const override;
1755 bool IsRational()
const;
1761 bool MakeRational();
1767 bool MakeNonRational();
1773 int CVCount()
const;
1775 int CVCount(
int dir)
const;
1776 int Order(
int dir)
const;
1777 const double* Knot(
int dir)
const;
1778 ON_3dex MaxCVIndex()
const;
1779 const double* CV(ON_3dex)
const;
1780 double Weight(ON_3dex)
const;
1804 bool AddControlLocalizer(
1805 double support_distance,
1806 double falloff_distance
1809 bool AddSphereLocalizer(
1811 double support_distance,
1812 double falloff_distance
1815 bool AddCylinderLocalizer(
1817 double support_distance,
1818 double falloff_distance
1821 bool AddBoxLocalizer(
1823 double support_distance,
1824 double falloff_distance
1827 bool AddPlaneLocalizer(
1829 double support_distance,
1830 double falloff_distance
1833 bool AddConvexPolygonLocalizer(
1835 double support_distance,
1836 double falloff_distance
1844 bool GetCageMorph(
class ON_CageMorph& cage_morph )
const;
1873 double m_sporh_tolerance;
1874 bool m_sporh_bQuickPreview;
1875 bool m_sporh_bPreserveStructure;
1913 #if defined(ON_DLL_TEMPLATE) Definition: opennurbs_nurbssurface.h:26
virtual bool Transpose()=0
virtual bool Transform(const ON_Xform &xform)
Transforms the object.
virtual bool IsClosed(int) const
virtual void MemoryRelocate()
The MemoryRelocate() function is called when an object's location in memory is changed. For example, if an object resides in a chunk of memory that is grown by calling a realloc that has to allocate a new chunk and copy the contents of the old chunk to the new chunk, then the location of the object's memory changes. In practice this happens when classes derived from ON_Object are stored in dynamic arrays, like the default implementation of ON_ObjectArray<>'s that use realloc to grow the dynamic array.
bool SetDomain(int dir, ON_Interval domain)
ON_Surface & operator=(const ON_Surface &)
virtual bool IsPeriodic(int) const
virtual int Dimension() const
Dimension of the object.
virtual int GetNurbForm(ON_NurbsSurface &nurbs_surface, double tolerance=0.0) const
Get a NURBS surface representation of this surface.
Definition: opennurbs_nurbssurface.h:62
virtual bool GetBBox(double *boxmin, double *boxmax, bool bGrowBox=false) const
This is the virtual function that actually calculates axis aligned bounding boxes.
The ON_UuidList class provides a tool to efficiently maintain a list of uuids and determine if a uuid...
Definition: opennurbs_array.h:803
Definition: opennurbs_array.h:36
virtual void DestroyRuntimeCache(bool bDelete=true)
Expert user function. If you are using openNURBS in its default configuration to read and write 3dm a...
virtual bool MakeDeformable()
If possible, converts the object into a form that can be accuratly modified with "squishy" transforma...
virtual bool GetSpanVector(int dir, double *span_vector) const =0
ON_Curve is a pure virtual class for curve objects
Definition: opennurbs_curve.h:93
virtual bool SwapCoordinates(int i, int j)
Swaps object coordinate values with indices i and j.
virtual bool IsPlanar(ON_Plane *plane=nullptr, double tolerance=ON_ZERO_TOLERANCE) const
Test a surface to see if it is planar.
ON_Object array is used to store lists of classes that are derived from ON_Object. It differs from ON_ClassArray in that the virtual ON_Object::MemoryRelocate function is called when growing the dynamic array requires changing the location of the memory buffer used to store the elements in the array.
Definition: opennurbs_array.h:725
virtual ON::object_type ObjectType() const
Useful for switch statements that need to differentiate between basic object types like points...
virtual ON_Interval Domain(int dir) const =0
Base class for all geometry classes that must provide runtime class id. Provides interface for common...
Definition: opennurbs_geometry.h:37
Definition: opennurbs_nurbssurface.h:1846
virtual bool HasBrepForm() const
Query an object to see if it has an ON_Brep form. Result: Returns true if the virtual ON_Geometry::Br...
virtual bool GetTightBoundingBox(class ON_BoundingBox &tight_bbox, bool bGrowBox=false, const class ON_Xform *xform=nullptr) const
Get tight bounding box.
virtual int Degree(int dir) const =0
virtual bool IsIdentity(const ON_BoundingBox &bbox) const
Provides a quick way to determine if a morph function is the identity (doesn't move the points) on a ...
virtual unsigned int SizeOf() const
Definition: opennurbs_point.h:648
Definition: opennurbs_bounding_box.h:25
virtual int SpanCount(int dir) const =0
Definition: opennurbs_xform.h:1502
virtual void ClearBoundingBox()
Some objects cache bounding box information. If you modify an object, then call ClearBoundingBox() to...
virtual bool Split(int dir, double c, ON_Surface *&west_or_south_side, ON_Surface *&east_or_north_side) const
Splits (divides) the surface into two parts at the specified parameter.
virtual bool Trim(int dir, const ON_Interval &domain)
Removes the portions of the surface outside of the specified interval.
virtual void Dump(ON_TextLog &) const
Creates a text dump of the object.
void EmergencyDestroy()
Sets m_user_data_list = 0.
virtual bool IsDeformable() const
unsigned int SizeOf() const override
virtual ON_Object::SizeOf override
Definition: opennurbs_line.h:20
static const ON_3dPoint UnsetPoint
Definition: opennurbs_point.h:474
virtual bool Extend(int dir, const ON_Interval &domain)
Pure virtual function. Default returns false. Where possible, analytically extends surface to include...
virtual ON_Curve * IsoCurve(int dir, double c) const
Get isoparametric curve.
Definition: opennurbs_brep.h:1472
Definition: opennurbs_nurbssurface.h:1023
virtual bool GetParameterTolerance(int dir, double t, double *tminus, double *tplus) const
Definition: opennurbs_bezier.h:1404
ON_Geometry & operator=(const ON_Geometry &)=default
Definition: opennurbs_nurbscurve.h:26
Definition: opennurbs_textlog.h:20
Definition: opennurbs_archive.h:1783
Definition: opennurbs_bezier.h:1061
virtual bool Read(ON_BinaryArchive &binary_archive)
Low level archive writing tool used by ON_BinaryArchive::ReadObject().
Definition: opennurbs_point.h:460
bool IsValid(class ON_TextLog *text_log=nullptr) const override
Tests an object to see if its data members are correctly initialized.
virtual bool Write(ON_BinaryArchive &binary_archive) const
Low level archive writing tool used by ON_BinaryArchive::WriteObject().
virtual ON__UINT32 DataCRC(ON__UINT32 current_remainder) const
Returns a CRC calculated from the information that defines the object. This CRC can be used as a quic...
Definition: opennurbs_plane.h:20
Definition: opennurbs_nurbssurface.h:1661
Definition: opennurbs_surface.h:57
virtual bool Reverse(int)=0
virtual bool IsSingular(int) const
virtual class ON_Brep * BrepForm(class ON_Brep *brep=nullptr) const
If possible, BrepForm() creates a brep form of the ON_Geometry.
virtual bool GetSurfaceSize(double *width, double *height) const
Get an estimate of the size of the rectangle that would be created if the 3d surface where flattened ...
Definition: opennurbs_point.h:46
virtual int HasNurbForm() const
Is there a NURBS surface representation of this surface.
virtual bool Evaluate(double u, double v, int num_der, int array_stride, double *der_array, int quadrant=0, int *hint=0) const =0
work horse evaluator
virtual bool GetNextDiscontinuity(int dir, ON::continuity c, double t0, double t1, double *t, int *hint=nullptr, int *dtype=nullptr, double cos_angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE_COSINE, double curvature_tolerance=ON_SQRT_EPSILON) const
Search for a derivatitive, tangent, or curvature discontinuity.
virtual bool IsContinuous(ON::continuity c, double s, double t, int *hint=nullptr, 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
Test continuity at a surface parameter value.