GeometricObjects Interface CATCurve

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


interface CATCurve

Interface representing the base class for all curves.
Each point of a curve is identified by a global parameter CATCrvParam. A curve portion is defined by CATCrvLimits. Curve parameterization
The geometric modeler optimal behavior requires arc length parameterized (or nearly arc length parameterized) curves. Standard operators generate arc length parameterized curves and complete properly when their input data are arc length parameterized curves. Non-standard curves (foreign curves) should be created as arc length parameterized curves.
Retrieving the CATCrvParam of a 3D point located on a curve
To retrieve the curve parameter associated with a 3D point, use a geometric projection operator. Retrieving the point and derivatives from a CATCrvParam
Multiple evaluations can be performed in one way by defining a CATCrvCommand object, evaluating through the Eval method and retrieving the results with a CATCrvEvalResult object. Example:

 CATCrvEvalLocal EvalResult;
 CATCrvParam Parameter ;
 Curve->GetStartLimit(Parameter) ;
 Curve->Eval(Parameter, CATCrvEvalCommand::EvalPoint                , EvalResult) ; // Evaluate point
 Curve->Eval(Parameter, CATCrvEvalCommand::EvalFirstDerivative      , EvalResult) ; // Evaluate first  derivative
 Curve->Eval(Parameter, CATCrvEvalCommand::EvalSecondDerivative     , EvalResult) ; // Evaluate second derivative
 Curve->Eval(Parameter, CATCrvEvalCommand::EvalThirdDerivative      , EvalResult) ; // Evaluate third  derivative
 Curve->Eval(Parameter, CATCrvEvalCommand::EvalUpToFirstDerivative  , EvalResult) ; // Evaluate all    derivatives up to first  derivative 
 Curve->Eval(Parameter, CATCrvEvalCommand::EvalUpToSecondDerivative , EvalResult) ; // Evaluate all    derivatives up to second derivative 
 Curve->Eval(Parameter, CATCrvEvalCommand::EvalUpToThirdDerivative  , EvalResult) ; // Evaluate all    derivatives up to third  derivative 
 

The first and last arc number can be retrieved with the GetMaxLimits method.


Method Index


