Base class for geometrical surfaces. More...
Public Member Functions | |
ModelData_Surface () | |
Constructor. | |
ModelData_Surface (const ModelData_Surface &theOther) | |
Constructor. | |
ModelData_Surface (ModelData_Surface &&theOther) | |
Constructor. | |
~ModelData_Surface () | |
Destructor. | |
ModelData_Surface & | operator= (const ModelData_Surface &theOther) |
Assignment operator. | |
ModelData_Surface & | operator= (ModelData_Surface &&theOther) |
Move assignment operator. | |
ModelData_SurfaceType | Type () const |
Returns a surface type. | |
bool | IsNull () const |
Returns true if the object has not been initialized yet. | |
void | Nullify () |
Resets the object. | |
operator bool () const | |
bool | IsUPeriodic () const |
Returns true if the surface is periodic in U direction. | |
bool | IsVPeriodic () const |
Returns true if the surface is periodic in V direction. | |
double | UMin () const |
Returns a minimum parameter of a definition domain in U direction. | |
double | UMax () const |
Returns a maximum parameter of a definition domain in U direction. | |
double | VMin () const |
Returns a minimum parameter of a definition domain in V direction. | |
double | VMax () const |
Returns a maximum parameter of a definition domain in V direction. | |
void | Domain (double &theUMin, double &theUMax, double &theVMin, double &theVMax) const |
Returns a definition domain. | |
ModelData_Point | Value (double theParameterU, double theParameterV) const |
Evaluates a point on the surface. | |
void | Transform (const ModelData_Transformation &theTransformation) |
Applies transformation matrix to this object. | |
ModelData_Surface | Transformed (const ModelData_Transformation &theTransformation) const |
Returns a copy this object after applying transformation. | |
ModelData_Continuity | Continuity () const |
Returns a continuity type of the surface. | |
void | D0 (double theParameterU, double theParameterV, ModelData_Point &theValue) const |
Returns the point theValue of parameter theU, theV on the surface. | |
void | D1 (double theParameterU, double theParameterV, ModelData_Point &theValue, ModelData_Vector &theD1U, ModelData_Vector &theD1V) const |
Returns the point theValue and the first derivatives in the directions U theD1U and V theD1V at this point. | |
void | D2 (double theParameterU, double theParameterV, ModelData_Point &theValue, ModelData_Vector &theD1U, ModelData_Vector &theD1V, ModelData_Vector &theD2U, ModelData_Vector &theD2V, ModelData_Vector &theD2UV) const |
Returns the point theValue, the first and the second derivatives in the directions U and V at this point. | |
bool | DN (double theParameterU, double theParameterV, size_t theDerivativeOrder, ModelData_Point &theValue, ModelData_Vector theD[]) const |
void | Curvature (double theParameterU, double theParameterV, ModelData_Vector &thePrincipalMaxDirection, ModelData_Vector &thePrincipalMinDirection) const |
Returns the max and min principal curvature directions multiplied by max and min value of curvature respectively. | |
void | Curvature (double theParameterU, double theParameterV, ModelData_Direction &thePrincipalMaxDirection, ModelData_Direction &thePrincipalMinDirection, double &theMaxCurvature, double &theMinCurvature) const |
Returns the max and min principal curvature directions and their values. | |
void | Normal (double theParameterU, double theParameterV, ModelData_Direction &theNormal) const |
Returns the normal direction theNormal at the current point. | |
void | Mirror (const ModelData_Point &thePoint) |
Mirrors the surface relative to the point. | |
void | Mirror (const ModelData_Axis1Placement &theAxis) |
Mirrors the surface relative to the axis placement. | |
void | Mirror (const ModelData_Axis2Placement &theAxis) |
Mirrors the surface relative to the axis placement. | |
ModelData_Surface | Mirrored (const ModelData_Point &theRef) const |
Returns a copy this surface mirrored along the object. | |
ModelData_Surface | Mirrored (const ModelData_Axis1Placement &theAxis) const |
Returns a copy this surface mirrored along the object. | |
ModelData_Surface | Mirrored (const ModelData_Axis2Placement &theAxis) const |
Returns a copy this surface mirrored along the object. | |
void | Rotate (const ModelData_Axis1Placement &theAxis, double theAngle) |
Rotates the surface around the axis. | |
ModelData_Surface | Rotated (const ModelData_Axis1Placement &theAxis, double theAngle) const |
Returns a copy this surface rotated along the axis. | |
void | Translate (const ModelData_Vector &theVector) |
Translates the surface along the vector. | |
ModelData_Surface | Translated (const ModelData_Vector &theVector) const |
Returns a copy this surface translated along the vector. | |
void | Scale (const ModelData_Point &thePoint, double theScale) |
Scales the surface with respect to the point. | |
ModelData_Surface | Scaled (const ModelData_Point &thePoint, double theScale) const |
Returns a copy this surface scaled with respect to the point. | |
Base class for geometrical surfaces.
Surfaces in 3D space are used to represent boundaries of a body (e.g. solid or sheet body). Each face must refer to a surface.
Refer to Surface Types for the list of supported surface types. Type() returns a surface type as enumeration value which can be used to downcast to a respective subclass type, for instance:
Surface is defined using parametric definition as \(\mathbf{S}(u,v)\) where \(\mathbf{S}\) is a 3D radius-vector \((x,y,z)\) and \((u, v)\) are parameters from a definition domain \([u_{min}, u_{max}]\times[v_{min}, v_{max}]\).
UMin(), UMax() and VMin(), VMax(), and Domain() return parametric definition range. Parametric range can be bounded (e.g. \([0, 1]\times[0, 1]\) for Bezier surface), unbounded (e.g. \((-\infty, +\infty)\times(-\infty, +\infty)\) for a plane), or semi-unbounded (e.g. \([0, 2\pi]\times(-\infty, +\infty)\) for cylindrical surface).
At any parameter u and v within a definition domain, the surface can be evaluated as follows:
The following example demonstrates computation of a point on a sphere at parameters \(u=\frac{\pi}{4}\), \(v=\frac{\pi}{6}\):
If the surface is periodic in U and/or V (IsUPeriodic() and/or IsVPeriodic() return true) then the surface can be evaluated at any parameter U and/or V, otherwise behavior is undefined (e.g. an exception can be thrown or a weird value can be returned).
Continuity() returns continuity (C0, C1, C2, CN) of the surface, minimum of U- and V- continuities, where C0 indicates continuity of the surface only, C1 - of its first derivative and so on.
The surface can be modified using the following operations:
void cadex::ModelData_Surface::D0 | ( | double | theU, |
double | theV, | ||
ModelData_Point & | theValue | ||
) | const |
Returns the point theValue of parameter theU, theV on the surface.
Throws exception only for the ModelData_OffsetSurface if it is not possible to compute the current point.
void cadex::ModelData_Surface::D1 | ( | double | theU, |
double | theV, | ||
ModelData_Point & | theValue, | ||
ModelData_Vector & | theD1U, | ||
ModelData_Vector & | theD1V | ||
) | const |
Returns the point theValue and the first derivatives in the directions U theD1U and V theD1V at this point.
Throws exception if the continuity of the surface is not C1.
void cadex::ModelData_Surface::D2 | ( | double | theU, |
double | theV, | ||
ModelData_Point & | theValue, | ||
ModelData_Vector & | theD1U, | ||
ModelData_Vector & | theD1V, | ||
ModelData_Vector & | theD2U, | ||
ModelData_Vector & | theD2V, | ||
ModelData_Vector & | theD2UV | ||
) | const |
Returns the point theValue, the first and the second derivatives in the directions U and V at this point.
Throws exception if the continuity of the surface is not C2.
bool cadex::ModelData_Surface::DN | ( | double | theU, |
double | theV, | ||
size_t | theDerivativeOrder, | ||
ModelData_Point & | theValue, | ||
ModelData_Vector | theD[] | ||
) | const |
Returns true if calculation was passed succsesfully, the returned vectors gives the value of the derivative for the order of derivation theDerivativeOrder. Otherwise returns false. Throws exception if the continuity of the surface is not CN.
Parameters:
void cadex::ModelData_Surface::Domain | ( | double & | theUMin, |
double & | theUMax, | ||
double & | theVMin, | ||
double & | theVMax | ||
) | const |
bool cadex::ModelData_Surface::IsNull | ( | ) | const |
Returns true if the object has not been initialized yet.
bool cadex::ModelData_Surface::IsUPeriodic | ( | ) | const |
Returns true if the surface is periodic in U direction.
Examples include sphere, torus or a surface of revolution
bool cadex::ModelData_Surface::IsVPeriodic | ( | ) | const |
Returns true if the surface is periodic in V direction.
Examples include torus or a V-periodic B-Spline.
ModelData_Surface cadex::ModelData_Surface::Mirrored | ( | const ModelData_Axis1Placement & | theAxis | ) | const |
Returns a copy this surface mirrored along the object.
The contents of this object is not modified.
ModelData_Surface cadex::ModelData_Surface::Mirrored | ( | const ModelData_Axis2Placement & | theAxis | ) | const |
Returns a copy this surface mirrored along the object.
The contents of this object is not modified.
ModelData_Surface cadex::ModelData_Surface::Mirrored | ( | const ModelData_Point & | theRef | ) | const |
Returns a copy this surface mirrored along the object.
The contents of this object is not modified.
void cadex::ModelData_Surface::Nullify | ( | ) |
Resets the object.
IsNull() will return true after calling this method.
ModelData_Surface cadex::ModelData_Surface::Rotated | ( | const ModelData_Axis1Placement & | theAxis, |
double | theAngle | ||
) | const |
Returns a copy this surface rotated along the axis.
The contents of this object is not modified.
ModelData_Surface cadex::ModelData_Surface::Scaled | ( | const ModelData_Point & | thePoint, |
double | theScale | ||
) | const |
Returns a copy this surface scaled with respect to the point.
The contents of this object is not modified.
void cadex::ModelData_Surface::Transform | ( | const ModelData_Transformation & | theTransformation | ) |
Applies transformation matrix to this object.
Results depends on the actual surface type.
ModelData_Surface cadex::ModelData_Surface::Transformed | ( | const ModelData_Transformation & | theTransformation | ) | const |
Returns a copy this object after applying transformation.
The contents of this object is not modified.
ModelData_Surface cadex::ModelData_Surface::Translated | ( | const ModelData_Vector & | theVector | ) | const |
Returns a copy this surface translated along the vector.
The contents of this object is not modified.
double cadex::ModelData_Surface::UMax | ( | ) | const |
Returns a maximum parameter of a definition domain in U direction.
double cadex::ModelData_Surface::UMin | ( | ) | const |
Returns a minimum parameter of a definition domain in U direction.
ModelData_Point cadex::ModelData_Surface::Value | ( | double | theParameterU, |
double | theParameterV | ||
) | const |
double cadex::ModelData_Surface::VMax | ( | ) | const |
Returns a maximum parameter of a definition domain in V direction.
double cadex::ModelData_Surface::VMin | ( | ) | const |
Returns a minimum parameter of a definition domain in V direction.