# csPoly3D Class Reference [Geometry utilities]

The following class represents a general 3D polygon. More...

`#include <csgeom/poly3d.h>`

Inheritance diagram for csPoly3D:

List of all members.

## Public Member Functions

Add a vertex (3D) to the polygon.
size_t AddVertex (float x, float y, float z)
Add a vertex (3D) to the polygon.
int Classify (const csPlane3 &pl) const
Classify this polygon with regards to a plane.
int ClassifyAxis (int axis, float where) const
Same as Classify() but for a given axis plane.
int ClassifyX (float x) const
Same as Classify() but for X plane only.
int ClassifyY (float y) const
Same as Classify() but for Y plane only.
int ClassifyZ (float z) const
Same as Classify() but for Z plane only.
int ComputeMainNormalAxis () const
Calculate the main axis of the normal.
csVector3 ComputeNormal () const
Compute the normal of this polygon.
csPlane3 ComputePlane () const
Compute the plane of this polygon.
csPoly3D (size_t start_size=10)
Make a new empty polygon.
csPoly3D (const csPoly3D &copy)
Copy constructor.
void CutToPlane (const csPlane3 &split_plane)
Cut this polygon with a plane and only keep the front side.
float GetArea () const
Calculate the area of this polygon.
csVector3 GetCenter () const
Compute and get the central vertex of this polygon.
const csVector3GetFirst () const
Get the first vertex.
const csVector3GetLast () const
Get the last vertex.
const csVector3GetVertex (size_t i) const
Get the specified vertex.
size_t GetVertexCount () const
Get the number of vertices.
const csVector3GetVertices () const
Get the array with all vertices.
csVector3GetVertices ()
Get the array with all vertices.
bool In (const csVector3 &v) const
Test if this vector is inside the polygon.
bool InSphere (const csVector3 &center, float radius)
Figure out if this polygon is inside or intersecting a sphere.
int IsAxisAligned (float &where, float epsilon=SMALL_EPSILON) const
Test if this polygon is axis aligned and return the axis (one of CS_AXIS_ constants).
void MakeEmpty ()
Initialize the polygon to empty.
void MakeRoom (size_t new_max)
Make room for at least the specified number of vertices.
csVector3operator[] (size_t i)
Get the specified vertex.
const csVector3operator[] (size_t i) const
Get the specified vertex.
bool ProjectAxisPlane (const csVector3 &point, int plane_nr, float plane_pos, csPoly2D *poly2d) const
Project this polygon onto an axis-aligned plane as seen from some point in space.
bool ProjectXPlane (const csVector3 &point, float plane_x, csPoly2D *poly2d) const
Project this polygon onto a X plane as seen from some point in space.
bool ProjectYPlane (const csVector3 &point, float plane_y, csPoly2D *poly2d) const
Project this polygon onto a Y plane as seen from some point in space.
bool ProjectZPlane (const csVector3 &point, float plane_z, csPoly2D *poly2d) const
Project this polygon onto a Z plane as seen from some point in space.
void SetVertexCount (size_t n)
Set the number of vertices.
void SetVertices (csVector3 const *v, size_t num)
Set all polygon vertices at once.
void SplitWithPlane (csPoly3D &front, csPoly3D &back, const csPlane3 &split_plane) const
Split this polygon with the given plane (A,B,C,D).
void SplitWithPlaneX (csPoly3D &front, csPoly3D &back, float x) const
Split this polygon to the x-plane.
void SplitWithPlaneY (csPoly3D &front, csPoly3D &back, float y) const
Split this polygon to the y-plane.
void SplitWithPlaneZ (csPoly3D &front, csPoly3D &back, float z) const
Split this polygon to the z-plane.
virtual ~csPoly3D ()
Destructor.

## Static Public Member Functions

static int Classify (const csPlane3 &pl, const csVector3 *vertices, size_t num_vertices)
Static function to classify a polygon with regards to a plane.
static csVector3 ComputeNormal (const csArray< csVector3 > &poly)
Compute the normal of a polygon.
static csVector3 ComputeNormal (int *poly, size_t num, csVector3 *vertices)
Compute the normal of an indexed polygon.
static csVector3 ComputeNormal (const csVector3 *vertices, size_t num)
Compute the normal of a polygon.
static csPlane3 ComputePlane (const csArray< csVector3 > &poly)
Compute the plane of a polygon.
static csPlane3 ComputePlane (int *poly, size_t num, csVector3 *vertices)
Compute the plane of an indexed polygon.
static csPlane3 ComputePlane (const csVector3 *vertices, size_t num)
Compute the plane of a polygon.
static bool In (csVector3 *poly, size_t num_poly, const csVector3 &v)
Test if a vector is inside the given polygon.

