Interface to Alias blend points.
Synopsis
#include <AlBlendPoint.h>
class AlBlendPoint : public AlObject
enum AlConstraintContinuityType
{
kG0,
kG1,
kG2,
kG3,
kG4
};
enum AlCurvatureType
{
kGeometricCurv,
kParametric
};
enum AlInterpolationDirectionType
{
kLocation,
kWorldSpace,
kGeometricInterp
};
enum AlDirectionType
{
kRay,
kParallel
};
AlBlendPoint();
virtual ~AlBlendPoint();
virtual statusCode deleteObject();
virtual AlObject* copyWrapper() const;
virtual AlObjectType type() const;
statusCode setPoint( double , double , double );
statusCode point( double& , double& , double& );
statusCode param( double& );
statusCode tangent( double&, double&, double& );
statusCode setTangent( double, double, double );
statusCode interpolationDirectionType( AlInterpolationDirectionType& );
statusCode setInterpolationDirectionType( AlInterpolationDirectionType );
statusCode directionType( AlDirectionType& );
statusCode setDirectionType( AlDirectionType );
statusCode curvatureType( AlCurvatureType& );
statusCode setCurvatureType( AlCurvatureType );
statusCode constraintContinuityType( AlConstraintContinuityType& );
statusCode setConstraintContinuityType( AlConstraintContinuityType );
statusCode attachConstraint( AlSurface *, double, double );
statusCode attachConstraint( AlCurve *, double );
statusCode attachConstraint( AlCurveOnSurface *, double );
statusCode disassociateConstraint();
statusCode attachedTo( AlObject *&, double&, double& );
boolean isSlave();
statusCode makeMaster();
AlBlendCurve* blendCurve();
AlBlendPoint* next();
statusCode nextD( AlBlendPoint * );
AlBlendPoint* prev();
statusCode prevD( AlBlendPoint * );
Description
Alias Blend Curves contain Alias Blend Points. Blend Points have constraints and curvature types as described in the Alias manuals. Methods for getting and setting the tangency, position, constraint continuity and the geometry the point is associated
with are included.
Notes:
- To find the Alias Blend Curve this point is on, use the blendCurve() method.
- To find the Alias Curve that this point is on, find the blend curve, then call the AlBlendCurve::curveNode() method.
- setPoint() will disassociate a blend point from any geometry that it is attached to.
- Do not rely on the param() value staying the same. It is modified every time the curve is modified.
- Attaching a point to a cloud is not currently supported.
- Some of the methods will only work if we have the proper context. For example, the interpolation direction might have to be
a certain type to make a method work.
- Deleting blend points can also delete the blend curve. If there are fewer than two points left, then the blend curve is deleted
by the deleteObject() method.
AlBlendPoint::AlBlendPoint()
Description
Null constructor.
AlBlendPoint::~AlBlendPoint()
Description
Null destructor.
statusCode AlBlendPoint::deleteObject()
Description
This method deletes a blend point on a blend curve. If there are two blend points left on the curve and one of them is deleted,
the blend curve will also be deleted.
Return Codes
sSuccess - the method succeeded
sFailure - internal failure
sInvalidObject - the object was invalid
AlObject *AlBlendPoint::copyWrapper() const
Description
Returns an exact copy of the blend point wrapper. NULL is returned if the method fails.
AlObjectType AlBlendPoint::type() const
Description
Returns the class identifier kBlendPointType.
statusCode AlBlendPoint::setPoint( double x , double y , double z )
Description
Set the world space location of the blend point. If this curve is associated with geometry then that association is removed.
Arguments
< x,y,z - new world space location for the blend point.
Return Codes
sSuccess - the method succeeded
sFailure - internal failure
sInvalidObject - the blend point is invalid
statusCode AlBlendPoint::point( double& x , double& y , double& z )
Description
Returns the world space location of the blend point
Arguments
> x,y,z - world space location of the point
Return Codes
sSuccess - the method succeeded
sFailure - internal failure
sInvalidObject - the blend point is invalid
statusCode AlBlendPoint::param( double& param )
Description
Return the param or ’t’ value of this point on the curve.
Note: this value will change as the Blend Curve is modified.
Arguments
> param - the param value of this point
Return Codes
sSuccess - the method succeeded
sFailure - internal failure,
sInvalidObject - the blend point is invalid
statusCode AlBlendPoint::tangent( double& x, double& y, double& z )
Description
Returns the tangent information for the blend point. This method will only work if this blend point has a world space or geometric
interpolation direction.
Arguments
> x,y,z - the tangent of the blend point
Return Codes
sSuccess - the method succeeded
sFailure - internal failure,
sInvalidObject - the blend point is invalid
sInvalidArgument - cannot ask for tangent information since the point does not have world space or geometric interpolation
set
statusCode AlBlendPoint::setTangent( double x, double y, double z )
Description
Sets the tangent for the blend point. This method will only work if this blend point has a world space or geometric interpolation
direction.
Arguments
< x,y,z - the new tangent for the point
Return Codes
sSuccess - the method succeeded
sFailure - internal failure
sInvalidObject - the blend point is invalid
sInvalidArgument - cannot set tangent information since the point is not using world space or geometric interpolation or the
tangent vector did not have a direction (0, 0 0).
statusCode AlBlendPoint::constraintContinuityType(AlBlendPoint::AlConstraintContinuityType& cc )
Description
Returns the type of constraint continuity that is being used by this blend point. This method works only if we are using location
or geometric interpolation directions at this point.
Arguments
> cc - constraint continuity of the blend curve
Return Codes
sSuccess - the method succeeded
sFailure - internal failure
sInvalidObject - the blend point is invalid
sInvalidArgument - the blend point is not using location
or geometric interpolation directions
statusCode AlBlendPoint::setConstraintContinuityType( AlConstraintContinuityType cc )
Description
Sets the type of constraint continuity of this blend point. This method works only if we are using location or geometric interpolation
directions at this point.
Arguments:
< cc - constraint continuity of the blend curve
Return Codes
sSuccess - the method succeeded
sFailure - internal failure
sInvalidObject - the blend point is invalid
sInvalidArgument - the blend point is not using location or geometric interpolation directions
statusCode AlBlendPoint::interpolationDirectionType(AlBlendPoint::AlInterpolationDirectionType& id)
Description
Returns the interpolation direction of the blend point.
Arguments
> id - interpolation direction of the blend point
Return Codes
sSuccess - the method succeeded
sFailure - internal failure
sInvalidObject - the blend point is invalid
statusCode AlBlendPoint::setInterpolationDirectionType( AlInterpolationDirectionType id )
Description
Sets the interpolation direction of the blend point.
Arguments
< id - interpolation direction of the blend point
Return Codes
sSuccess - the method succeeded
sFailure - internal failure
sInvalidObject - the blend point is invalid
statusCode AlBlendPoint::directionType(AlBlendPoint::AlDirectionType& dt)
Description
Returns the direction type that is being used by this blend point. This method works only if we are using world space or geometric
interpolation directions at this point.
Arguments
> dt - the blend point’s direction type
Return Codes
sSuccess - the method succeeded
sFailure - internal failure
sInvalidObject - the blend point is invalid
sInvalidArgument - the blend point is not using world space or geometric interpolation directions
statusCode AlBlendPoint::setDirectionType( AlDirectionType dt )
Description
Sets the direction type of this blend point. This method works only if we are using world space or geometric interpolation
directions at this point.
Arguments
< dt - the blend point’s direction type
Return Codes
sSuccess - the method succeeded
sFailure - internal failure
sInvalidObject - the blend point is invalid
sInvalidArgument - the blend point is not using world space or geometric interpolation directions
statusCode AlBlendPoint::curvatureType(AlBlendPoint::AlCurvatureType& ct )
Description
Returns the curvature type that is being used by this blend point. This method works only if we are using geometric interpolations
of geometry and we are attached to a surface with G2 or greater continuity at this point.
Arguments
> ct - the blend point’s direction type
Return Codes
sSuccess - the method succeeded
sFailure - internal failure
sInvalidObject - the blend point is invalid
sInvalidArgument - the blend point is not using geometric interpolations of geometry and is not attached to a surface with
G2 or greater continuity.
statusCode AlBlendPoint::setCurvatureType( AlCurvatureType ct )
Description
Sets the curvature type that is being used by this blend point. This method works only if we are using geometric interpolations
of geometry and we are attached to a surface with G2 or greater continuity at this point.
Arguments
> ct - the blend point’s direction type
Return Codes
sSuccess - the method succeeded
sFailure - internal failure
sInvalidObject - the blend point is invalid
sInvalidArgument - the blend point is not using geometric interpolations of geometry and is not attached to a surface with
G2 or greater continuity.
statusCode AlBlendPoint::attachConstraint( AlSurface *surface, double u, double v )
Description
Attaches this blend point as a constraint to a surface.
Arguments
< surface - the surface to attach to
< u,v - position on surface to attach to
Return Codes
sSuccess - the method succeeded
sFailure - internal failure
sInvalidObject - the blend point is invalid
sInvalidArgument - surface is NULL, or surface is invalid, or u,v is invalid for the surface.
statusCode AlBlendPoint::attachConstraint( AlCurve *curve, double t )
Description
Attaches this blend point as a constraint to a curve. To attach a blend curve to another, pass the resulting curve of the
second blend curve into this method. Note: this method will fail if the AlCurve of the AlBlendCurve of this AlBlendPoint is
passed in as an argument.
Arguments
< curve - the surface to attach to
< t - position on curve to attach to
Return Codes
sSuccess - the method succeeded
sFailure - internal failure, or tried to attach point
to its own curve
sInvalidObject - the blend point is invalid
sInvalidArgument - curve is NULL, or curve is invalid, or t is invalid for the curve.
statusCode AlBlendPoint::attachConstraint( AlCurveOnSurface *cos, double t )
Description
Attaches this blend point as a constraint to a curve on surface.
Arguments
< cos - the curve on surface to attach to
< t - position on curve on surface to attach to
Return Codes
sSuccess - the method succeeded
sFailure - internal failure
sInvalidObject - the blend point is invalid
sInvalidArgument - curve on surface is NULL, or curve on surface is invalid, or t is invalid for the surface.
statusCode AlBlendPoint::disassociateConstraint()
Description
Disassociates the blend point from geometry it is attached to. The position of the blend curve is not changed by this method
Return Codes
sSuccess - the method succeeded
sFailure - internal failure
sInvalidObject - the blend point is invalid
statusCode AlBlendPoint::attachedTo( AlObject *&obj, double& p1, double& p2 )
Description
Returns the object and point of attachment parameterization value.
Arguments
> obj - the object the blend point is attached to. > p1, p2 - if the object is a surface, both p1 and p2 is set to the u,
v values of the point of attachment. If the object is a curve or curve on surface, p1 is set to the ’t’ value of the point
of attachment to the curve and p2 is unused and set to 0.
Return Codes
sSuccess - the method succeeded
sFailure - internal failure
sInvalidObject - the blend point is invalid
boolean AlBlendPoint::isSlave()
Description
Returns TRUE if this is a slave point.
statusCode AlBlendPoint::makeMaster()
Description
If the current point is a slave, this method will make it a master.
Return Codes
sSuccess - the method succeeded
sFailure - internal failure or point is already a master
sInvalidObject - the blend point is invalid
AlBlendCurve* AlBlendPoint::blendCurve()
Description
Returns the blend curve this point is associated with.
AlBlendPoint* AlBlendPoint::next()
Description
Returns the next blend point in the blend curve.
statusCode AlBlendPoint::nextD( AlBlendPoint* blendPoint )
Description
Destructive method for returning the next blend point on the curve. sFailure is returned if there is no next blend point on
the curve.
Arguments
< blendPoint - the blend point to obtain the next blend point from
Return Codes
sSuccess - the method worked
sFailure - the method failed, could be due to there being no next blend point
sInvalidObject - this blend point is invalid
AlBlendPoint* AlBlendPoint::prev()
Description
Returns the previous blend point in the blend curve.
statusCode AlBlendPoint::prevD( AlBlendPoint* blendPoint )
Description
Destructive method for returning the previous blend point on the curve. sFailure is returned if there is no previous blend
point on the curve.
Arguments
< blendPoint - the blend point to obtain the previous blend point from
Return Codes
sSuccess - the method worked
sFailure - the method failed, could be due to there being no previous blend point
sInvalidObject - this blend point is invalid