Line Class Reference

A Zone defining a line in the universe. More...

Inheritance diagram for Line:
Zone Registerable Transformable

List of all members.

Public Member Functions

 Line (const Vector3D &p0=Vector3D(0.0f, 0.0f, 0.0f), const Vector3D &p1=Vector3D(0.0f, 0.0f, 0.0f))
 Constructor of Line.
void setPosition (const Vector3D &v)
 Sets the position of this Zone.
void setBounds (const Vector3D &p0, const Vector3D &p1)
 Sets the bounds of this Line.
const Vector3DgetBound (size_t index) const
 Gets the bound of index of this Line.
const Vector3DgetTransformedBound (size_t index) const
 Gets the transformed bound of index of this Line.
void pushBound (const Vector3D &bound)
 Pushes a new bound to this Line.
virtual void generatePosition (Particle &particle, bool full) const
 Randomly generates a position inside this Zone for a given Particle.
virtual bool contains (const Vector3D &v) const
 Checks whether a point is within the Zone.
virtual bool intersects (const Vector3D &v0, const Vector3D &v1, Vector3D *intersection, Vector3D *normal) const
 Checks whether a line intersects the Zone.
virtual void moveAtBorder (Vector3D &v, bool inside) const
 Moves a point at the border of the Zone.
virtual Vector3D computeNormal (const Vector3D &point) const
 Computes the normal for the point.

Static Public Member Functions

static Linecreate (const Vector3D &p0=Vector3D(0.0f, 0.0f, 0.0f), const Vector3D &p1=Vector3D(0.0f, 0.0f, 0.0f))
 Creates and registers a new Line.

Protected Member Functions

virtual void innerUpdateTransform ()
 Updates all the parameters in the world coordinates.

Detailed Description

A Zone defining a line in the universe.

As any Zone, a Line is defined by a position. The Line in itself is defined by two bounds.
Moving the position results in moving the 2 bounds in the universe by the same vector.

To conform with the Zone class (the position is defined as the center of the Zone), the position is always set to be the center of the line. Therefore, if a bound is modified, the position will be modified as well.

Since:
1.01.00

Definition at line 42 of file SPK_Line.h.


Constructor & Destructor Documentation

Line ( const Vector3D p0 = Vector3D(0.0f, 0.0f, 0.0f),
const Vector3D p1 = Vector3D(0.0f, 0.0f, 0.0f) 
)

Constructor of Line.

Parameters:
p0 : the first bound of this Line
p1 : the second bound of this Line

Member Function Documentation

virtual Vector3D computeNormal ( const Vector3D point  )  const [virtual]

Computes the normal for the point.

Parameters:
point : the point from where the normal is computed
Returns:
the normal vector
Since:
1.02.00

Implements Zone.

bool contains ( const Vector3D point  )  const [virtual]

Checks whether a point is within the Zone.

Parameters:
point : the point to check
Returns:
true if the point is within the Zone, false otherwise

Implements Zone.

Definition at line 153 of file SPK_Line.h.

Line * create ( const Vector3D p0 = Vector3D(0.0f,0.0f,0.0f),
const Vector3D p1 = Vector3D(0.0f,0.0f,0.0f) 
) [static]

Creates and registers a new Line.

Parameters:
p0 : the first bound of this Line
p1 : the second bound of this Line
Since:
1.04.00

Definition at line 136 of file SPK_Line.h.

virtual void generatePosition ( Particle particle,
bool  full 
) const [virtual]

Randomly generates a position inside this Zone for a given Particle.

Parameters:
particle : the Particle whose position will be generated
full : true to generate a position in the whole volume of this Zone, false to generate a position only at borders

Implements Zone.

const Vector3D & getBound ( size_t  index  )  const

Gets the bound of index of this Line.

Parameters:
index : the index of the bound (0 or 1)
Returns:
the first bound of index of this Line
Since:
1.03.00

Definition at line 143 of file SPK_Line.h.

const Vector3D & getTransformedBound ( size_t  index  )  const

Gets the transformed bound of index of this Line.

Parameters:
index : the index of the bound (0 or 1)
Returns:
the transformed bound of index of this Line
Since:
1.03.00

Definition at line 148 of file SPK_Line.h.

virtual void innerUpdateTransform (  )  [protected, virtual]

Updates all the parameters in the world coordinates.

This method can be overriden in derived classes of Transformable (By default it does nothing).
It is this method task to compute all parameters of the class that are dependent of the world transform.

Reimplemented from Zone.

bool intersects ( const Vector3D v0,
const Vector3D v1,
Vector3D intersection,
Vector3D normal 
) const [virtual]

Checks whether a line intersects the Zone.

The intersection is computed only if the Vector3D* intersection is not NULL.
The normal is computed if the Vector3D* normal AND intersection are not NULL.

Parameters:
v0 : start of the line
v1 : end of the line
intersection : the Vector3D where the intersection will be stored, NULL not to compute the intersection
normal : the Vector3D where the normal will be stored, NULL not to compute the normal
Returns:
true if the line intersects with the Zone, false otherwise

Implements Zone.

Definition at line 158 of file SPK_Line.h.

void moveAtBorder ( Vector3D point,
bool  inside 
) const [virtual]

Moves a point at the border of the Zone.

Parameters:
point : the point that will be moved to the border of the Zone
inside : true to move the point inside the Zone of APPROXIMATION_VALUE, false to move it outside of APPROXIMATION_VALUE

Implements Zone.

Definition at line 163 of file SPK_Line.h.

void pushBound ( const Vector3D bound  ) 

Pushes a new bound to this Line.

This method replaces the first bound by the second bound and the second bound by the new bound.
It allows to follow the trajectory of a moving object over time with a single Line.

Parameters:
bound : the new bound of this Line
void setBounds ( const Vector3D p0,
const Vector3D p1 
)

Sets the bounds of this Line.

Parameters:
p0 : the first bound of this Line
p1 : the second bound of this Line
void setPosition ( const Vector3D v  )  [virtual]

Sets the position of this Zone.

Parameters:
v : the position of this Zone

Reimplemented from Zone.


Generated on Wed Apr 27 21:09:26 2011 for SPARK Particle Engine by  doxygen 1.6.1