## Protected Attributes

csDirtyAccessArray< csVector3vertices
The 3D vertices.

## Detailed Description

The following class represents a general 3D polygon.

Definition at line 53 of file poly3d.h.

## Constructor & Destructor Documentation

 csPoly3D::csPoly3D ( size_t start_size = `10` )

Make a new empty polygon.

 csPoly3D::csPoly3D ( const csPoly3D & copy )

Copy constructor.

 virtual csPoly3D::~csPoly3D ( ) ` [virtual]`

Destructor.

## Member Function Documentation

 size_t csPoly3D::AddVertex ( const csVector3 & v ) ` [inline]`

Add a vertex (3D) to the polygon.

Definition at line 163 of file poly3d.h.

 size_t csPoly3D::AddVertex ( float x, float y, float z )

Add a vertex (3D) to the polygon.

 static int csPoly3D::Classify ( const csPlane3 & pl, const csVector3 * vertices, size_t num_vertices ) ` [static]`

Static function to classify a polygon with regards to a plane.

If this poly is on same plane it returns CS_POL_SAME_PLANE. If this poly is completely in front of the given plane it returnes CS_POL_FRONT. If this poly is completely back of the given plane it returnes CS_POL_BACK. Otherwise it returns CS_POL_SPLIT_NEEDED.

 int csPoly3D::Classify ( const csPlane3 & pl ) const` [inline]`

Classify this polygon with regards to a plane.

If this poly is on same plane it returns CS_POL_SAME_PLANE. If this poly is completely in front of the given plane it returnes CS_POL_FRONT. If this poly is completely back of the given plane it returnes CS_POL_BACK. Otherwise it returns CS_POL_SPLIT_NEEDED.

Definition at line 249 of file poly3d.h.

 int csPoly3D::ClassifyAxis ( int axis, float where ) const` [inline]`

Same as Classify() but for a given axis plane.

Definition at line 264 of file poly3d.h.

 int csPoly3D::ClassifyX ( float x ) const

Same as Classify() but for X plane only.

 int csPoly3D::ClassifyY ( float y ) const

Same as Classify() but for Y plane only.

 int csPoly3D::ClassifyZ ( float z ) const

Same as Classify() but for Z plane only.

 int csPoly3D::ComputeMainNormalAxis ( ) const

Calculate the main axis of the normal.

Returns one of the CS_AXIS_ constants;

 static csVector3 csPoly3D::ComputeNormal ( const csVector3 * vertices, size_t num ) ` [static]`

Compute the normal of a polygon.

 static csVector3 csPoly3D::ComputeNormal ( const csArray< csVector3 > & poly ) ` [static]`

Compute the normal of a polygon.

 static csVector3 csPoly3D::ComputeNormal ( int * poly, size_t num, csVector3 * vertices ) ` [static]`

Compute the normal of an indexed polygon.

 csVector3 csPoly3D::ComputeNormal ( ) const` [inline]`

Compute the normal of this polygon.

Definition at line 316 of file poly3d.h.

 static csPlane3 csPoly3D::ComputePlane ( const csVector3 * vertices, size_t num ) ` [static]`

Compute the plane of a polygon.

 static csPlane3 csPoly3D::ComputePlane ( int * poly, size_t num, csVector3 * vertices ) ` [static]`

Compute the plane of an indexed polygon.

 csPlane3 csPoly3D::ComputePlane ( ) const` [inline]`

Compute the plane of this polygon.

Definition at line 331 of file poly3d.h.

 static csPlane3 csPoly3D::ComputePlane ( const csArray< csVector3 > & poly ) ` [static]`

Compute the plane of a polygon.

 void csPoly3D::CutToPlane ( const csPlane3 & split_plane )

Cut this polygon with a plane and only keep the front side.

 float csPoly3D::GetArea ( ) const

Calculate the area of this polygon.

 csVector3 csPoly3D::GetCenter ( ) const

Compute and get the central vertex of this polygon.

 const csVector3* csPoly3D::GetFirst ( ) const` [inline]`

Get the first vertex.

Definition at line 119 of file poly3d.h.

 const csVector3* csPoly3D::GetLast ( ) const` [inline]`

Get the last vertex.

Definition at line 128 of file poly3d.h.

 const csVector3* csPoly3D::GetVertex ( size_t i ) const` [inline]`

Get the specified vertex.

