Interface to Alias face curves.
Synopsis
#include <AlFace.h>
class AlFace : public AlCurve
AlFace();
virtual ~AlFace();
virtual statusCode deleteObject();
virtual AlObject* copyWrapper() const;
statusCode create( int, curveFormType, int, const double[], int, const double[][4], const int[] );
virtual AlObjectType type() const;
AlFaceNode* faceNode() const;
AlFace* prevFace() const;
AlFace* nextFace() const;
statusCode prevFaceD();
statusCode nextFaceD();
statusCode area( double&, boolean = TRUE, double = 0.001 );
AlShader* firstShader() const;
AlShader* nextShader( AlShader* ) const;
statusCode nextShaderD( AlShader* ) const;
statusCode renderInfo( AlRenderInfo& ) const;
statusCode setRenderInfo( const AlRenderInfo& ) const;
statusCode normal( double[3] ) const;
Description
An AlFace is derived from AlCurve and inherits AlCurve’s public methods.
AlFace objects are created independently from the AlFaceNode, and then added to the AlFaceNode afterwards. An AlFaceNode requires
one valid AlFace object in order for it to be created. Other faces can be added to the list of faces under the AlFaceNode
afterwards using AlFaceNode::addFace().
Deleting a face can cause one of two things to happen. If the AlFace is not under an AlFaceNode, or it is one of several faces
under an AlFaceNode, then only the face will be deleted. If the AlFace is the only face under the AlFaceNode, then the AlFaceNode
will also be deleted.
Each face curve must be planar and each face curve must lie in the same plane as all the others. In addition to the parent
class (AlCurve) methods this class allows you to walk through the list of the face curves that make up the face.
All AlFace objects will have at least one shader attached to them. These can be accessed through the firstShader and nextShader
methods.
AlFace::AlFace()
Description
Constructs an AlFace wrapper object.
AlFace::~AlFace()
Description
Deletes an AlFace wrapper object.
AlObject *AlFace::copyWrapper() const
Description
Creates an exact copy of the AlFace wrapper.
AlFaceNode* AlFace::faceNode() const
Description
Returns the face node associated with this face.
statusCode AlFace::deleteObject()
Description
If this face isn’t the last face under the parent face node, then this face is removed from the parent node and deleted. If
this face is the last face under the parent node, then the face node is deleted as well. If this face doesn’t have a parent
node, then only the face is deleted.
Return Codes
sSuccess - the face was successfully removed
sInvalidObject - the face object was invalid
sFailure - the face could not be removed
statusCode AlFace::create( int degree, curveFormType form,int lengthKnotVector, const double knotVector[],int lengthControlP,
const double controlPoints[][4],const int multiplicity[] )
Description
Similar to the AlCurve::create() method except that the form can only be either closed or periodic (kClosed or kPeriodic).
See the description in AlCurve of the AlCurve::create() method for more details.
Arguments
See AlCurve::create().
Return Codes
sSuccess - the face was successfully created
sInvalidArgument - one of the arguments was NULL or out of range
sFailure - the face could not be created
AlObjectType AlFace::type() const
Description
Returns the class identifier kFaceType.
AlFace* AlFace::prevFace() const
Description
Returns a pointer to the previous face in the list of faces. Returns NULL for the end of the list.
statusCode AlFace::prevFaceD()
Description
Destructively points the current wrapper to the previous face in the list of faces.
Return Codes
sSuccess - the wrapper now points to the previous face
sFailure - there is no previous face
sInvalidObject - the face is invalid
AlFace* AlFace::nextFace() const
Description
Returns a pointer to the previous face in the list of faces. Returns NULL for the end of the list.
statusCode AlFace::nextFaceD()
Description
Destructively points the current wrapper to the next face in the list of faces.
Return Codes
sSuccess - the wrapper now points to the next face
sFailure - there is no next face in the list
sInvalidObject - this face is invalid
AlShader* AlFace::firstShader() const
Description
Returns the first shader that this face object references. Note that only the first AlFace of an AlFaceNode has valid render
information.
AlShader* AlFace::nextShader( AlShader* last_shader ) const
Description
Returns the shader after the given shader in the shader list. Specifying NULL as parameter will return the first shader. Note
that only the first AlFace of an AlFaceNode has valid render information.
Arguments
< last_shader - shader from which to walk forward
statusCode AlFace::nextShaderD( AlShader* last_shader ) const
Description
Destructively points ’last_shader’ to the shader after the given shader in the shader list.
Arguments
< last_shader - shader from which to walk forward
Return Codes
sSuccess - ’last_shader’ now points to the next shader
sInvalidArgument - ’last_shader’ was invalid or NULL
sInvalidObject - the current face was invalid
sFailure - there was no next shader
statusCode AlFace::renderInfo( AlRenderInfo &render ) const
Description
Fills in the renderInfo structure with the render info for this face. If there wasn’t any render information, in which case
the renderInfo is unchanged. NOTE that ONLY the first AlFace of an AlFaceNode has valid render information.
Arguments
> renderInfo - the structure to fill in
Return Codes
sSuccess - getting the render information was successful
sFailure - there wasn’t any render information
sInvalidObject - the face was invalid
statusCode AlFace::setRenderInfo( const AlRenderInfo &render ) const
Description
Sets the render info for this face to the contents of the renderInfo structure. NOTE that ONLY the first AlFace of an AlFaceNode
has valid render information.
Arguments
< renderInfo - the structure to take the render information from
Return Codes
sSuccess - setting the render information was successful
sFailure - setting the render information failed
sInvalidObject - the face is invalid
sInvalidArgument - one of the parameters in ’render’ was invalid
statusCode AlFace::normal( double norm[3] ) const
Description
Returns the normal for a curve on a face. The normal for an AlFaceNode is the normal of the first AlFace.
Arguments
> norm - returned normal
Return Codes
sSuccess - getting the normal was successful
sInvalidArgument - the parameter ’norm’ was NULL
sFailure - the normal couldn’t be determined
sInvalidObject - the face was invalid
statusCode AlFace::area( double& area, boolean worldCoordinates, double tolerance )
Description
Determines the area of the face sSuccess will be returned if the evaluation succeeded. sFailure will be returned if the evaluation
failed.
Arguments
> area - the returned value
< worldCoordinates - the evaluation is to be in world coordinates
< tolerance - the error tolerance
Return Codes
sSuccess - the coordinate was successfully determined
sFailure - the evaluation failed, or the face was linear or not planar
sInvalidObject - the surface is invalid