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