o CreateParam(double&)
Sets a global parameter on this CATCurve.
o CreateParam(double,CATCrvParam&)
Sets a global parameter on this CATCurve.
o CreateParam(double&,CATLONG32&)
Sets a global parameter on a CATCurve from a local parameter and an arc number.
o CreateParam(double,CATLONG32,CATCrvParam&)
Sets a global parameter on a CATCurve from a local parameter and an arc number.
o Eval(CATCrvParam&,CATCrvEvalCommand&,CATCrvEvalLocal&)
Evaluates this CATCurve and its derivatives associated with this CATCrvParam.
o Eval(CATCrvLimits&,CATLONG32,CATCrvEvalCommand&,CATCrvEvalResult&)
Evaluates this CATCurve and its derivatives inside a domain.
o Eval(CATCrvParam&,CATCrvEvalCommand&,CATMathPoint*,CATMathVector*,CATMathVector*,CATMathVector*)
Evaluates this CATCurve and its derivatives associated with this CATCrvParam.
o EvalFirstDeriv(CATCrvParam&)
Evaluates this CATCurve by computing a first derivative from a CATCrvParam.
o EvalPoint(CATCrvParam&)
Evaluates this CATCurve by computing a CATMathPoint from a CATCrvParam.
o EvalSecondDeriv(CATCrvParam&)
Evaluates this CATCurve by computing a second derivative from a CATCrvParam.
o EvalThirdDeriv(CATCrvParam&)
Evaluates this CATCurve by computing a third derivative from a CATCrvParam.
o GetBox(CATCrvLimits&,CATMathBox&)
Computes the bounding box of this CATCurve trimmed by given Limits.
o GetEndLimit()
Returns the high current limitation of this CATCurve.
o GetEndLimit(CATCrvParam&)
Returns the high current limitation of this CATCurve.
o GetEquation(CATLONG32,CATMathFunctionX*&,CATMathFunctionX*&,CATMathFunctionX*&)
Retrieves the mathematical equation associated with an arc of this CATCurve.
o GetGeometricRep(CATCrvLimits&,short&)
Returns a pointer to the geometric representation of this CATCurve.
o GetGlobalEquation(CATMathFunctionX*&,CATMathFunctionX*&,CATMathFunctionX*&)
Retrieves the mathematical equation associated with this CATCurve.
o GetInternalBoundingBox(CATLONG32,CATMathBox&)
Retrieves the bounding box including an arc of this CATCurve.
o GetInternalLimits(CATLONG32,CATCrvLimits&)
Returns the limitations of an arc of this CATCurve.
o GetInternalMaxBoundingBox(CATLONG32,CATMathBox&)
Retrieves the maximum bounding box including an arc of this CATCurve.
o GetInternalMaxLimits(CATLONG32,CATCrvLimits&)
Returns the limitations of an arc of this CATCurve.
o GetKnotVector()
Returns the knot vector associated with this CATCurve.
o GetLimits()
Returns the limitations of this CATCurve.
o GetLimits(CATCrvLimits&)
Returns the current limits of this CATCurve.
o GetMathCurve()
Returns a pointer to the mathematical representation of this CATCurve.
o GetMaxLimits()
Returns the maximum limitations of this CATCurve.
o GetMaxLimits(CATCrvLimits&)
Returns the maximum limitations of this CATCurve.
o GetParam(CATMathPoint&,CATCrvParam&)
Retrieves the CATCrvParam on this CATCurve corresponding to a given CATMathPoint.
o GetParam(CATMathPoint&,CATCrvParam&,CATCrvLimits&)
Retrieves the CATCrvParam on this CATCurve corresponding to a CATMathPoint inside limitations.
o GetStartLimit()
Returns the low current limitation of this CATCurve.
o GetStartLimit(CATCrvParam&)
Returns the low current limitation of this CATCurve.
o HasMathCurve()
Tests whether this CATCurve has a mathematical representation.
o IsClosed()
Tests whether this CATCurve is periodic.
o IsConfused(CATMathTransformation&,CATCurve*,CATMathTransformation1D*)
Tests whether this CATCurve is confused with another curve.
o IsContaining(CATCurve*)
Tests whether this CATCurve is containing another one.
o IsInvariant(CATMathTransformation&,CATMathTransformation1D*)
Tests whether this CATCurve is invariant.
o Lock()
Locks the equations of this CATCurve before read them.
o SetLimits(CATCrvLimits&)
Modifies the limitations of this CATCurve.
o Unlock()
Unlocks the equations of this CATCurve after read them.

Enumerated Type Index


o CATSolutionDiagnostic
The diagnosis of evaluation.

Methods


o CreateParam
public virtual CreateParam( const iGlobalParam)
Sets a global parameter on this CATCurve. This API can lead to bad performances when it is used intensively.

The CATCurve::CreateParam signature which returns a void (see above) should be preferred over the present signature.

Parameters:
iGlobalParam
The value of the global parameter.
Returns:
ioParam The corresponding parameter on this, valuated with iGlobalParam.
o CreateParam
public virtual CreateParam( const iGlobalParam,
ioParam)
Sets a global parameter on this CATCurve.
Parameters:
iGlobalParam
The value of the global parameter.
ioParam
The corresponding parameter on this, valuated with iGlobalParam.
o CreateParam
public virtual CreateParam( const iLocal,
const iArc)
Sets a global parameter on a CATCurve from a local parameter and an arc number. This API can lead to bad performances when it is used intensively.

The CATCurve::CreateParam signature which returns a void (see above) should be preferred over the present signature.

