Encapsulates
the creation, deletion, and manipulation of linear lights.
Synopsis
#include <AlLinearLight.h>
class AlLinearLight: public AlDirectionLight
AlLinearLight();
virtual ~AlLinearLight();
virtual AlObject* copyWrapper() const;
statusCode create();
AlObjectType type() const;
statusCode axis( double&, double&, double& ) const;
statusCode setAxis( double, double, double );
statusCode endpoint( double&, double&, double& ) const;
Description
A linear light emits
light in all directions. A linear light would be used, for instance,
to simulate a fluorescent light tube. The length of the line is
defined by the light’s axis.
To determine the endpoints
of this light, use the worldPosition() method and the endpoint()
method.
Although this class inherits
methods to access the ’look at’ and ’up’ nodes of a light, they are
not used. The direction and twist of an area light is changed by
translating and rotating the transformation of the light’s position
node.
AlLinearLight::AlLinearLight()
Description
Constructs
an AlLinearLight wrapper object.
AlLinearLight::~AlLinearLight()
Description
Deletes
an AlLinearLight wrapper object.
statusCode AlLinearLight::create()
Description
Creates
all the DAG nodes for this light and adds them to the universe.
The DAG nodes are for ’position’, ’look at’ and ’up’, and another
DAG node that groups these three together.
Return Codes
sSuccess - everything
was successful
sInsufficientMemory -
not enough memory available
sAlreadyCreated - light
is already created
AlObjectType AlLinearLight::type()
const
Description
Returns
the class identifier kLinearLightType.
statusCode AlLinearLight::axis(
double &x, double &y, double &z) const
Description
Returns
the linear light’s axis in x,y & z.
Arguments
> x - is the light’s
axis in the x direction
> y - is the light’s
axis in the y direction
> z - is the light’s
axis in the z direction
Return Codes
sSuccess - axis returned
sInvalidObject - the
light was not valid
sFailure - an error occurred
statusCode AlLinearLight::setAxis(
double x, double y, double z )
Description
Sets the axis
of the light to be x,y, & z. The given axis must be non-zero.
Arguments
< x - is the light’s
new axis in the x direction
< y - is the light’s
new axis in the y direction
< z - is the light’s
new axis in the z direction
Return Codes
sSuccess - axis set
sInvalidArgument - the
(x,y,z) forms a zero (or nearly zero) vector
sInvalidObject - the
light was not valid
sFailure - an error occurred
statusCode AlLinearLight::endpoint(
double &x, double &y, double &z ) const
Description
Returns
the endpoint of this linear light in world space. This point and
the world position of this light form the line that makes this light
a linear light.
Arguments
> x - is the endpoint
in the x direction
> y - is the endpoint
in the y direction
> z - is the endpoint
in the z direction
Return Codes
sSuccess - endpoint retrieved
sInvalidObject - object
invalid
sFailure - an error occurred