GeometricObjects Interface CATSurface

Usage: an implementation of this interface is supplied and you must use it as is. You should not reimplement it.


interface CATSurface

Interface representing the base class of all bi-parameterized geometric elements.

A surface can be represented by three CATMathFunctionXY ((FX(x,y), FY(x,y), FZ(x,y))), that can be retrieved through the GetGlobalEquation method. (x,y) are the parameters of a point on the surface. These parameters can also be denoted through (u,v), and they are handled with the CATSurParam class.
Surfaces can have several patches in each direction, that are located with a patch number in the first direction iPatchU and a patch number in the second direction iPatchV. Hence, you can use a local parameter on a given patch, or a global parameter, that takes in account the whole surface. Notice that the patch numbers are not necessarily positive, but their values are consecutive.
CATSurLimits is a class allowing the surface to be restricted to a part of it. The limits define the area where the surface may currently be evaluated. It should not be evaluated outside this area of parameters.
Each type of surface is responsible for the mapping (called Evaluation) between the (u,v) parameters and their corresponding coordinates in the 3D space . No assumption can be made about this mapping by a developper who uses these objects, except that it is C2 continuous (at least twice differentiable).
Multiple evaluations can be performed in one way by defining a CATSurCommand object, evaluating through the Eval method and retrieving the results with a CATSurEvalResult object.

See also:
, , , ,


Method Index


o Compare(CATSurParam&,CATSurParam&)
Tests whether two parameters can be considered as different.
o CreateParam(double&,double&)
Creates a CATSurParam on this surface from global parameters.
o CreateParam(double&,double&,CATSurParam&)
Creates a CATSurParam on this surface from global parameters.
o CreateParam(double&,CATLONG32&,double&,CATLONG32&)
Creates a CATSurParam on this surface from local parameters.
o CreateParam(double&,CATLONG32&,double&,CATLONG32&,CATSurParam&)
Creates a CATSurParam on this surface from local parameters.
o EvalFirstDeriv(CATSurParam&,CATMathVector&,CATMathVector&)
Retrieves the first derivatives on a point of this surface.
o EvalLocal(CATSurParam&,CATSurEvalCommand&,CATSurEvalLocal&)
Retrieves multiple evalutions at a given point of this CATSurface.
o EvalMultiple(CATSurLimits&,CATLONG32,CATLONG32,CATSurEvalCommand&,CATSurEvalResult&)
Retrieves multiple evaluations on a grid of points of this CATSurface.
o EvalNormal(CATSurParam&)
Retrieves the normal at a point of this surface.
o EvalNormal(CATSurParam&,CATMathDirection&)
Retrieves the normal at a point of this surface.
o EvalPoint(CATSurParam&)
Returns the mathematical point associated with a CATSurParam.
o EvalPoint(CATSurParam&,CATMathPoint&)
Returns the mathematical point associated with a CATSurParam.
o EvalSecondDeriv(CATSurParam&,CATMathVector&,CATMathVector&,CATMathVector&)
Retrieves the second derivatives on a point of this surface.
o EvalThirdDeriv(CATSurParam&,CATMathVector&,CATMathVector&,CATMathVector&,CATMathVector&)
Retrieves the third derivatives on a point of this surface.
o ExtractIsoParametricCurve(CATIsoParameter,CATSurParam&,CATGeoFactory*)
Creates an isoparametric curve on this CATSurface.
o GetBox(CATSurLimits&,CATMathBox&)
Returns the smallest box surrounding a portion of this CATSurface, with regards to the provided CATSurlimits.
o GetEndLimit()
Returns the high limitation of this CATSurface.
o GetEndLimit(CATSurParam&)
Returns the current high limit of this CATSurface.
o GetEquation(CATLONG32,CATLONG32,CATMathFunctionXY*&,CATMathFunctionXY*&,CATMathFunctionXY*&)
Retrieves the mathematical equation associated with a patch of this CATSurface.
o GetGeometricRep()
Returns a pointer to the geometric representation of this CATSurface.
o GetGlobalEquation(CATMathFunctionXY*&,CATMathFunctionXY*&,CATMathFunctionXY*&)
Retrieves the mathematical equation associated with this CATSurface.
o GetInternalBoundingBox(CATLONG32,CATLONG32,CATMathBox&)
Retrieves the bounding box including a patch of this CATSurface.
o GetInternalLimits(CATLONG32,CATLONG32,CATSurLimits&)
Returns the limits of an internal patch of this CATSurface.
o GetInternalMaxBoundingBox(CATLONG32,CATLONG32,CATMathBox&)
Retrieves the maximum bounding box including a patch of this CATSurface.
o GetInternalMaxLimits(CATLONG32,CATLONG32,CATSurLimits&)
Returns the maximum limits of an internal patch of this CATSurface.
o GetKnotVectorU()
Returns the knot vector of this CATSurface first direction.
o GetKnotVectorV()
Returns the knot vector of this CATSurface second direction.
o GetLimits()
Returns the current limitations of this CATSurface.
o GetLimits(CATSurLimits&)
Returns the current limits of this CATSurface.
o GetMathCurve(CATIsoParameter,CATSurParam&)
Returns a pointer to the mathematical representation of an isoparametric curve of this CATSurface.
o GetMaxLimits(CATSurLimits&)
Returns the maximum limits of this CATSurface.
o GetParam(CATMathPoint&,CATSurParam&)
Retrieves the CATSurParam on this CATSurface corresponding to a given CATMathPoint.
o GetParam(CATMathPoint&,CATSurParam&,CATSurLimits&)
Retrieves the CATSurParam on this CATSurface corresponding to a CATMathPoint.
o GetParamOnIsopar(CATMathPoint&,CATIsoParameter&,CATSurParam&,CATSurParam&,double&)
Retrieves the parameter on an iso-parametric curve of this CATSurface corresponding to a CATMathPoint.
o GetStartLimit()
Returns the low limitation of this CATSurface.
o GetStartLimit(CATSurParam&)
Returns the current low limit of this CATSurface.
o HasMathCurve(CATIsoParameter,CATSurParam&)
Tests whether an isoparametric curve of this CATSurface has a mathematical representation.
o IsCircular()
Checks if this CATSurface is circular in a or two directions of the parameter.
o IsClosedU()
Tests whether this CATSurface is periodic along the first direction.
o IsClosedV()
Tests whether this CATSurface is periodic along the second direction.
o IsConfused(CATMathTransformation&,CATSurface*,CATMathTransformation2D*)
Tests whether this CATSurface is confused with another surface.
o IsInvariant(CATMathTransformation&,CATMathTransformation2D*)
Tests whether this CATSurface is invariant.
o IsLinear()
Checks if this CATSurface is linear in a or two directions of the parameter.
o Lock()
Locks any modification of the equations ofthis CATSurface .
o SetLimits(CATSurLimits&)
Modifies the current limits of this CATSurface.
o Unlock()
Unlocks the modifications of the equations of this CATSurface.