Parameters:
iLocal
The value of the local parameter.
iArc
The arc number.
Returns:
The corresponding parameter on this, valuated with iGlobalParam.
o CreateParam
public virtual CreateParam( const iLocal,
const iArc,
ioParam)
Sets a global parameter on a CATCurve from a local parameter and an arc number.
Parameters:
iLocal
The value of the local parameter.
iArc
The arc number.
ioParam
The corresponding parameter on this, valuated with iGlobalParam.
o Eval
public virtual Eval( const iPoint,
const iCommand,
ioResult)
Evaluates this CATCurve and its derivatives associated with this CATCrvParam.
Parameters:
iPoint
The parameter of the point to evaluate.
iCommand
The type of evaluation.
ioResult.
The object containing the results.
o Eval
public virtual Eval( const iDomainToEvaluate,
const iNbOfPoints,
const iCommand,
ioResult)
Evaluates this CATCurve and its derivatives inside a domain.
Parameters:
iDomainToEvaluate
The limits inside which the domain is to be evaluated.
iNbOfPoints
The number of equally spaced points of iDomainToEvaluate.
iCommand
The type of evaluation.
ioResult.
The object containing the results.
o Eval
public virtual Eval( const iParam,
const iCommand,
iPoint,
iFirstDeriv= NULL,
iSecondDeriv= NULL,
iThirdDeriv= NULL )
Evaluates this CATCurve and its derivatives associated with this CATCrvParam.
Parameters:
iParam
The parameter of the point to evaluate.
iCommand
The type of evaluation. The corresponding output pointer must be allocated.
iPoint
A pointer to the resulting 3D point.
iFirstDeriv
A pointer to the resulting first derivative.
iSecondDeriv
A pointer to the resulting second derivative.
iThirdDeriv
A pointer to the resulting third derivative.
o EvalFirstDeriv
public virtual EvalFirstDeriv( const iParam)
Evaluates this CATCurve by computing a first derivative from a CATCrvParam.

The CATCurve::Eval signature with the CATCrvEvalCommand::EvalFirstDeriv argument should be preferred over CATCurve::EvalFirstDeriv as CATCurve::EvalFirstDeriv can lead to bad performances when it is used intensively.

Parameters:
iParam
The parameter of the vector to evaluate.
Returns:
CATMathVector The CATMathVector which has iParam as its parameter.
o EvalPoint
public virtual EvalPoint( const iParam)
Evaluates this CATCurve by computing a CATMathPoint from a CATCrvParam.

The CATCurve::Eval signature with the CATCrvEvalCommand::EvalPoint argument should be preferred over CATCurve::EvalPoint as CATCurve::EvalPoint can lead to bad performances when it is used intensively.

Parameters:
iParam
The parameter of the point to evaluate.
Returns:
CATMathPoint The CATMathPoint which has iParam as its parameter.
o EvalSecondDeriv
public virtual EvalSecondDeriv( const iParam)
Evaluates this CATCurve by computing a second derivative from a CATCrvParam.

The CATCurve::Eval signature with the CATCrvEvalCommand::EvalSecondDeriv argument should be preferred over CATCurve::EvalSecondDeriv as CATCurve::EvalSecondDeriv can lead to bad performances when it is used intensively.

Parameters:
iParam
The parameter of the vector to evaluate.
Returns:
CATMathVector The CATMathVector which has iParam as its parameter.
o EvalThirdDeriv
public virtual EvalThirdDeriv( const iParam)
Evaluates this CATCurve by computing a third derivative from a CATCrvParam.

The CATCurve::Eval signature with the CATCrvEvalCommand::EvalThirdDeriv argument should be preferred over CATCurve::EvalThirdDeriv as CATCurve::EvalThirdDeriv can lead to bad performances when it is used intensively.

