csPlane3 Class Reference
[Geometry utilities]
A plane in 3D space.
More...
#include <csgeom/plane3.h>
Public Member Functions | |
float & | A () |
Return the A component of this plane. | |
float | A () const |
Return the A component of this plane. | |
float & | B () |
Return the B component of this plane. | |
float | B () const |
Return the B component of this plane. | |
float & | C () |
Return the C component of this plane. | |
float | C () const |
Return the C component of this plane. | |
float | Classify (const csVector3 &pt) const |
Classify the given vector with regards to this plane. | |
uint8 | ClipPolygon (const csVector3 *InVerts, size_t InCount, csVector3 *OutPolygon, size_t &OutCount, csVertexStatus *OutStatus, bool reversed=false) const |
Clip the polygon in InVerts (having InCount vertices) to this plane. | |
bool | ClipPolygon (csVector3 *&pverts, int &num_verts, bool reversed=false) |
Clip the polygon in pverts (having num_verts vertices) to this plane. | |
csPlane3 (const csVector3 &v2, const csVector3 &v3) | |
Initialize the plane through 0 and the two given points. | |
csPlane3 (const csVector3 &v1, const csVector3 &v2, const csVector3 &v3) | |
Initialize the plane through the three given points. | |
csPlane3 (float a, float b, float c, float d=0) | |
Initialize the plane to the given components. | |
csPlane3 (const csVector3 &plane_norm, float d=0) | |
Initialize the plane with the given norm and D component. | |
csPlane3 () | |
Initialize to the xy plane (0,0,1,0). | |
float & | D () |
Return the D component of this plane. | |
float | D () const |
Return the D component of this plane. | |
csString | Description () const |
Return a textual representation of the plane in the form "aa,bb,cc,dd". | |
float | Distance (const csVector3 &pt) const |
Compute the distance from the given vector to this plane. | |
csVector3 | FindPoint () const |
Find a point on this plane. | |
const csVector3 & | GetNormal () const |
Return the normal of this plane. | |
void | Invert () |
Reverses the direction of the plane while maintaining the plane itself. | |
const csVector3 & | Normal () const |
Return the normal vector of this plane. | |
csVector3 & | Normal () |
Return the normal vector of this plane. | |
void | Normalize () |
Normalizes the plane equation so that 'norm' is a unit vector. | |
void | Set (const csVector3 &v2, const csVector3 &v3) |
Initialize the plane through 0 and the two given points. | |
void | Set (const csVector3 &v1, const csVector3 &v2, const csVector3 &v3) |
Initialize the plane through the three given points. | |
void | Set (const csVector3 &normal, float d) |
Set the value of the plane using a normal and D component. | |
void | Set (float a, float b, float c, float d) |
Set the value of the four plane components. | |
void | SetOrigin (const csVector3 &p) |
Set one point ("origin") through which the plane goes. | |
Static Public Member Functions | |
static float | Classify (float A, float B, float C, float D, const csVector3 &pt) |
This static function classifies a vector with regards to four given plane components. | |
Public Attributes | |
float | DD |
The D component of the plane. | |
csVector3 | norm |
The normal vector (or the (A,B,C) components). |
Detailed Description
A plane in 3D space.The plane is given by the equation AAx + BBy + CCz + DD = 0, Where (AA,BB,CC) is given by the vector 'norm'.
Definition at line 42 of file plane3.h.
Constructor & Destructor Documentation
csPlane3::csPlane3 | ( | ) | [inline] |
csPlane3::csPlane3 | ( | const csVector3 & | plane_norm, | |
float | d = 0 | |||
) | [inline] |
csPlane3::csPlane3 | ( | float | a, | |
float | b, | |||
float | c, | |||
float | d = 0 | |||
) | [inline] |
Initialize the plane through the three given points.
If the plane is expressed as (N,D) with N the A,B,C components of the plane then this will initialize the plane to (N',-N'*v1) with N' equal to (v1-v2)%(v1-v3).
Member Function Documentation
float& csPlane3::A | ( | ) | [inline] |
float csPlane3::A | ( | ) | const [inline] |
Return the A component of this plane.
Definition at line 90 of file plane3.h.
References csVector3::x.
float& csPlane3::B | ( | ) | [inline] |
float csPlane3::B | ( | ) | const [inline] |
float& csPlane3::C | ( | ) | [inline] |
float csPlane3::C | ( | ) | const [inline] |
static float csPlane3::Classify | ( | float | A, | |
float | B, | |||
float | C, | |||
float | D, | |||
const csVector3 & | pt | |||
) | [inline, static] |
This static function classifies a vector with regards to four given plane components.
This will calculate and return A*pt.x+B*pt.y+C*pt.z+D.
Definition at line 161 of file plane3.h.
References csVector3::x, csVector3::y, and csVector3::z.
float csPlane3::Classify | ( | const csVector3 & | pt | ) | const [inline] |
Classify the given vector with regards to this plane.
If the plane is expressed as (N,D) with N the A,B,C components of the plane then this will calculate and return N*pt+D. Note that in the Crystal Space engine this function will return negative if used on the visible side of a polygon. i.e. if you take the world space plane of the polygon, then Classify() will return a negative value if the camera is located at a point from which you can see the polygon. Back-face culling will make the polygon invisible on the other side.
Definition at line 155 of file plane3.h.
Referenced by csSquaredDist::PointPlane(), and csMath3::Visible().
uint8 csPlane3::ClipPolygon | ( | const csVector3 * | InVerts, | |
size_t | InCount, | |||
csVector3 * | OutPolygon, | |||
size_t & | OutCount, | |||
csVertexStatus * | OutStatus, | |||
bool | reversed = false | |||
) | const |
Clip the polygon in InVerts
(having InCount
vertices) to this plane.
Method returns one of CS_CLIP_OUTSIDE, CS_CLIP_INSIDE, CS_CLIP_CLIPPED depending on whether all, none or some vertices were clipped. If the polygon is clipped, the resulting polygon is returned in OutPolygon
and the number of vertices in OutCount
. OutCount
must be initialized with the maximum number of output vertices. OutStatus
will return additional information for clipped vertices. Normally this function will consider the polygon visible if it is on the negative side of the plane (Classify()). If reversed
is set to true then the positive side will be used instead.
bool csPlane3::ClipPolygon | ( | csVector3 *& | pverts, | |
int & | num_verts, | |||
bool | reversed = false | |||
) |
Clip the polygon in pverts (having num_verts vertices) to this plane.
Method returns true if there is something visible, false otherwise. Note that this function returns a pointer to a static array in csPlane3. The contents of this array will only be valid until the next call to ClipPolygon. Normally this function will consider the polygon visible if it is on the negative side of the plane (Classify()). If 'reversed' is set to true then the positive side will be used instead.
float& csPlane3::D | ( | ) | [inline] |
float csPlane3::D | ( | ) | const [inline] |
csString csPlane3::Description | ( | ) | const |
Return a textual representation of the plane in the form "aa,bb,cc,dd".
float csPlane3::Distance | ( | const csVector3 & | pt | ) | const [inline] |
Compute the distance from the given vector to this plane.
This function assumes that 'norm' is a unit vector. If not, the function returns distance times the magnitude of 'norm'. This function corresponds exactly to the absolute value of Classify().
Definition at line 173 of file plane3.h.
References ABS.
csVector3 csPlane3::FindPoint | ( | ) | const |
Find a point on this plane.
const csVector3& csPlane3::GetNormal | ( | ) | const [inline] |
void csPlane3::Invert | ( | ) | [inline] |
Reverses the direction of the plane while maintaining the plane itself.
This will basically reverse the result of Classify().
const csVector3& csPlane3::Normal | ( | ) | const [inline] |
csVector3& csPlane3::Normal | ( | ) | [inline] |
void csPlane3::Normalize | ( | ) | [inline] |
Initialize the plane through the three given points.
If the plane is expressed as (N,D) with N the A,B,C components of the plane then this will initialize the plane to (N',-N'*v1) with N' equal to (v1-v2)%(v1-v3).
void csPlane3::Set | ( | const csVector3 & | normal, | |
float | d | |||
) | [inline] |
void csPlane3::Set | ( | float | a, | |
float | b, | |||
float | c, | |||
float | d | |||
) | [inline] |
void csPlane3::SetOrigin | ( | const csVector3 & | p | ) | [inline] |
Member Data Documentation
float csPlane3::DD |
The D component of the plane.
Definition at line 49 of file plane3.h.
Referenced by csMath3::PlanesEqual().
The normal vector (or the (A,B,C) components).
Definition at line 46 of file plane3.h.
Referenced by csMath3::PlanesEqual().
The documentation for this class was generated from the following file:
- csgeom/plane3.h
Generated for Crystal Space by doxygen 1.4.7