Share

AlBlendPoint

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& );

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

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

Was this information helpful?