Parameters:
iParam
The parameter of the vector to evaluate.
Returns:
CATMathVector The CATMathVector which has iParam as its parameter.
o GetBox
public virtual GetBox( const iLimits,
ioBox)
Computes the bounding box of this CATCurve trimmed by given Limits.
This does not take into account the current limitations of the curve.
Parameters:
iLimits
The domain to take into account.
ioBox.
The 3D box.
o GetEndLimit
public virtual GetEndLimit()
Returns the high current limitation of this CATCurve. The CATCurve::GetEndLimit signature which returns a void should be preferred over the present API.
Returns:
The end limitation.
o GetEndLimit
public virtual GetEndLimit( ioEndParam)
Returns the high current limitation of this CATCurve.
Parameters:
ioEndParam
The end limitation.
o GetEquation
public virtual GetEquation( const iArc,
const oFx,
const oFy,
const oFz)
Retrieves the mathematical equation associated with an arc of this CATCurve.
Before retrieving the equations, you must Lock the curve. You can then obtained the equations. When you have finished, you Unlock the curve. The equations are then automatically deleted.
Parameters:
iArc
The arc number.
oFx
A pointer to the equation of the first coordinate X=oFx(w).
oFy
A pointer to the equation of the second coordinate Y=oFy(w).
oFz
A pointer to the equation of the third coordinate Z=oFy(w).
o GetGeometricRep
public virtual GetGeometricRep( ioRepLimits,
ioRepOrientation)
Returns a pointer to the geometric representation of this CATCurve.
Parameters:
ioRepLimits
The limitations of the returned curve.
ioRepOrientation
The relative orientation of the returned curve.
Legal values::
1
If the returned curve has the same orientation
-1
If the returned curve has the opposite orientation.
Returns:
The canonical underlying geometry.
This is usefull for CATEdgeCurves suc as CATSimCurves in order to access the underlying canonical geometry (such as CATCircle, CATLine,...). Returns this otherwise.
o GetGlobalEquation
public virtual GetGlobalEquation( const oFx,
const oFy,
const oFz)
Retrieves the mathematical equation associated with this CATCurve.
Before retrieving the equations, you must Lock the curve. You can then obtained the equations. When you have finished, you Unlock the curve. The equations are then automatically deleted.
Parameters:
oFx
A pointer to the equation of the first coordinate X=oFx(w).
oFy
A pointer to the equation of the second coordinate Y=oFy(w).
oFz
A pointer to the equation of the third coordinate Z=oFy(w).
o GetInternalBoundingBox
public virtual GetInternalBoundingBox( const iArc,
ioBox)
Retrieves the bounding box including an arc of this CATCurve.
This takes into account the current limitations of the curve.
Parameters:
iArc
The arc number.
ioBox.
The 3D box.
o GetInternalLimits
public virtual GetInternalLimits( const iArc,
ioInternalMaxLimits)
Returns the limitations of an arc of this CATCurve.
This takes into account the current limitations of the curve.
Parameters:
iArc
The arc number.
ioInternalMaxLimits
The corresponding limitations.
o GetInternalMaxBoundingBox
public virtual GetInternalMaxBoundingBox( const iArc,
ioBox)
Retrieves the maximum bounding box including an arc of this CATCurve.
This does not take into account the current limitations of the curve.
Parameters:
iArc
The arc number.
ioBox.
The 3D box.
o GetInternalMaxLimits
public virtual GetInternalMaxLimits( const iArc,
ioInternalMaxLimits)
Returns the limitations of an arc of this CATCurve.
This does not take into account the current limitations of the curve.
Parameters:
iArc
The arc number.
ioInternalMaxLimits
The corresponding limitations.
o GetKnotVector
public virtual GetKnotVector()
Returns the knot vector associated with this CATCurve.
Returns:
The knot vector.
o GetLimits
public virtual GetLimits()
Returns the limitations of this CATCurve. The CATCurve::GetLimits signature which returns a void should be preferred over the present API.
Returns:
The current limitations.
o GetLimits
public virtual GetLimits( ioCurrentLimits)
Returns the current limits of this CATCurve.
Parameters:
ioCurrentLimits
The current limits.
o GetMathCurve
public virtual GetMathCurve()
Returns a pointer to the mathematical representation of this CATCurve. The life cycle of the returned CATMathCurve must be managed by the calling application.
 CATMathCurve * pMathCurve = hCurve->GetMathCurve();
 if (pMathCurve)
   {
     ...
     delete pMathCurve; pMathCurve=NULL;
	 }
 