Definition at line 94 of file poly3d.h.

 size_t csPoly3D::GetVertexCount ( ) const` [inline]`

Get the number of vertices.

Definition at line 79 of file poly3d.h.

 csVector3* csPoly3D::GetVertices ( ) ` [inline]`

Get the array with all vertices.

Definition at line 89 of file poly3d.h.

 const csVector3* csPoly3D::GetVertices ( ) const` [inline]`

Get the array with all vertices.

Definition at line 84 of file poly3d.h.

 static bool csPoly3D::In ( csVector3 * poly, size_t num_poly, const csVector3 & v ) ` [static]`

Test if a vector is inside the given polygon.

 bool csPoly3D::In ( const csVector3 & v ) const

Test if this vector is inside the polygon.

 bool csPoly3D::InSphere ( const csVector3 & center, float radius )

Figure out if this polygon is inside or intersecting a sphere.

 int csPoly3D::IsAxisAligned ( float & where, float epsilon = `SMALL_EPSILON` ) const

Test if this polygon is axis aligned and return the axis (one of CS_AXIS_ constants).

The location of the axis is returned in 'where'. Returns CS_AXIS_NONE if the polygon is not axis aligned. The epsilon will be used to test if two coordinates are close.

 void csPoly3D::MakeEmpty ( )

Initialize the polygon to empty.

 void csPoly3D::MakeRoom ( size_t new_max )

Make room for at least the specified number of vertices.

 csVector3& csPoly3D::operator[] ( size_t i ) ` [inline]`

Get the specified vertex.

Definition at line 103 of file poly3d.h.

 const csVector3& csPoly3D::operator[] ( size_t i ) const` [inline]`

Get the specified vertex.

Definition at line 111 of file poly3d.h.

 bool csPoly3D::ProjectAxisPlane ( const csVector3 & point, int plane_nr, float plane_pos, csPoly2D * poly2d ) const` [inline]`

Project this polygon onto an axis-aligned plane as seen from some point in space.

Fills the given 2D polygon with the projection on the plane. This function assumes that there actually is a projection. Plane_nr is 0 for the X plane, 1 for Y, and 2 for Z. Or one of the CS_AXIX_ constants.

Definition at line 220 of file poly3d.h.

 bool csPoly3D::ProjectXPlane ( const csVector3 & point, float plane_x, csPoly2D * poly2d ) const

Project this polygon onto a X plane as seen from some point in space.

Fills the given 2D polygon with the projection on the plane. This function assumes that there actually is a projection. If the polygon to project comes on the same plane as 'point' then it will return false (no valid projection).

 bool csPoly3D::ProjectYPlane ( const csVector3 & point, float plane_y, csPoly2D * poly2d ) const

Project this polygon onto a Y plane as seen from some point in space.

Fills the given 2D polygon with the projection on the plane. This function assumes that there actually is a projection. If the polygon to project comes on the same plane as 'point' then it will return false (no valid projection).

 bool csPoly3D::ProjectZPlane ( const csVector3 & point, float plane_z, csPoly2D * poly2d ) const

Project this polygon onto a Z plane as seen from some point in space.

Fills the given 2D polygon with the projection on the plane. This function assumes that there actually is a projection. If the polygon to project comes on the same plane as 'point' then it will return false (no valid projection).

 void csPoly3D::SetVertexCount ( size_t n ) ` [inline]`

Set the number of vertices.

Definition at line 153 of file poly3d.h.

 void csPoly3D::SetVertices ( csVector3 const * v, size_t num ) ` [inline]`

Set all polygon vertices at once.

Copies the array.

Definition at line 177 of file poly3d.h.

 void csPoly3D::SplitWithPlane ( csPoly3D & front, csPoly3D & back, const csPlane3 & split_plane ) const

Split this polygon with the given plane (A,B,C,D).

 void csPoly3D::SplitWithPlaneX ( csPoly3D & front, csPoly3D & back, float x ) const

Split this polygon to the x-plane.

 void csPoly3D::SplitWithPlaneY ( csPoly3D & front, csPoly3D & back, float y ) const

Split this polygon to the y-plane.

 void csPoly3D::SplitWithPlaneZ ( csPoly3D & front, csPoly3D & back, float z ) const

Split this polygon to the z-plane.

## Member Data Documentation

 csDirtyAccessArray csPoly3D::vertices` [protected]`

The 3D vertices.

Definition at line 57 of file poly3d.h.

The documentation for this class was generated from the following file:

Generated for Crystal Space 1.4.1 by doxygen 1.7.1