#include <opennurbs_surface.h>
Public Types | |
enum | ISO { not_iso = 0, x_iso = 1, y_iso = 2, W_iso = 3, S_iso = 4, E_iso = 5, N_iso = 6, iso_count = 7 } |
pure virtual class for surface objects More... | |
Public Types inherited from ON_Object | |
enum | UserDataConflictResolution : unsigned char { UserDataConflictResolution::destination_object = 0, UserDataConflictResolution::source_object = 1, UserDataConflictResolution::source_copycount_gt = 2, UserDataConflictResolution::source_copycount_ge = 3, UserDataConflictResolution::destination_copycount_gt = 4, UserDataConflictResolution::destination_copycount_ge = 5, UserDataConflictResolution::delete_item = 6 } |
When a userdata item is copied or moved from a source object to a destination object, the ON_Object::UserDataConflictResolution enum values specify how conficts are resolved. Remark: A userdata item "conflict" occurs when both the destination and source object have a user data item with the same value of ON_UserData::m_userdata_uuid. More... | |
Public Member Functions | |
ON_Surface () | |
ON_Surface (const ON_Surface &) | |
virtual | ~ON_Surface () |
ON_Brep * | BrepForm (ON_Brep *brep=nullptr) const override |
Overrides virtual ON_Geometry::HasBrepForm. Uses ON_Brep::Create( ON_Surface&* ) to create a brep form. The surface is copied for use in the returned brep. More... | |
virtual int | Degree (int dir) const =0 |
void | DestroyRuntimeCache (bool bDelete=true) override |
virtual ON_Object::DestroyRuntimeCache override More... | |
void | DestroySurfaceTree () |
virtual ON_Interval | Domain (int dir) const =0 |
virtual ON_Surface * | DuplicateSurface () const |
Get a duplicate of the surface. More... | |
bool | Ev1Der (double u, double v, ON_3dPoint &point, ON_3dVector &du, ON_3dVector &dv, int quadrant=0, int *hint=0) const |
bool | Ev2Der (double u, double v, ON_3dPoint &point, ON_3dVector &du, ON_3dVector &dv, ON_3dVector &duu, ON_3dVector &duv, ON_3dVector &dvv, int quadrant=0, int *hint=0) const |
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 More... | |
bool | EvaluatePoint (const class ON_ObjRef &objref, ON_3dPoint &P) const override |
virtual ON_Geometry override More... | |
bool | EvNormal (double u, double v, ON_3dPoint &point, ON_3dVector &normal, int quadrant=0, int *hint=0) const |
bool | EvNormal (double u, double v, ON_3dVector &normal, int quadrant=0, int *hint=0) const |
bool | EvNormal (double u, double v, ON_3dPoint &point, ON_3dVector &du, ON_3dVector &dv, ON_3dVector &normal, int=0, int *=0) const |
bool | EvPoint (double u, double v, ON_3dPoint &point, int quadrant=0, int *hint=0) const |
virtual bool | Extend (int dir, const ON_Interval &domain) |
Pure virtual function. Default returns false. Where possible, analytically extends surface to include domain. More... | |
bool | FrameAt (double u, double v, ON_Plane &frame) const |
bool | GetDomain (int dir, double *t0, double *t1) const |
surface interface More... | |
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. More... | |
virtual int | GetNurbForm (ON_NurbsSurface &nurbs_surface, double tolerance=0.0) const |
Get a NURBS surface representation of this surface. More... | |
virtual bool | GetNurbFormParameterFromSurfaceParameter (double surface_s, double surface_t, double *nurbs_s, double *nurbs_t) const |
virtual bool | GetParameterTolerance (int dir, double t, double *tminus, double *tplus) const |
virtual bool | GetSpanVector (int dir, double *span_vector) const =0 |
virtual bool | GetSpanVectorIndex (int dir, double t, int side, int *span_vector_index, ON_Interval *span_interval) const |
virtual bool | GetSurfaceParameterFromNurbFormParameter (double nurbs_s, double nurbs_t, double *surface_s, double *surface_t) const |
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 into a rectangle. More... | |
bool | HasBrepForm () const override |
Overrides virtual ON_Geometry::HasBrepForm and returns true. Result: Returns true. More... | |
virtual int | HasNurbForm () const |
Is there a NURBS surface representation of this surface. More... | |
int | IsAtSeam (double s, double t) const |
Test if a surface parameter value is at a seam. More... | |
bool | IsAtSingularity (double s, double t, bool bExact=true) const |
Test if a surface parameter value is at a singularity. More... | |
virtual bool | IsClosed (int) const |
bool | IsCone (ON_Cone *cone=nullptr, double tolerance=ON_ZERO_TOLERANCE) const |
Determine if the surface is a portion of a cone. More... | |
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. More... | |
bool | IsCylinder (ON_Cylinder *cylinder=nullptr, double tolerance=ON_ZERO_TOLERANCE) const |
Determine if the surface is a portion of a cylinder. More... | |
virtual ISO | IsIsoparametric (const ON_Curve &curve, const ON_Interval *curve_domain=nullptr) const |
Test a 2d curve to see if it is iso parameteric in the surface's parameter space. More... | |
virtual ISO | IsIsoparametric (const ON_BoundingBox &bbox) const |
Test a 2d bounding box to see if it is iso parameteric in the surface's parameter space. More... | |
virtual ON_Curve * | IsoCurve (int dir, double c) const |
Get isoparametric curve. More... | |
virtual bool | IsPeriodic (int) const |
virtual bool | IsPlanar (ON_Plane *plane=nullptr, double tolerance=ON_ZERO_TOLERANCE) const |
Test a surface to see if it is planar. More... | |
virtual bool | IsSingular (int) const |
bool | IsSolid () const |
bool | IsSphere (ON_Sphere *sphere=nullptr, double tolerance=ON_ZERO_TOLERANCE) const |
Determine if the surface is a portion of a sphere. More... | |
bool | IsTorus (ON_Torus *torus=nullptr, double tolerance=ON_ZERO_TOLERANCE) const |
Determine if the surface is a portion of a torus. More... | |
ON_3dVector | NormalAt (double, double) const |
ON_NurbsSurface * | NurbsSurface (ON_NurbsSurface *pNurbsSurface=nullptr, double tolerance=0.0, const ON_Interval *s_subdomain=nullptr, const ON_Interval *t_subdomain=nullptr) const |
Get a NURBS surface representation of this surface. More... | |
ON::object_type | ObjectType () const override |
override ON_Object::ObjectType() - returns ON::surface_object More... | |
ON_Surface & | operator= (const ON_Surface &) |
ON_3dPoint | PointAt (double, double) const |
simple evaluation interface - no error handling More... | |
virtual bool | Reverse (int)=0 |
bool | SetDomain (int dir, ON_Interval domain) |
virtual bool | SetDomain (int dir, double t0, double t1) |
unsigned int | SizeOf () const override |
virtual ON_Object::SizeOf override More... | |
virtual int | SpanCount (int dir) const =0 |
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. More... | |
virtual bool | Transpose ()=0 |
virtual bool | Trim (int dir, const ON_Interval &domain) |
Removes the portions of the surface outside of the specified interval. More... | |
Public Member Functions inherited from ON_Geometry | |
ON_Geometry ()=default | |
ON_Geometry (const ON_Geometry &)=default | |
~ON_Geometry ()=default | |
ON_BoundingBox | BoundingBox () const |
Get object's 3d axis aligned bounding box. More... | |
virtual void | ClearBoundingBox () |
Some objects cache bounding box information. If you modify an object, then call ClearBoundingBox() to inform the object that any cached bounding boxes are invalid. More... | |
virtual ON_COMPONENT_INDEX | ComponentIndex () const |
If this piece of geometry is a component in something larger, like an ON_BrepEdge in an ON_Brep, then this function returns the component index. More... | |
virtual int | Dimension () const |
Dimension of the object. More... | |
virtual bool | GetBBox (double *boxmin, double *boxmax, bool bGrowBox=false) const |
This is the virtual function that actually calculates axis aligned bounding boxes. More... | |
bool | GetBoundingBox (ON_BoundingBox &bbox, bool bGrowBox=false) const |
Get object's 3d axis aligned bounding box or the union of the input box with the object's bounding box. More... | |
bool | GetBoundingBox (ON_3dPoint &bbox_min, ON_3dPoint &bbox_max, bool bGrowBox=false) const |
Get corners of object's 3d axis aligned bounding box or the union of the input box with the object's bounding box. More... | |
virtual bool | GetTightBoundingBox (class ON_BoundingBox &tight_bbox, bool bGrowBox=false, const class ON_Xform *xform=nullptr) const |
Get tight bounding box. More... | |
virtual bool | IsDeformable () const |
bool | IsValid (class ON_TextLog *text_log=nullptr) const override |
Tests an object to see if its data members are correctly initialized. More... | |
virtual bool | MakeDeformable () |
If possible, converts the object into a form that can be accuratly modified with "squishy" transformations like projections, shears, an non-uniform scaling. More... | |
ON_Geometry & | operator= (const ON_Geometry &)=default |
bool | Rotate (double sin_angle, double cos_angle, const ON_3dVector &rotation_axis, const ON_3dPoint &rotation_center) |
Rotates the object about the specified axis. A positive rotation angle results in a counter-clockwise rotation about the axis (right hand rule). More... | |
bool | Rotate (double rotation_angle, const ON_3dVector &rotation_axis, const ON_3dPoint &rotation_center) |
Rotates the object about the specified axis. A positive rotation angle results in a counter-clockwise rotation about the axis (right hand rule). More... | |
bool | Scale (double scale_factor) |
Scales the object by the specified facotor. The scale is centered at the origin. More... | |
virtual bool | SwapCoordinates (int i, int j) |
Swaps object coordinate values with indices i and j. More... | |
virtual bool | Transform (const ON_Xform &xform) |
Transforms the object. More... | |
bool | Translate (const ON_3dVector &translation_vector) |
Translates the object along the specified vector. More... | |
Public Member Functions inherited from ON_Object | |
ON_Object () ON_NOEXCEPT | |
ON_Object (const ON_Object &) | |
virtual | ~ON_Object () |
virtual ON_AggregateComponentStatus | AggregateComponentStatus () const |
Call whenever a component status setting is modifed by directly changing it on a component in a way that will result in any saved information about the parent object's aggretate component status becoming invalid. More... | |
bool | AttachUserData (class ON_UserData *pUserData) |
Attach user data to an object. More... | |
unsigned int | ClearAllComponentStates () const |
Set all active level component states to ON_ComponentStatus::NoneSet. More... | |
virtual unsigned int | ClearComponentStates (ON_ComponentStatus states_to_clear) const |
Clear the specified states on every component. More... | |
virtual unsigned int | ClearComponentStates (ON_COMPONENT_INDEX component_index, ON_ComponentStatus states_to_clear) const |
Clear states on an individual component. More... | |
unsigned int | CopyUserData (const ON_Object &source_object, ON_UUID source_userdata_item_id, ON_Object::UserDataConflictResolution userdata_conflict_resolution) |
Expert user tool that copies user data items with positive values of ON_UserData.m_userdata_copycount from source_object to "this. More... | |
void | CopyUserData (const ON_Object &source_object) |
Calls CopyUserData(source_object,ON_Object::UserDataConflictResolution::source_object). More... | |
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 quick way to see if two objects are not identical. More... | |
virtual bool | DeleteComponents (const ON_COMPONENT_INDEX *ci_list, size_t ci_count) |
Delete the portions of the object identified in ci_list[]. More... | |
bool | DetachUserData (class ON_UserData *pUserData) |
Remove user data from an object. More... | |
virtual void | Dump (ON_TextLog &) const |
Creates a text dump of the object. More... | |
void | EmergencyDestroy () |
Sets m_user_data_list = 0. More... | |
class ON_UserData * | FirstUserData () const |
User data is stored as a linked list of ON_UserData classes. FirstUserData gets the first item in the linked list. This is the most recent item attached using AttachUserData(). Remark: To iterate through all the user data on an object, call FirstUserData() and then use ON_UserData::Next() to traverse the list. More... | |
virtual unsigned int | GetComponentsWithSetStates (ON_ComponentStatus states_filter, bool bAllEqualStates, ON_SimpleArray< ON_COMPONENT_INDEX > &components) const |
class ON_UserData * | GetUserData (const ON_UUID &userdata_uuid) const |
Get a pointer to user data. More... | |
bool | GetUserString (const wchar_t *key, ON_wString &string_value) const |
Get user string from the object. More... | |
int | GetUserStringKeys (ON_ClassArray< ON_wString > &user_string_keys) const |
Get a list of all user string keys on the object. More... | |
int | GetUserStrings (ON_ClassArray< ON_UserString > &user_strings) const |
Get a list of all user strings on the object. More... | |
bool | IsKindOf (const ON_ClassId *pClassId) const |
Low level tool to test if an object is derived from a specified class. More... | |
virtual void | MarkAggregateComponentStatusAsNotCurrent () const |
Call whenever a component status setting is modifed by directly changing it on a component in a way that will result in any saved information about the parent object's aggretate component status becoming invalid. More... | |
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. More... | |
virtual ON_UUID | ModelObjectId () const |
All objects in an opennurbs model have an id ( ON_Layer.m_layer_id, ON_Font.m_font_id, ON_Material.m_material_id, ON_3dmObjectAttributes.m_uuid ). More... | |
unsigned int | MoveUserData (ON_Object &source_object, ON_UUID source_userdata_item_id, ON_Object::UserDataConflictResolution userdata_conflict_resolution, bool bDeleteAllSourceItems) |
Expert user tool that moves user data items from source_object to "this. More... | |
void | MoveUserData (ON_Object &source_object) |
Calls MoveUserData(source_object,ON_Object::UserDataConflictResolution::source_object,true). More... | |
ON_Object & | operator= (const ON_Object &) |
void | PurgeUserData () |
PurgeUserData() removes all user data from object. More... | |
virtual bool | Read (ON_BinaryArchive &binary_archive) |
Low level archive writing tool used by ON_BinaryArchive::ReadObject(). More... | |
virtual unsigned int | SetComponentStates (ON_COMPONENT_INDEX component_index, ON_ComponentStatus states_to_set) const |
Set states on an individual component. More... | |
virtual unsigned int | SetComponentStatus (ON_COMPONENT_INDEX component_index, ON_ComponentStatus status_to_copy) const |
Copy status settings to an individual component. More... | |
bool | SetUserString (const wchar_t *key, const wchar_t *string_value) |
Attach a user string to the object. This information will perisist through copy construction, operator=, and file IO. More... | |
int | SetUserStrings (int count, const ON_UserString *user_strings, bool bReplace) |
Append entries to the user string list More... | |
void | TransformUserData (const class ON_Xform &xform) |
Objects derived from ON_Geometry must call TransformUserData() in their Transform() member function. More... | |
virtual bool | UpdateReferencedComponents (const class ON_ComponentManifest &source_manifest, const class ON_ComponentManifest &destination_manifest, const class ON_ManifestMap &manifest_map) |
Uses the destination_manifest to update references to other components. This is typically done when a component's references came from a "source" context and are being updated to the "destination" context. For example, inserting one model into another when index, id, and name conflicts need to be resolved at the time of insertion. More... | |
int | UserStringCount () const |
virtual bool | Write (ON_BinaryArchive &binary_archive) const |
Low level archive writing tool used by ON_BinaryArchive::WriteObject(). More... | |
Additional Inherited Members | |
Static Public Attributes inherited from ON_Geometry | |
static const ON_Geometry | Unset |
enum ON_Surface::ISO |
ON_Surface::ON_Surface | ( | ) |
ON_Surface::ON_Surface | ( | const ON_Surface & | ) |
|
virtual |
Overrides virtual ON_Geometry::HasBrepForm. Uses ON_Brep::Create( ON_Surface&* ) to create a brep form. The surface is copied for use in the returned brep.
brep | [in] if not nullptr, brep is used to store the brep form of the surface. Result: Returns a pointer to on ON_Brep or nullptr. If the brep parameter is not nullptr, then brep is returned if the surface has a brep form and nullptr is returned if the geometry does not have a brep form. |
The caller is responsible for managing the brep memory.
Reimplemented from ON_Geometry.
|
pure virtual |
Implemented in ON_NurbsSurface, ON_Extrusion, ON_SumSurface, ON_RevSurface, ON_SurfaceProxy, and ON_PlaneSurface.
|
overridevirtual |
virtual ON_Object::DestroyRuntimeCache override
Reimplemented from ON_Object.
Reimplemented in ON_SurfaceProxy.
void ON_Surface::DestroySurfaceTree | ( | ) |
|
pure virtual |
Implemented in ON_NurbsSurface, ON_Extrusion, ON_SumSurface, ON_RevSurface, ON_PlaneSurface, and ON_SurfaceProxy.
|
virtual |
Get a duplicate of the surface.
The caller must delete the returned surface. For non-ON_SurfaceProxy objects, this simply duplicates the surface using ON_Object::Duplicate. For ON_SurfaceProxy objects, this duplicates the actual proxy surface geometry and, if necessary, transposes the result to that the returned surfaces's parameterization and locus match the proxy surface's.
Reimplemented in ON_SurfaceProxy.
bool ON_Surface::Ev1Der | ( | double | u, |
double | v, | ||
ON_3dPoint & | point, | ||
ON_3dVector & | du, | ||
ON_3dVector & | dv, | ||
int | quadrant = 0 , |
||
int * | hint = 0 |
||
) | const |
bool ON_Surface::Ev2Der | ( | double | u, |
double | v, | ||
ON_3dPoint & | point, | ||
ON_3dVector & | du, | ||
ON_3dVector & | dv, | ||
ON_3dVector & | duu, | ||
ON_3dVector & | duv, | ||
ON_3dVector & | dvv, | ||
int | quadrant = 0 , |
||
int * | hint = 0 |
||
) | const |
|
pure virtual |
work horse evaluator
Implemented in ON_NurbsSurface, ON_RevSurface, ON_SumSurface, ON_SurfaceProxy, ON_PlaneSurface, ON_OffsetSurface, and ON_Extrusion.
|
overridevirtual |
virtual ON_Geometry override
Reimplemented from ON_Geometry.
bool ON_Surface::EvNormal | ( | double | u, |
double | v, | ||
ON_3dPoint & | point, | ||
ON_3dVector & | normal, | ||
int | quadrant = 0 , |
||
int * | hint = 0 |
||
) | const |
bool ON_Surface::EvNormal | ( | double | u, |
double | v, | ||
ON_3dVector & | normal, | ||
int | quadrant = 0 , |
||
int * | hint = 0 |
||
) | const |
bool ON_Surface::EvNormal | ( | double | u, |
double | v, | ||
ON_3dPoint & | point, | ||
ON_3dVector & | du, | ||
ON_3dVector & | dv, | ||
ON_3dVector & | normal, | ||
int | = 0 , |
||
int * | = 0 |
||
) | const |
bool ON_Surface::EvPoint | ( | double | u, |
double | v, | ||
ON_3dPoint & | point, | ||
int | quadrant = 0 , |
||
int * | hint = 0 |
||
) | const |
|
virtual |
Pure virtual function. Default returns false. Where possible, analytically extends surface to include domain.
dir | [in] 0 new Domain(0) will include domain. (the first surface parameter). 1 new Domain(1) will include domain. (the second surface parameter). |
domain | [in] if domain is not included in surface domain, surface will be extended so that its domain includes domain. Will not work if surface is closed in direction dir. Original surface is identical to the restriction of the resulting surface to the original surface domain, |
Reimplemented in ON_NurbsSurface, ON_SumSurface, ON_RevSurface, ON_PlaneSurface, and ON_Extrusion.
bool ON_Surface::FrameAt | ( | double | u, |
double | v, | ||
ON_Plane & | frame | ||
) | const |
bool ON_Surface::GetDomain | ( | int | dir, |
double * | t0, | ||
double * | t1 | ||
) | const |
surface interface
|
virtual |
Search for a derivatitive, tangent, or curvature discontinuity.
dir | [in] If 0, then "u" parameter is checked. If 1, then the "v" parameter is checked. |
c | [in] type of continity to test for. |
t0 | [in] Search begins at t0. If there is a discontinuity at t0, it will be ignored. This makes it possible to repeatedly call GetNextDiscontinuity and step through the discontinuities. |
t1 | [in] (t0 != t1) If there is a discontinuity at t1 is will be ingored unless c is a locus discontinuity type and t1 is at the start or end of the curve. |
t | [out] if a discontinuity is found, then *t reports the parameter at the discontinuity. |
hint | [in/out] if GetNextDiscontinuity will be called repeatedly, passing a "hint" with initial value *hint=0 will increase the speed of the search. |
dtype | [out] if not nullptr, *dtype reports the kind of discontinuity found at *t. A value of 1 means the first derivative or unit tangent was discontinuous. A value of 2 means the second derivative or curvature was discontinuous. A value of 0 means teh curve is not closed, a locus discontinuity test was applied, and t1 is at the start of end of the curve. |
cos_angle_tolerance | [in] default = cos(1 degree) Used only when c is ON::continuity::G1_continuous or ON::continuity::G2_continuous. If the cosine of the angle between two tangent vectors is <= cos_angle_tolerance, then a G1 discontinuity is reported. |
curvature_tolerance | [in] (default = ON_SQRT_EPSILON) Used only when c is ON::continuity::G2_continuous. If K0 and K1 are curvatures evaluated from above and below and |K0 - K1| > curvature_tolerance, then a curvature discontinuity is reported. |
Parametric continuity tests c = (C0_continuous, ..., G2_continuous):
true if a parametric discontinuity was found strictly between t0 and t1. Note well that all curves are parametrically continuous at the ends of their domains.
Locus continuity tests c = (C0_locus_continuous, ...,G2_locus_continuous):
true if a locus discontinuity was found strictly between t0 and t1 or at t1 is the at the end of a curve. Note well that all open curves (IsClosed()=false) are locus discontinuous at the ends of their domains. All closed curves (IsClosed()=true) are at least C0_locus_continuous at the ends of their domains.
Reimplemented in ON_NurbsSurface, ON_RevSurface, ON_SumSurface, ON_SurfaceProxy, ON_Extrusion, and ON_PlaneSurface.
|
virtual |
Get a NURBS surface representation of this surface.
nurbs_surface | [out] NURBS representation returned here |
tolerance | [in] tolerance to use when creating NURBS representation. |
s_subdomain | [in] if not nullptr, then the NURBS representation for this portion of the surface is returned. |
t_subdomain | [in] if not nullptr, then the NURBS representation for this portion of the surface is returned. |
This is a low-level virtual function. If you do not need the parameterization information provided by the return code, then ON_Surface::NurbsSurface may be easier to use.
Reimplemented in ON_NurbsSurface, ON_RevSurface, ON_PlaneSurface, ON_SumSurface, ON_SurfaceProxy, and ON_Extrusion.
|
virtual |
Reimplemented in ON_RevSurface, ON_SumSurface, ON_SurfaceProxy, and ON_Extrusion.
|
virtual |
Reimplemented in ON_NurbsSurface, ON_Extrusion, ON_SumSurface, ON_RevSurface, ON_SurfaceProxy, and ON_PlaneSurface.
|
pure virtual |
Implemented in ON_NurbsSurface, ON_Extrusion, ON_SumSurface, ON_RevSurface, ON_SurfaceProxy, and ON_PlaneSurface.
|
virtual |
Reimplemented in ON_Extrusion.
|
virtual |
Reimplemented in ON_RevSurface, ON_SumSurface, ON_SurfaceProxy, and ON_Extrusion.
|
virtual |
Get an estimate of the size of the rectangle that would be created if the 3d surface where flattened into a rectangle.
width | [out] (corresponds to the first surface parameter) |
height | [out] (corresponds to the first surface parameter) |
Reimplemented in ON_NurbsSurface, ON_Extrusion, ON_SumSurface, ON_RevSurface, ON_SurfaceProxy, and ON_PlaneSurface.
|
overridevirtual |
Overrides virtual ON_Geometry::HasBrepForm and returns true. Result: Returns true.
Reimplemented from ON_Geometry.
|
virtual |
Is there a NURBS surface representation of this surface.
This is a low-level virtual function.
Reimplemented in ON_NurbsSurface, ON_RevSurface, ON_PlaneSurface, ON_SumSurface, ON_SurfaceProxy, and ON_Extrusion.
int ON_Surface::IsAtSeam | ( | double | s, |
double | t | ||
) | const |
Test if a surface parameter value is at a seam.
s | [in] surface parameter to test |
t | [in] surface parameter to test |
bool ON_Surface::IsAtSingularity | ( | double | s, |
double | t, | ||
bool | bExact = true |
||
) | const |
Test if a surface parameter value is at a singularity.
s | [in] surface parameter to test |
t | [in] surface parameter to test |
bExact | [in] if true, test if s,t is exactly at a singularity if false, test if close enough to cause numerical problems. |
|
virtual |
Reimplemented in ON_NurbsSurface, ON_RevSurface, ON_SumSurface, ON_Extrusion, ON_SurfaceProxy, and ON_PlaneSurface.
bool ON_Surface::IsCone | ( | ON_Cone * | cone = nullptr , |
double | tolerance = ON_ZERO_TOLERANCE |
||
) | const |
Determine if the surface is a portion of a cone.
cone | [out] if not nullptr and true is returned, then the cone definition is returned. |
tolerance | [in] tolerance to use when checking |
|
virtual |
Test continuity at a surface parameter value.
c | [in] continuity to test for |
s | [in] surface parameter to test |
t | [in] surface parameter to test |
hint | [in] evaluation hint |
point_tolerance | [in] if the distance between two points is greater than point_tolerance, then the surface is not C0. |
d1_tolerance | [in] if the difference between two first derivatives is greater than d1_tolerance, then the surface is not C1. |
d2_tolerance | [in] if the difference between two second derivatives is greater than d2_tolerance, then the surface is not C2. |
cos_angle_tolerance | [in] default = cos(1 degree) Used only when c is ON::continuity::G1_continuous or ON::continuity::G2_continuous. If the cosine of the angle between two normal vectors is <= cos_angle_tolerance, then a G1 discontinuity is reported. |
curvature_tolerance | [in] (default = ON_SQRT_EPSILON) Used only when c is ON::continuity::G2_continuous. If K0 and K1 are curvatures evaluated from above and below and |K0 - K1| > curvature_tolerance, then a curvature discontinuity is reported. |
Reimplemented in ON_NurbsSurface, ON_RevSurface, ON_SumSurface, ON_SurfaceProxy, ON_PlaneSurface, and ON_Extrusion.
bool ON_Surface::IsCylinder | ( | ON_Cylinder * | cylinder = nullptr , |
double | tolerance = ON_ZERO_TOLERANCE |
||
) | const |
Determine if the surface is a portion of a cylinder.
cylinder | [out] if not nullptr and true is returned, then the cylinder definition is returned. |
tolerance | [in] tolerance to use when checking |
|
virtual |
Test a 2d curve to see if it is iso parameteric in the surface's parameter space.
curve | [in] curve to test curve_domain = [in] optional sub domain of the curve |
Because it may transpose domains, ON_SurfaceProxy overrides this function. All other surface classes just use the base class implementation.
Reimplemented in ON_Extrusion, and ON_SurfaceProxy.
|
virtual |
Test a 2d bounding box to see if it is iso parameteric in the surface's parameter space.
bbox | [in] bounding box to test |
Because it may transpose domains, ON_SurfaceProxy overrides this function. All other surface classes just use the base class implementation.
Reimplemented in ON_Extrusion, and ON_SurfaceProxy.
|
virtual |
Get isoparametric curve.
dir | [in] 0 first parameter varies and second parameter is constant e.g., point on IsoCurve(0,c) at t is srf(t,c) This is a horizontal line from left to right 1 first parameter is constant and second parameter varies e.g., point on IsoCurve(1,c) at t is srf(c,t This is a vertical line from bottom to top |
c | [in] value of constant parameter |
In this function "dir" indicates which direction the resulting curve runs. 0: horizontal, 1: vertical In the other ON_Surface functions that take a "dir" argument, "dir" indicates if "c" is a "u" or "v" parameter.
Reimplemented in ON_NurbsSurface, ON_RevSurface, ON_SumSurface, ON_SurfaceProxy, ON_PlaneSurface, and ON_Extrusion.
|
virtual |
Reimplemented in ON_NurbsSurface, ON_RevSurface, ON_SumSurface, ON_Extrusion, ON_SurfaceProxy, and ON_PlaneSurface.
|
virtual |
Test a surface to see if it is planar.
plane | [out] if not nullptr and true is returned, the plane parameters are filled in. |
tolerance | [in] tolerance to use when checking |
Reimplemented in ON_NurbsSurface, ON_RevSurface, ON_SumSurface, ON_Extrusion, ON_SurfaceProxy, and ON_PlaneSurface.
|
virtual |
Reimplemented in ON_NurbsSurface, ON_RevSurface, ON_SumSurface, ON_SurfaceProxy, and ON_PlaneSurface.
bool ON_Surface::IsSolid | ( | ) | const |
bool ON_Surface::IsSphere | ( | ON_Sphere * | sphere = nullptr , |
double | tolerance = ON_ZERO_TOLERANCE |
||
) | const |
Determine if the surface is a portion of a sphere.
sphere | [out] if not nullptr and true is returned, then the sphere definition is returned. |
tolerance | [in] tolerance to use when checking |
bool ON_Surface::IsTorus | ( | ON_Torus * | torus = nullptr , |
double | tolerance = ON_ZERO_TOLERANCE |
||
) | const |
Determine if the surface is a portion of a torus.
torus | [out] if not nullptr and true is returned, then the torus definition is returned. |
tolerance | [in] tolerance to use when checking |
ON_3dVector ON_Surface::NormalAt | ( | double | , |
double | |||
) | const |
ON_NurbsSurface* ON_Surface::NurbsSurface | ( | ON_NurbsSurface * | pNurbsSurface = nullptr , |
double | tolerance = 0.0 , |
||
const ON_Interval * | s_subdomain = nullptr , |
||
const ON_Interval * | t_subdomain = nullptr |
||
) | const |
Get a NURBS surface representation of this surface.
pNurbsSurface | [in/out] if not nullptr, this pNurbsSurface will be used to store the NURBS representation of the surface and will be returned. |
tolerance | [in] tolerance to use when creating NURBS surface representation. |
s_subdomain | [in] if not nullptr, then the NURBS representation for this portion of the surface is returned. |
t_subdomain | [in] if not nullptr, then the NURBS representation for this portion of the surface is returned. |
See ON_Surface::GetNurbForm for important details about the NURBS surface parameterization.
|
overridevirtual |
override ON_Object::ObjectType() - returns ON::surface_object
Reimplemented from ON_Object.
ON_Surface& ON_Surface::operator= | ( | const ON_Surface & | ) |
ON_3dPoint ON_Surface::PointAt | ( | double | , |
double | |||
) | const |
simple evaluation interface - no error handling
|
pure virtual |
Implemented in ON_BrepFace, ON_NurbsSurface, ON_RevSurface, ON_SumSurface, ON_SurfaceProxy, ON_PlaneSurface, and ON_Extrusion.
bool ON_Surface::SetDomain | ( | int | dir, |
ON_Interval | domain | ||
) |
|
virtual |
Reimplemented in ON_BrepFace, ON_NurbsSurface, ON_Extrusion, ON_SumSurface, ON_RevSurface, and ON_PlaneSurface.
|
overridevirtual |
|
pure virtual |
Implemented in ON_NurbsSurface, ON_Extrusion, ON_SumSurface, ON_RevSurface, ON_SurfaceProxy, and ON_PlaneSurface.
|
virtual |
Splits (divides) the surface into two parts at the specified parameter.
dir | [in] 0 The surface is split vertically. The "west" side is returned in "west_or_south_side" and the "east" side is returned in "east_or_north_side". 1 The surface is split horizontally. The "south" side is returned in "west_or_south_side" and the "north" side is returned in "east_or_north_side". |
c | [in] value of constant parameter in interval returned by Domain(dir) |
west_or_south_side | [out] west/south portion of surface returned here |
east_or_north_side | [out] east/north portion of surface returned here |
Reimplemented in ON_NurbsSurface, ON_SumSurface, ON_RevSurface, ON_PlaneSurface, and ON_Extrusion.
|
pure virtual |
Implemented in ON_BrepFace, ON_NurbsSurface, ON_RevSurface, ON_SumSurface, ON_SurfaceProxy, ON_PlaneSurface, and ON_Extrusion.
|
virtual |
Removes the portions of the surface outside of the specified interval.
dir | [in] 0 The domain specifies an sub-interval of Domain(0) (the first surface parameter). 1 The domain specifies an sub-interval of Domain(1) (the second surface parameter). |
domain | [in] interval of the surface to keep. If dir is 0, then the portions of the surface with parameters (s,t) satisfying s < Domain(0).Min() or s > Domain(0).Max() are trimmed away. If dir is 1, then the portions of the surface with parameters (s,t) satisfying t < Domain(1).Min() or t > Domain(1).Max() are trimmed away. |
Reimplemented in ON_NurbsSurface, ON_SumSurface, ON_RevSurface, ON_PlaneSurface, and ON_Extrusion.