|
openNURBS SDK Help
6.0
|
#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 } |
Public Member Functions | |
| ON_Surface () | |
| ON_Surface (const ON_Surface &) | |
| virtual | ~ON_Surface () |
| ON_Brep * | BrepForm (ON_Brep *brep=nullptr) const override |
| 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 |
| 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) |
| 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 |
| virtual int | GetNurbForm (ON_NurbsSurface &nurbs_surface, double tolerance=0.0) const |
| 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 |
| bool | HasBrepForm () const override |
| virtual int | HasNurbForm () const |
| int | IsAtSeam (double s, double t) const |
| bool | IsAtSingularity (double s, double t, bool bExact=true) const |
| virtual bool | IsClosed (int) const |
| bool | IsCone (ON_Cone *cone=nullptr, double tolerance=ON_ZERO_TOLERANCE) const |
| 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 |
| bool | IsCylinder (ON_Cylinder *cylinder=nullptr, double tolerance=ON_ZERO_TOLERANCE) const |
| virtual ISO | IsIsoparametric (const ON_Curve &curve, const ON_Interval *curve_domain=nullptr) const |
| virtual ISO | IsIsoparametric (const ON_BoundingBox &bbox) const |
| virtual ON_Curve * | IsoCurve (int dir, double c) const |
| virtual bool | IsPeriodic (int) const |
| virtual bool | IsPlanar (ON_Plane *plane=nullptr, double tolerance=ON_ZERO_TOLERANCE) const |
| virtual bool | IsSingular (int) const |
| bool | IsSolid () const |
| bool | IsSphere (ON_Sphere *sphere=nullptr, double tolerance=ON_ZERO_TOLERANCE) const |
| bool | IsTorus (ON_Torus *torus=nullptr, double tolerance=ON_ZERO_TOLERANCE) const |
| 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 |
| 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 |
| number of smooth nonempty spans in the parameter direction More... | |
| virtual bool | Split (int dir, double c, ON_Surface *&west_or_south_side, ON_Surface *&east_or_north_side) const |
| virtual bool | Transpose ()=0 |
| transpose surface parameterization (swap "s" and "t") More... | |
| virtual bool | Trim (int dir, const ON_Interval &domain) |
Public Member Functions inherited from ON_Geometry | |
| ON_Geometry ()=default | |
| ON_Geometry (const ON_Geometry &)=default | |
| ~ON_Geometry ()=default | |
| ON_BoundingBox | BoundingBox () const |
| virtual void | ClearBoundingBox () |
| virtual ON_COMPONENT_INDEX | ComponentIndex () const |
| virtual int | Dimension () const |
| virtual bool | GetBBox (double *boxmin, double *boxmax, bool bGrowBox=false) const |
| bool | GetBoundingBox (ON_BoundingBox &bbox, bool bGrowBox=false) const |
| bool | GetBoundingBox (ON_3dPoint &bbox_min, ON_3dPoint &bbox_max, bool bGrowBox=false) const |
| virtual bool | GetTightBoundingBox (class ON_BoundingBox &tight_bbox, bool bGrowBox=false, const class ON_Xform *xform=nullptr) const |
| virtual bool | IsDeformable () const |
| bool | IsValid (class ON_TextLog *text_log=nullptr) const override |
| virtual bool | MakeDeformable () |
| 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) |
| bool | Rotate (double rotation_angle, const ON_3dVector &rotation_axis, const ON_3dPoint &rotation_center) |
| bool | Scale (double scale_factor) |
| virtual bool | SwapCoordinates (int i, int j) |
| virtual bool | Transform (const ON_Xform &xform) |
| bool | Translate (const ON_3dVector &translation_vector) |
Public Member Functions inherited from ON_Object | |
| ON_Object () ON_NOEXCEPT | |
| ON_Object (const ON_Object &) | |
| virtual | ~ON_Object () |
| virtual ON_AggregateComponentStatus | AggregateComponentStatus () const |
| bool | AttachUserData (class ON_UserData *pUserData) |
| unsigned int | ClearAllComponentStates () const |
| virtual unsigned int | ClearComponentStates (ON_ComponentStatus states_to_clear) const |
| virtual unsigned int | ClearComponentStates (ON_COMPONENT_INDEX component_index, ON_ComponentStatus states_to_clear) const |
| unsigned int | CopyUserData (const ON_Object &source_object, ON_UUID source_userdata_item_id, ON_Object::UserDataConflictResolution userdata_conflict_resolution) |
| void | CopyUserData (const ON_Object &source_object) |
| virtual ON__UINT32 | DataCRC (ON__UINT32 current_remainder) const |
| virtual bool | DeleteComponents (const ON_COMPONENT_INDEX *ci_list, size_t ci_count) |
| bool | DetachUserData (class ON_UserData *pUserData) |
| virtual void | Dump (ON_TextLog &) const |
| void | EmergencyDestroy () |
| class ON_UserData * | FirstUserData () const |
| 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 |
| bool | GetUserString (const wchar_t *key, ON_wString &string_value) const |
| int | GetUserStringKeys (ON_ClassArray< ON_wString > &user_string_keys) const |
| int | GetUserStrings (ON_ClassArray< ON_UserString > &user_strings) const |
| bool | IsKindOf (const ON_ClassId *pClassId) const |
| virtual void | MarkAggregateComponentStatusAsNotCurrent () const |
| virtual void | MemoryRelocate () |
| virtual ON_UUID | ModelObjectId () const |
| unsigned int | MoveUserData (ON_Object &source_object, ON_UUID source_userdata_item_id, ON_Object::UserDataConflictResolution userdata_conflict_resolution, bool bDeleteAllSourceItems) |
| void | MoveUserData (ON_Object &source_object) |
| ON_Object & | operator= (const ON_Object &) |
| void | PurgeUserData () |
| virtual bool | Read (ON_BinaryArchive &binary_archive) |
| virtual unsigned int | SetComponentStates (ON_COMPONENT_INDEX component_index, ON_ComponentStatus states_to_set) const |
| virtual unsigned int | SetComponentStatus (ON_COMPONENT_INDEX component_index, ON_ComponentStatus status_to_copy) const |
| bool | SetUserString (const wchar_t *key, const wchar_t *string_value) |
| int | SetUserStrings (int count, const ON_UserString *user_strings, bool bReplace) |
| void | TransformUserData (const class ON_Xform &xform) |
| virtual bool | UpdateReferencedComponents (const class ON_ComponentManifest &source_manifest, const class ON_ComponentManifest &destination_manifest, const class ON_ManifestMap &manifest_map) |
| int | UserStringCount () const |
| virtual bool | Write (ON_BinaryArchive &binary_archive) const |
Additional Inherited Members | |
Static Public Attributes inherited from ON_Geometry | |
| static const ON_Geometry | Unset |
| enum ON_Surface::ISO |
pure virtual class for surface objects
flags for isoparametric curves note: odd values are all "x" = constant and even values > 0 are all "y" = constant ON_BrepTrim::m_iso uses these flags
| ON_Surface::ON_Surface | ( | ) |
| ON_Surface::ON_Surface | ( | const ON_Surface & | ) |
|
virtual |
Description: 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. Parameters: 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. Remarks: The caller is responsible for managing the brep memory.
Reimplemented from ON_Geometry.
|
pure virtual |
| dir | returns maximum algebraic degree of any span ( or a good estimate if curve spans are not algebraic ) 0 gets first parameter's domain, 1 gets second parameter's domain |
Implemented in ON_NurbsSurface, ON_Extrusion, ON_SumSurface, ON_RevSurface, ON_PlaneSurface, and ON_SurfaceProxy.
|
overridevirtual |
virtual ON_Object::DestroyRuntimeCache override
Reimplemented from ON_Object.
Reimplemented in ON_SurfaceProxy.
| void ON_Surface::DestroySurfaceTree | ( | ) |
If the geometry surface is modified in any way, then call DestroySurfaceTree().
|
pure virtual |
| dir | 0 gets first parameter's domain, 1 gets second parameter's domain |
Implemented in ON_NurbsSurface, ON_Extrusion, ON_SumSurface, ON_RevSurface, ON_PlaneSurface, and ON_SurfaceProxy.
|
virtual |
Description: Get a duplicate of the surface. Returns: A duplicate of the surface. Remarks: 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 |
| u | returns false if unable to evaluate |
| v | evaluation parameters (s,t) |
| point | returns value of surface |
| du | first partial derivatives (Ds) |
| dv | (Dt) |
| quadrant | optional - determines which side to evaluate from 0 = default 1 from NE quadrant 2 from NW quadrant 3 from SW quadrant 4 from SE quadrant |
| hint | optional - evaluation hint (int[2]) used to speed repeated evaluations |
| 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 |
| u | returns false if unable to evaluate |
| v | evaluation parameters (s,t) |
| point | returns value of surface |
| du | first partial derivatives (Ds) |
| dv | (Dt) |
| duu | second partial derivatives (Dss) |
| duv | (Dst) |
| dvv | (Dtt) |
| quadrant | optional - determines which side to evaluate from 0 = default 1 from NE quadrant 2 from NW quadrant 3 from SW quadrant 4 from SE quadrant |
| hint | optional - evaluation hint (int[2]) used to speed repeated evaluations |
|
pure virtual |
work horse evaluator
| u | returns false if unable to evaluate |
| v | evaluation parameters |
| num_der | number of derivatives (>=0) |
| array_stride | array stride (>=Dimension()) |
| der_array | array of length stride*(ndir+1)*(ndir+2)/2 |
| quadrant | optional - determines which quadrant to evaluate from 0 = default 1 from NE quadrant 2 from NW quadrant 3 from SW quadrant 4 from SE quadrant |
| hint | optional - evaluation hint (int[2]) used to speed repeated evaluations |
Implemented in ON_NurbsSurface, ON_RevSurface, ON_SumSurface, ON_OffsetSurface, ON_SurfaceProxy, ON_PlaneSurface, 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 |
| u | returns false if unable to evaluate |
| v | evaluation parameters (s,t) |
| point | returns value of surface |
| normal | unit normal |
| quadrant | optional - determines which side to evaluate from 0 = default 1 from NE quadrant 2 from NW quadrant 3 from SW quadrant 4 from SE quadrant |
| hint | optional - evaluation hint (int[2]) used to speed repeated evaluations |
| bool ON_Surface::EvNormal | ( | double | u, |
| double | v, | ||
| ON_3dVector & | normal, | ||
| int | quadrant = 0, |
||
| int * | hint = 0 |
||
| ) | const |
| u | returns false if unable to evaluate |
| v | evaluation parameters (s,t) |
| normal | unit normal |
| quadrant | optional - determines which side to evaluate from 0 = default 1 from NE quadrant 2 from NW quadrant 3 from SW quadrant 4 from SE quadrant |
| hint | optional - evaluation hint (int[2]) used to speed repeated evaluations |
| 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 |
| u | returns false if unable to evaluate |
| v | evaluation parameters (s,t) |
| point | returns value of surface |
| du | first partial derivatives (Ds) |
| dv | (Dt) |
| normal | unit normal |
| bool ON_Surface::EvPoint | ( | double | u, |
| double | v, | ||
| ON_3dPoint & | point, | ||
| int | quadrant = 0, |
||
| int * | hint = 0 |
||
| ) | const |
| u | returns false if unable to evaluate |
| v | evaluation parameters |
| point | returns value of surface |
| quadrant | optional - determines which side to evaluate from 0 = default 1 from NE quadrant 2 from NW quadrant 3 from SW quadrant 4 from SE quadrant |
| hint | optional - evaluation hint (int[2]) used to speed repeated evaluations |
|
virtual |
Description: Pure virtual function. Default returns false. Where possible, analytically extends surface to include domain. Parameters: 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, Returns: true if successful.
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
| dir | 0 gets first parameter, 1 gets second parameter |
|
virtual |
Description: Search for a derivatitive, tangent, or curvature discontinuity. Parameters: 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. Returns: 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_Extrusion, ON_SurfaceProxy, and ON_PlaneSurface.
|
virtual |
Description: Get a NURBS surface representation of this surface. Parameters: 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. Returns: 0 unable to create NURBS representation with desired accuracy. 1 success - returned NURBS parameterization matches the surface's to wthe desired accuracy 2 success - returned NURBS point locus matches the surface's to the desired accuracy and the domain of the NURBS surface is correct. On However, This surface's parameterization and the NURBS surface parameterization may not match to the desired accuracy. This situation happens when getting NURBS representations of surfaces that have a transendental parameterization like spheres, cylinders, and cones. Remarks: 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. See Also: ON_Surface::NurbsSurface
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 |
| dir | returns tminus < tplus: parameters tminus <= s <= tplus 0 gets first parameter, 1 gets second parameter |
| t | t = parameter in domain |
| tminus | tminus |
| tplus | tplus |
Reimplemented in ON_NurbsSurface, ON_Extrusion, ON_SumSurface, ON_RevSurface, ON_PlaneSurface, and ON_SurfaceProxy.
|
pure virtual |
| dir | span "knots" 0 gets first parameter's domain, 1 gets second parameter's domain |
| span_vector | array of length SpanCount() + 1 |
Implemented in ON_NurbsSurface, ON_Extrusion, ON_SumSurface, ON_RevSurface, ON_PlaneSurface, and ON_SurfaceProxy.
|
virtual |
If t is in the domain of the surface, GetSpanVectorIndex() returns the span vector index "i" such that span_vector[i] <= t <= span_vector[i+1]. The "side" parameter determines which span is selected when t is at the end of a span.
| dir | 0 gets first parameter's domain, 1 gets second parameter's domain | |
| [in] | t | t = evaluation parameter |
| [in] | side | side 0 = default, -1 = from below, +1 = from above |
| [out] | span_vector_index | span vector index |
| [out] | span_interval | domain of the span containing "t" |
Reimplemented in ON_Extrusion.
|
virtual |
Reimplemented in ON_RevSurface, ON_SumSurface, ON_SurfaceProxy, and ON_Extrusion.
|
virtual |
Description: Get an estimate of the size of the rectangle that would be created if the 3d surface where flattened into a rectangle. Parameters: width - [out] (corresponds to the first surface parameter) height - [out] (corresponds to the first surface parameter) Example:
/ Reparameterize a surface to minimize distortion / in the map from parameter space to 3d. ON_Surface* surf = ...; double width, height; if ( surf->GetSurfaceSize( &width, &height ) ) { srf->SetDomain( 0, ON_Interval( 0.0, width ) ); srf->SetDomain( 1, ON_Interval( 0.0, height ) ); }
Returns: true if successful.
Reimplemented in ON_NurbsSurface, ON_Extrusion, ON_SumSurface, ON_RevSurface, ON_PlaneSurface, and ON_SurfaceProxy.
|
overridevirtual |
virtual ON_Geometry functions Description: Overrides virtual ON_Geometry::HasBrepForm and returns true. Result: Returns true. See Also: ON_Brep::Create( ON_Surface&* )
Reimplemented from ON_Geometry.
|
virtual |
Description: Is there a NURBS surface representation of this surface. Parameters: Returns: 0 unable to create NURBS representation with desired accuracy. 1 success - NURBS parameterization matches the surface's 2 success - NURBS point locus matches the surface's and the domain of the NURBS surface is correct. However, This surface's parameterization and the NURBS surface parameterization may not match. This situation happens when getting NURBS representations of surfaces that have a transendental parameterization like spheres, cylinders, and cones. Remarks: This is a low-level virtual function. See Also: ON_Surface::GetNurbForm ON_Surface::NurbsSurface
Reimplemented in ON_NurbsSurface, ON_RevSurface, ON_PlaneSurface, ON_SumSurface, ON_SurfaceProxy, and ON_Extrusion.
| int ON_Surface::IsAtSeam | ( | double | s, |
| double | t | ||
| ) | const |
Description: Test if a surface parameter value is at a seam. Parameters: s - [in] surface parameter to test t - [in] surface parameter to test Returns: 0 if not a seam, 1 if s == Domain(0)[i] and srf(s, t) == srf(Domain(0)[1-i], t) 2 if t == Domain(1)[i] and srf(s, t) == srf(s, Domain(1)[1-i]) 3 if 1 and 2 are true.
| bool ON_Surface::IsAtSingularity | ( | double | s, |
| double | t, | ||
| bool | bExact = true |
||
| ) | const |
Description: Test if a surface parameter value is at a singularity. Parameters: 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. Returns: true if surface is singular at (s,t)
|
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 |
Description: Determine if the surface is a portion of a cone. Parameters: cone - [out] if not nullptr and true is returned, then the cone definition is returned. tolerance - [in] tolerance to use when checking Returns: True if the surface is a portion of a cone.
|
virtual |
Description: Test continuity at a surface parameter value. Parameters: 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. Returns: true if the surface has at least the c type continuity at the parameter t.
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 |
Description: Determine if the surface is a portion of a cylinder. Parameters: cylinder - [out] if not nullptr and true is returned, then the cylinder definition is returned. tolerance - [in] tolerance to use when checking Returns: True if the surface is a portion of a cylinder.
|
virtual |
Description: Test a 2d curve to see if it is iso parameteric in the surface's parameter space. Parameters: curve - [in] curve to test curve_domain = [in] optional sub domain of the curve Returns: Isoparametric status of the curve. Remarks: 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 |
Description: Test a 2d bounding box to see if it is iso parameteric in the surface's parameter space. Parameters: bbox - [in] bounding box to test Returns: Isoparametric status of the bounding box. Remarks: 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 |
Description: Get isoparametric curve. Parameters: 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 Returns: Isoparametric curve. Remarks: 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_PlaneSurface, ON_SurfaceProxy, and ON_Extrusion.
|
virtual |
Reimplemented in ON_NurbsSurface, ON_RevSurface, ON_SumSurface, ON_Extrusion, ON_SurfaceProxy, and ON_PlaneSurface.
|
virtual |
Description: Test a surface to see if it is planar. Parameters: plane - [out] if not nullptr and true is returned, the plane parameters are filled in. tolerance - [in] tolerance to use when checking Returns: true if there is a plane such that the maximum distance from the surface to the plane is <= tolerance.
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 |
Returns: True if the surface defines a solid, like a sphere or torus. False if the surface does not define a solid, like a plane or cone.
| bool ON_Surface::IsSphere | ( | ON_Sphere * | sphere = nullptr, |
| double | tolerance = ON_ZERO_TOLERANCE |
||
| ) | const |
Description: Determine if the surface is a portion of a sphere. Parameters: sphere - [out] if not nullptr and true is returned, then the sphere definition is returned. tolerance - [in] tolerance to use when checking Returns: True if the surface is a portion of a sphere.
| bool ON_Surface::IsTorus | ( | ON_Torus * | torus = nullptr, |
| double | tolerance = ON_ZERO_TOLERANCE |
||
| ) | const |
Description: Determine if the surface is a portion of a torus. Parameters: torus - [out] if not nullptr and true is returned, then the torus definition is returned. tolerance - [in] tolerance to use when checking Returns: True if the surface is a portion of a torus.
| 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 |
Description: Get a NURBS surface representation of this surface. Parameters: 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. Returns: nullptr or a NURBS representation of the surface. Remarks: See ON_Surface::GetNurbForm for important details about the NURBS surface parameterization. See Also: ON_Surface::GetNurbForm
|
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 | ||
| ) |
| dir | 0 sets first parameter's domain, 1 gets second parameter's domain |
|
virtual |
| dir | 0 sets first parameter's domain, 1 gets second parameter's domain |
Reimplemented in ON_BrepFace, ON_NurbsSurface, ON_Extrusion, ON_SumSurface, ON_RevSurface, and ON_PlaneSurface.
|
overridevirtual |
|
pure virtual |
number of smooth nonempty spans in the parameter direction
| dir | 0 gets first parameter's domain, 1 gets second parameter's domain |
Implemented in ON_NurbsSurface, ON_Extrusion, ON_SumSurface, ON_RevSurface, ON_PlaneSurface, and ON_SurfaceProxy.
|
virtual |
Description: Splits (divides) the surface into two parts at the specified parameter.
Parameters: 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
Example:
ON_NurbsSurface srf = ...;
int dir = 1;
ON_NurbsSurface* south_side = 0;
ON_NurbsSurface* north_side = 0;
srf.Split( dir, srf.Domain(dir).Mid() south_side, north_side );
Reimplemented in ON_NurbsSurface, ON_SumSurface, ON_RevSurface, ON_PlaneSurface, and ON_Extrusion.
|
pure virtual |
transpose surface parameterization (swap "s" and "t")
Implemented in ON_BrepFace, ON_NurbsSurface, ON_RevSurface, ON_SumSurface, ON_SurfaceProxy, ON_PlaneSurface, and ON_Extrusion.
|
virtual |
Description: Removes the portions of the surface outside of the specified interval.
Parameters: 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.
1.8.13