Returns:
The mathematical curve associated with this. If the mathematical representation does not exist, the method returns a NULL pointer.
o GetMaxLimits
public virtual GetMaxLimits()
Returns the maximum limitations of this CATCurve. The CATCurve::GetMaxLimits signature which returns a void should be preferred over the present API.
Returns:
The current limitations.
o GetMaxLimits
public virtual GetMaxLimits( ioMaxLimits)
Returns the maximum limitations of this CATCurve.
This does not take into account the current limitations of the curve. This maximum limits can be the creation limits or the limits that are obtained by extrapolation, depending on the types of geometric objects.
Parameters:
ioMaxLimits
The maximum limits.
o GetParam
public virtual GetParam( const iPoint,
ioParam)
Retrieves the CATCrvParam on this CATCurve corresponding to a given CATMathPoint.
This transformation is only available on canonical objects such as planes, lines, conics.
Parameters:
iPoint
The CATMathPoint which coordinates are to be transformed as CATCrvParam.
ioParam
The first corresponding CATCrvParam on the curve.
Returns:
The diagnosis of the number of parameters that can be evaluated on this point.
o GetParam
public virtual GetParam( const iPoint,
ioParam,
const iInside)
Retrieves the CATCrvParam on this CATCurve corresponding to a CATMathPoint inside limitations.
This transformation is only available on canonical objects such as lines and conics.
Parameters:
iPoint
The CATMathPoint whose coordinates are to be transformed as a CATCrvParam.
ioParam
The first corresponding CATCrvParam on the curve.
iInside
The CATCrvLimits to take into account for trimming the CATCurve.
Returns:
The diagnosis of the number of parameters that can be evaluated on this point.
o GetStartLimit
public virtual GetStartLimit()
Returns the low current limitation of this CATCurve. The CATCurve::GetStartLimit signature which returns a void should be preferred over the present API.
Returns:
The start limitation.
o GetStartLimit
public virtual GetStartLimit( ioStartParam)
Returns the low current limitation of this CATCurve.
Parameters:
ioStartParam
The first limitation.
o HasMathCurve
public virtual HasMathCurve()
Tests whether this CATCurve has a mathematical representation.
Returns:
The result of the test.
Legal values::
1
If this has a mathematical representation.
0
Otherwise.
o IsClosed
public virtual IsClosed()
Tests whether this CATCurve is periodic.
This method does not take into account the current limitations of the curve.
Returns:
The result of the test.
Legal values::
0
If the CATCurve is not periodic.
1
If the CATCurve is periodic.
o IsConfused
public virtual IsConfused( const iTransfo,
const iTCurve,
oTransfo1D= NULL)
Tests whether this CATCurve is confused with another curve.
This method does not take into account the current limitations of the curves.
Parameters:
oTransfo1D
The 1D-transformation defining the change of parametrization between the transformation of this and iTCurve. If NULL, this argument is not set.
Returns:
The result of the test.
Legal values::
1
If the transformation of this is geometrically the same as iTCurve.
0
Otherwise.
o IsContaining
public virtual IsContaining( const iOther)
Tests whether this CATCurve is containing another one.
Parameters:
iOther
The oother curve.
Returns:
The diagnosis of the test.
FALSE
if the CATCurve does not contain iOther
TRUE
if the CATCurve contains iOther
o IsInvariant
public virtual IsInvariant( const iTransfo,
oTransfo1D= NULL)
Tests whether this CATCurve is invariant.
This method does not take into account the current limitations of the curve.
Parameters:
oTransfo1D
The 1D-transformation defining the change of parametrization between this and the transformation of this. If NULL, this argument is not set.
Returns:
The result of the test.
Legal values::
1
If the transformation of this is geometrically the same as this.
0
Otherwise.
o Lock
public virtual Lock()
Locks the equations of this CATCurve before read them.
o SetLimits
public virtual SetLimits( const iLimits)
Modifies the limitations of this CATCurve.
Parameters:
iLimits
The new current limitations.
o Unlock
public virtual Unlock()
Unlocks the equations of this CATCurve after read them.

Enumerated Types


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

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

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