Enumerated Type Index


o CATSolutionDiagnostic
The diagnosis of evaluation.

Methods


o Compare
public virtual Compare( const iW1,
const iW2)
Tests whether two parameters can be considered as different.
This can be used for distinguishing 2 points on both sides of a surface closure.
Parameters:
iW1
The first parameter to compare.
iW2
The second parameter to compare.
Returns:
The result of the test.
Legal values:
0
if they are not considered as different
1
if they are considered as different
o CreateParam
public virtual CreateParam( const iUParam,
const iVParam)
Creates a CATSurParam on this surface from global parameters. The CATSurface::CreateParam signature which returns a void should be preferred over the present API.
Parameters:
iUParam
The parameter value in the first direction.
iVParam
The parameter value in the second direction.
Returns:
The resulting parameter.
o CreateParam
public virtual CreateParam( const iParamU,
const iParamV,
ioResult)
Creates a CATSurParam on this surface from global parameters.
Parameters:
iParamU
The parameter value in the first direction.
iParamV
The parameter value in the second direction.
ioResult
The resulting parameter.
o CreateParam
public virtual CreateParam( const iUParam,
const iUNum,
const iVParam,
const iVNum)
Creates a CATSurParam on this surface from local parameters. The CATSurface::CreateParam signature which returns a void should be preferred over the present API.
Parameters:
iUParam
The local parameter value in the first direction on iPatchU.
iUNum
The patch number in the first direction.
iVParam
The local parameter value in the second direction on iPatchV.
iVNum
The patch number in the second direction.
Returns:
The resulting parameter.
o CreateParam
public virtual CreateParam( const iParamU,
const iPatchU,
const iParamV,
const iPatchV,
ioResult)
Creates a CATSurParam on this surface from local parameters.
Parameters:
iParamU
The local parameter value in the first direction on iPatchU.
iPatchU
The patch number in the first direction.
iParamV
The local parameter value in the second direction on iPatchV.
iPatchV
The patch number in the second direction.
ioResult
The resulting parameter.
o EvalFirstDeriv
public virtual EvalFirstDeriv( const iParam,
ioDU,
ioDV)
Retrieves the first derivatives on a point of this surface.
Parameters:
iParam
The point of the surface.
ioDU
The first derivative with respect to to the U parameter.
ioDV
The first derivative with respect to to the V parameter.
o EvalLocal
public virtual EvalLocal( const iPoint,
const iCommand,
ioResult)
Retrieves multiple evalutions at a given point of this CATSurface.
Parameters:
iParam
The point of the surface.
iCommand
The command precising the requested evaluation types.
ioResult
The resulting evaluations.
o EvalMultiple
public virtual EvalMultiple( const iBox,
iNbOfPointsInU,
iNbOfPointsInV,
const iCommand,
ioResult)
Retrieves multiple evaluations on a grid of points of this CATSurface.
The method reallocates the memory if necessary.If the number of points in U or V is 1, then the evaluation is done on the low part of the CATSurLimits for this(these) coordinate(s).
Parameters:
iBox
The limits of the surface to take into account.
iNbOfPointsInU
The number of points to distribute inside the limits on the surface first direction.
iNbOfPointsInV
The number of points to distribute inside the limits on the surface second direction.
iCommand
The command precising the requested evaluation types.
ioResult
The evaluation at the given points such that the (UIndex, VIndex) point evaluation is located at the 3*(UIndex + iNbOfPointsInU*VIndex) place.
o EvalNormal
public virtual EvalNormal( const iParam)
Retrieves the normal at a point of this surface. The CATSurface::EvalNormal signature which returns a void should be preferred over the present API.
Parameters:
iParam
The CATSurParam which defines the point of the surface.
Returns:
The outer normal oriented along ds/du ^ ds/dv.
o EvalNormal
public virtual EvalNormal( const iParam,
ioNormal)
Retrieves the normal at a point of this surface.
Parameters:
iParam
The point of the surface.
ioNormal
The outer normal oriented along ds/du ^ ds/dv.
o EvalPoint
public virtual EvalPoint( const iParam)
Returns the mathematical point associated with a CATSurParam. The CATSurface::EvalPoint signature which returns a void should be preferred over the present API.
Parameters:
iParam
The CATSurParam parameter. return The corresponding mathematical point.
o EvalPoint
public virtual EvalPoint( const iPosition,
ioPoint)
Returns the mathematical point associated with a CATSurParam.
Parameters:
iPosition
The point of the surface.
ioPoint
The corresponding mathematical point.
o EvalSecondDeriv
public virtual EvalSecondDeriv( const iParam,
ioDU2,
ioDUDV,
ioDV2)
Retrieves the second derivatives on a point of this surface.
Parameters:
iParam
The point of the surface.
ioDU2
The second derivative with respect to to the U parameter.
ioDUDV
The second derivative with respect to to the UV parameters.
ioDV2
The second derivative with respect to to the V parameter.
o EvalThirdDeriv
public virtual EvalThirdDeriv( const iParam,
ioDU3,
ioDU2DV,
ioDUDV2,
ioDV3)
Retrieves the third derivatives on a point of this surface.
Parameters:
iParam
The point of the surface.
ioDU3
The third derivative with respect to to the U parameter.
ioDU2DV
The third derivative with respect to to the UUV parameters.
ioDUDV2
The third derivative with respect to to the UVV parameters.
ioDV3
The third derivative with respect to to the V parameter.
o ExtractIsoParametricCurve
public virtual ExtractIsoParametricCurve( const iIsoParameter,
const iParam,
iWhere)
Creates an isoparametric curve on this CATSurface.
The curve has the same global parameterization as the surface in this direction.
Parameters:
iIsoParameter
The type of iso parametric curve.
iParam
The point of the surface belonging to the curve to create.
iWhere
A pointer to the factory for creation.
Returns:
A pointer to the created curve.
o GetBox
public virtual GetBox( const iLimits,
ioBox)
Returns the smallest box surrounding a portion of this CATSurface, with regards to the provided CATSurlimits.
Parameters:
iLimits
The limits on the surface
ioBox
The box surrounding the surface limited by iLimits.
o GetEndLimit
public virtual GetEndLimit()
Returns the high limitation of this CATSurface. The CATSurface::GetEndLimit signature which returns a void should be preferred over the present API.
Returns:
The CATSurParam which defines the high limitation of this CATSurface.
o GetEndLimit
public virtual GetEndLimit( ioParam)
Returns the current high limit of this CATSurface.
Parameters:
ioParam
The parameter defining the last limit of this CATSurface.
o GetEquation
public virtual GetEquation( const iPatchU,
const iPatchV,
const oFx,
const oFy,
const oFz)
Retrieves the mathematical equation associated with a patch of this CATSurface.
(ioFx(U,V), ioFy(U,V), ioFz(U,V)) is then a point of the surface patch.
Before retrieving the equations, you must Lock the surface. You can then obtained the equations. When you have finished, you Unlock the surface. The equations are then automatically deleted.
Parameters:
iPatchU
The patch number in the first direction.
iPatchU
The patch number in the second direction.
oFx
A pointer to the parametric equation of the first coordinate.
oFy
A pointer to the parametric equation of the second coordinate.
oFz
A pointer to the parametric equation of the third coordinate.
o GetGeometricRep
public virtual GetGeometricRep()
Returns a pointer to the geometric representation of this CATSurface.
Returns:
The pointer to the canonical surface (CATPlane, CATCylinder, CATCone, ..) of a complex object ( CATDraftSurface, CATFilletSurface) if it exists, this otherwise.
o GetGlobalEquation
public virtual GetGlobalEquation( const oFx,
const oFy,
const oFz)
Retrieves the mathematical equation associated with this CATSurface.
(ioFx(U,V), ioFy(U,V), ioFz(U,V)) is then a point of the surface.
Before retrieving the equations, you must Lock the surface. You can then obtained the equations. When you have finished, you Unlock the surface. The equations are then automatically deleted.
Parameters:
oFx
A pointer to the parametric equation of the first coordinate.
oFy
A pointer to the parametric equation of the second coordinate.
oFz
A pointer to the parametric equation of the third coordinate.
o GetInternalBoundingBox
public virtual GetInternalBoundingBox( const iPatchU,
const iPatchV,
ioBox)
Retrieves the bounding box including a patch of this CATSurface.
Parameters:
iPatchU
The patch number in the first direction.
iPatchV
The patch number in the second direction.
ioBox
The corresponding bounding box.
o GetInternalLimits
public virtual GetInternalLimits( const iPatchU,
const iPatchV,
ioLimits)
Returns the limits of an internal patch of this CATSurface.
Parameters:
iPatchU
The patch number in the first direction.
iPatchV
The patch number in the second direction.
ioLimits
The limitations of a patch.
o GetInternalMaxBoundingBox
public virtual GetInternalMaxBoundingBox( const iPatchU,
const iPatchV,
ioBox)
Retrieves the maximum bounding box including a patch of this CATSurface.
This does not take into account the current limitations of the surface.
Parameters:
iPatchU
The patch number in the first direction.
iPatchV
The patch number in the second direction.
ioBox
The corresponding bounding box.
o GetInternalMaxLimits
public virtual GetInternalMaxLimits( const iPatchU,
const iPatchV,
oLimits)
Returns the maximum limits of an internal patch of this CATSurface.
This does not take into account the current limits .
Parameters:
iPatchU
The patch number in the first direction.
iPatchV
The patch number in the second direction.
ioLimits
The limits of a patch.
o GetKnotVectorU
public virtual GetKnotVectorU()
Returns the knot vector of this CATSurface first direction.
Returns:
The pointer to the knot vector. All surfaces return a knot vector but this knot vector can be NULL, for example when the surface is a canonical surface. For half-canonical surfaces such as tabulated surfaces with a non-canonical profile, the knot vector along U is not NULL.
o GetKnotVectorV
public virtual GetKnotVectorV()
Returns the knot vector of this CATSurface second direction.
Returns:
The pointer to the knot vector. Note that all surfaces return a knot vector, not only NURBS. The knot vector along V can be NULL.
o GetLimits
public virtual GetLimits()
Returns the current limitations of this CATSurface. The CATSurface::GetLimits signature which returns a void should be preferred over the present API.
Returns:
The limitations of this CATSurface.
o GetLimits
public virtual GetLimits( ioLimits)
Returns the current limits of this CATSurface.
Parameters:
ioLimits
The limitations of this CATSurface.
o GetMathCurve
public virtual GetMathCurve( const iIsoParameter,
const iLocation)
Returns a pointer to the mathematical representation of an isoparametric curve of this CATSurface.
Parameters:
iIsoParameter
The type of iso-parametric curve.
iLocation
A point belonging to the curve.
Returns:
The corresponding mathematical curve, that has to be managed (deleted) by the caller.
o GetMaxLimits
public virtual GetMaxLimits( ioLimits)
Returns the maximum limits of this CATSurface.
This does not take into account the current limits .
Parameters:
ioLimits
The maximum limits of this CATSurface.
o GetParam
public virtual GetParam( const iPoint,
oIndex)
Retrieves the CATSurParam on this CATSurface corresponding to a given CATMathPoint.
This transformation is only available on canonical objects such as planes, cylinders, cones. If the surface is not canonical, the operator throw an exception. For non-canonical surfaces, use a projection operator.
Parameters:
iPoint
The CATMathPoint whose coordinates are to be transformed as CATSurParam.
ioParam
The first corresponding CATSurParam on the surface.
Returns:
The diagnosis of the number of parameters that can be evaluated on this point.
CATSurface::NoSolution
No parameter corresponds to this point.
CATSurface::SingleSolution
Only one parameter corresponds to this point.
CATSurface::MultipleSolution
Several parameters correspond to this point.
CATSurface::InfiniteSolution
Infinitely many parameters correspond to this point.
o GetParam
public virtual GetParam( const iPoint,
ioIndex,
const iInside)
Retrieves the CATSurParam on this CATSurface corresponding to a CATMathPoint. inside limitations.
This transformation is only available on canonical objects such as planes, cylinders, cones. If the surface is not canonical, the operator throws an exception. For non-canonical surface, use a projection operator.
Parameters:
iPoint
The CATMathPoint whose coordinates are to be transformed as a CATSurParam.
ioParam
The first corresponding CATSurParam on the surface.
iInside
The CATSurLimits to take into account for trimming the CATSurface.
Returns:
The diagnosis of the number of parameters that can be evaluated on this point.
CATSurface::NoSolution
No parameter corresponds to this point.
CATSurface::SingleSolution
Only one parameter corresponds to this point.
CATSurface::MultipleSolution
Several parameters correspond to this point.
CATSurface::InfiniteSolution
Infinitely many parameters correspond to this point.
o GetParamOnIsopar
public virtual GetParamOnIsopar( const iPoint,
const iIsoparam,
const iStart,
const iEnd,
ioLambdaOnIsopar)
Retrieves the parameter on an iso-parametric curve of this CATSurface corresponding to a CATMathPoint.
Used for surfaces for which GetImplicitEquation returns a non-null pointer.
Parameters:
iPoint
The CATMathPoint whose coordinates are to be transformed as a CATSurParam.
iIsoparam
The isoparametric curve on which the parameter is computed.
iStart
The low limitation to take into account for trimming the CATSurface.
iEnd
The high limitation to take into account for trimming the CATSurface.
ioLambdaOnIsopar
The corresponding parameter value on the isoparametric curve.
Returns:
The diagnosis of the number of parameters that can be evaluated on this point.
CATSurface::NoSolution
No parameter corresponds to this point.
CATSurface::SingleSolution
Only one parameter corresponds to this point.
CATSurface::MultipleSolution
Several parameters correspond to this point.
CATSurface::InfiniteSolution
Infinitely many parameters correspond to this point.
o GetStartLimit
public virtual GetStartLimit()
Returns the low limitation of this CATSurface. The CATSurface::GetStartLimit signature which returns a void should be preferred over the present API.
Returns:
The CATSurParam which defines the low limitation of this CATSurface.
o GetStartLimit
public virtual GetStartLimit( ioParam)
Returns the current low limit of this CATSurface.
Parameters:
ioParam
The parameter defining the first limit of this CATSurface.
o HasMathCurve
public virtual HasMathCurve( const iIsoParameter,
const iLocation)
Tests whether an isoparametric curve of this CATSurface has a mathematical representation.
Parameters:
iIsoParameter
The type of iso-parametric curve.
iLocation
A point belonging to the curve.
Returns:
The result of the test.
Legal values:
1
If an isoparametric curve of this has a mathematical representation.
0
Otherwise.
o IsCircular
public virtual IsCircular()
Checks if this CATSurface is circular in a or two directions of the parameter.
Returns:
The result of the test.
Legal values:
CATIsoParNoDir
if they is no circle on the surface
CATIsoParamU
if the isoparameters with U constant are circles.
CATIsoParamV
if the isoparameters with V constant are circles.
CATIsoPaRBothDir
if the isoparameters with U constant or V constant are circles.
o IsClosedU
public virtual IsClosedU()
Tests whether this CATSurface is periodic along the first direction.
This method does not take into account the current limitations of the surface.
Returns:
The result of the test.
Legal values::
0
If the CATSurface is not periodic on the first direction.
1
If the CATsurface is periodic on the first direction.
o IsClosedV
public virtual IsClosedV()
Tests whether this CATSurface is periodic along the second direction.
This method does not take into account the current limitations of the surface.
Returns:
The result of the test.
Legal values::
0
If the CATSurface is not periodic on the second direction.
1
If the CATsurface is periodic on the second direction.
o IsConfused
public virtual IsConfused( const iTransfo,
const iTSurface,
ioTransfo2D= NULL)
Tests whether this CATSurface is confused with another surface.
This method does not take into account the current limits of the surfaces.
Parameters:
iTransfo
The tested transformation.
iTSurface
The other surface.
ioTransfo2D
The 2D-transformation defining the change of parametrization between the transformation of this and iTSurface. If NULL, this is not output.
Returns:
The result of the test.
Legal values:
1
If the transformation of this is geometrically the same as iTSurface.
0
Otherwise.
o IsInvariant
public virtual IsInvariant( const iTransfo,
ioTransfo2D= NULL)
Tests whether this CATSurface is invariant.
This method does not take into account the current limits of the surface.
Parameters:
iTransfo
The tested transformation.
ioTransfo2D
The 2D-transformation defining the change of parameterization between this and the transformation of this. If NULL, this is not output.
Returns:
The result of the test.
Legal values:
1
If the transformation of this is geometrically the same as this.
0
Otherwise.
o IsLinear
public virtual IsLinear()
Checks if this CATSurface is linear in a or two directions of the parameter.
Returns:
The result of the test.
Legal values:
CATIsoParNoDir
if they is no linearity
CATIsoParamU
if the isoparameters with U constant are lines
CATIsoParamV
if the isoparameters with V constant are lines
CATIsoParBothDir
if the isoparameters with U constant or V constant are lines
o Lock
public virtual Lock()
Locks any modification of the equations ofthis CATSurface .
o SetLimits
public virtual SetLimits( const iNewLimits)
Modifies the current limits of this CATSurface.
Parameters:
iNewLimits
The new current limits.
o Unlock
public virtual Unlock()
Unlocks the modifications of the equations of this CATSurface.

Enumerated Types


o CATSolutionDiagnostic
enum CATSolutionDiagnostic {
  NoSolution,
  SingleSolution,
  MultipleSolution,
  InfiniteSolution
}
The diagnosis of evaluation.
Parameters:
CATSurface::NoSolution
No parameter corresponds to this point
CATSurface::SingleSolutionOnly
one parameter corresponds to this point.
CATSurface::MultipleSolutionSeveral
parameters correspond to this point.
CATSurface::InfiniteSolution
Infinitely many parameters correspond to this point.

This object is included in the file: CATSurface.h
If needed, your Imakefile.mk should include the module: CATGMGeometricInterfaces

Copyright © 1999-2014, Dassault Systèmes. All rights reserved.