CrystalSpace

Public API Reference

Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

csIntersect3 Class Reference
[Geometry utilities]

Some functions to perform various intersection calculations with 3D line segments. More...

#include <math3d.h>

List of all members.

Static Public Methods

bool IntersectPolygon (const csPlane3 &plane, csPoly3D *poly, csSegment3 &segment)
 Intersect a plane with a 3D polygon and return the line segment corresponding with this intersection. More...

int IntersectSegment (csPlane3 *planes, int num_planes, csSegment3 &seg)
 Intersect a segment with a frustum (given as a set of planes). More...

bool IntersectTriangle (const csVector3 &tr1, const csVector3 &tr2, const csVector3 &tr3, const csSegment3 &seg, csVector3 &isect)
 Intersect a 3D segment with a triangle. More...

bool Plane (const csVector3 &u, const csVector3 &v, const csVector3 &normal, const csVector3 &a, csVector3 &isect, float &dist)
 Intersect a 3D segment with a plane. More...

bool Plane (const csVector3 &u, const csVector3 &v, const csPlane3 &p, csVector3 &isect, float &dist)
 Intersect a 3D segment with a plane. More...

bool Planes (const csPlane3 &p1, const csPlane3 &p2, const csPlane3 &p3, csVector3 &isect)
 Intersect 3 planes to get the point that is part of all three planes. More...

bool PlaneXPlane (const csPlane3 &p1, float x2, csPlane2 &isect)
 Intersect a regular plane and an axis aligned plane and return the intersection (line) as a 2D plane. More...

bool PlaneYPlane (const csPlane3 &p1, float y2, csPlane2 &isect)
 Intersect a regular plane and an axis aligned plane and return the intersection (line) as a 2D plane. More...

bool PlaneZPlane (const csPlane3 &p1, float z2, csPlane2 &isect)
 Intersect a regular plane and an axis aligned plane and return the intersection (line) as a 2D plane. More...

bool PlaneAxisPlane (const csPlane3 &p1, int nr, float pos, csPlane2 &isect)
 Intersect a regular plane and an axis aligned plane and return the intersection (line) as a 2D plane. More...

float Z0Plane (const csVector3 &v1, const csVector3 &v2, csVector3 &isect)
 Intersect a 3D segment with the z = 0 plane. More...

float Z0Plane (const csSegment3 &uv, csVector3 &isect)
 Intersect a 3D segment with the z = 0 plane. More...

float ZPlane (float zval, const csVector3 &u, const csVector3 &v, csVector3 &isect)
 Intersect a 3D segment with the plane z = zval. More...

float ZPlane (float zval, const csSegment3 &uv, csVector3 &isect)
 Intersect a 3D segment with the plane z = zval. More...

float XFrustum (float A, const csVector3 &u, const csVector3 &v, csVector3 &isect)
 Intersect a 3D segment with the frustum plane Ax + z = 0. More...

float XFrustum (float A, const csSegment3 &uv, csVector3 &isect)
 Intersect a 3D segment with the frustum plane Ax + z = 0. More...

float YFrustum (float B, const csVector3 &u, const csVector3 &v, csVector3 &isect)
 Intersect a 3D segment with the frustum plane By + z = 0. More...

float YFrustum (float B, const csSegment3 &uv, csVector3 &isect)
 Intersect a 3D segment with the frustum plane By + z = 0. More...

int BoxSegment (const csBox3 &box, const csSegment3 &segment, csVector3 &isect, float *pr=NULL)
 Intersect a segment with a box and returns one of CS_BOX_SIDE_... More...

bool BoxFrustum (const csBox3 &box, csPlane3 *frustum, uint32 inClipMask, uint32 &outClipMask)
 Intersect an AABB with a frustum. More...

bool BoxSphere (const csBox3 &box, const csVector3 &center, float sqradius)
 Test if a box intersects with a sphere. More...


Detailed Description

Some functions to perform various intersection calculations with 3D line segments.

This is a static class and contains only static member functions.

Definition at line 260 of file math3d.h.


Member Function Documentation

bool csIntersect3::BoxFrustum const csBox3   box,
csPlane3   frustum,
uint32    inClipMask,
uint32   outClipMask
[static]
 

Intersect an AABB with a frustum.

The frustum may contain up to 32 planes. Active planes are defined using the 'inClipMask'. It will return true if AABB is visible in frustum. If the AABB intersects with the frustum then 'outClipMask' will contain the mask for all planes intersecting with the AABB. This can be used as 'inClipMask' for subsequent frustum tests with children of the AABB (i.e. other AABB inside this AABB).

int csIntersect3::BoxSegment const csBox3   box,
const csSegment3   segment,
csVector3   isect,
float *    pr = NULL
[static]
 

Intersect a segment with a box and returns one of CS_BOX_SIDE_...

if it intersects, CS_BOX_INSIDE if inside, or -1 otherwise. The intersection point is also returned. If 'pr' is given then a number between 0 and 1 is returned which corresponds to the position on the segment. If we were in the box this this function will return CS_BOX_INSIDE. In this case 'isect' will be set to the start of the segment and *pr to 0.

bool csIntersect3::BoxSphere const csBox3   box,
const csVector3   center,
float    sqradius
[static]
 

Test if a box intersects with a sphere.

The intersection is not computed. The sphere is given with squared radius.

bool csIntersect3::IntersectPolygon const csPlane3   plane,
csPoly3D   poly,
csSegment3   segment
[static]
 

Intersect a plane with a 3D polygon and return the line segment corresponding with this intersection.

Returns true if there is an intersection. If false then 'segment' will not be valid.

int csIntersect3::IntersectSegment csPlane3   planes,
int    num_planes,
csSegment3   seg
[static]
 

Intersect a segment with a frustum (given as a set of planes).

Returns the clipped segment (i.e. the part of the segment that is visible in the frustum). Returns -1 if the segment is entirely outside the frustum. Returns 0 if the segment is not modified and returns 1 otherwise. The input segment will be modified. @@ WARNING! This function may not work completely ok. It has only barely been tested and is now unused.

bool csIntersect3::IntersectTriangle const csVector3   tr1,
const csVector3   tr2,
const csVector3   tr3,
const csSegment3   seg,
csVector3   isect
[static]
 

Intersect a 3D segment with a triangle.

Returns true if there is an intersection. In that case the intersection point will be in 'isect'.

bool csIntersect3::Plane const csVector3   u,
const csVector3   v,
const csPlane3   p,
csVector3   isect,
float &    dist
[static]
 

Intersect a 3D segment with a plane.

Returns true if there is an intersection, with the intersection point returned in isect. The distance from u to the intersection point is returned in dist. The distance that is returned is a normalized distance with respect to the given input vector. i.e. a distance of 0.5 means that the intersection point is halfway u and v.

bool csIntersect3::Plane const csVector3   u,
const csVector3   v,
const csVector3   normal,
const csVector3   a,
csVector3   isect,
float &    dist
[static]
 

Intersect a 3D segment with a plane.

Returns true if there is an intersection, with the intersection point returned in isect.

bool csIntersect3::PlaneAxisPlane const csPlane3   p1,
int    nr,
float    pos,
csPlane2   isect
[inline, static]
 

Intersect a regular plane and an axis aligned plane and return the intersection (line) as a 2D plane.

This intersection is defined on the axis aligned plane. Returns false if there is no intersection.

Definition at line 354 of file math3d.h.

References PlaneXPlane, PlaneYPlane, and PlaneZPlane.

bool csIntersect3::Planes const csPlane3   p1,
const csPlane3   p2,
const csPlane3   p3,
csVector3   isect
[static]
 

Intersect 3 planes to get the point that is part of all three planes.

Returns true, if there is a single point that fits. If some planes are parallel, then it will return false.

bool csIntersect3::PlaneXPlane const csPlane3   p1,
float    x2,
csPlane2   isect
[static]
 

Intersect a regular plane and an axis aligned plane and return the intersection (line) as a 2D plane.

This intersection is defined on the axis aligned plane. Returns false if there is no intersection.

Referenced by PlaneAxisPlane.

bool csIntersect3::PlaneYPlane const csPlane3   p1,
float    y2,
csPlane2   isect
[static]
 

Intersect a regular plane and an axis aligned plane and return the intersection (line) as a 2D plane.

This intersection is defined on the axis aligned plane. Returns false if there is no intersection.

Referenced by PlaneAxisPlane.

bool csIntersect3::PlaneZPlane const csPlane3   p1,
float    z2,
csPlane2   isect
[static]
 

Intersect a regular plane and an axis aligned plane and return the intersection (line) as a 2D plane.

This intersection is defined on the axis aligned plane. Returns false if there is no intersection.

Referenced by PlaneAxisPlane.

float csIntersect3::XFrustum float    A,
const csSegment3   uv,
csVector3   isect
[inline, static]
 

Intersect a 3D segment with the frustum plane Ax + z = 0.

Assumes an intersection, and returns the intersection point in isect.

Definition at line 423 of file math3d.h.

References csSegment3::End, csSegment3::Start, and XFrustum.

float csIntersect3::XFrustum float    A,
const csVector3   u,
const csVector3   v,
csVector3   isect
[static]
 

Intersect a 3D segment with the frustum plane Ax + z = 0.

Assumes an intersection, and returns the intersection point in isect.

Referenced by XFrustum.

float csIntersect3::YFrustum float    B,
const csSegment3   uv,
csVector3   isect
[inline, static]
 

Intersect a 3D segment with the frustum plane By + z = 0.

Assumes an intersection, and returns the intersection point in isect.

Definition at line 440 of file math3d.h.

References csSegment3::End, csSegment3::Start, and YFrustum.

float csIntersect3::YFrustum float    B,
const csVector3   u,
const csVector3   v,
csVector3   isect
[static]
 

Intersect a 3D segment with the frustum plane By + z = 0.

Assumes an intersection, and returns the intersection point in isect.

Referenced by YFrustum.

float csIntersect3::Z0Plane const csSegment3   uv,
csVector3   isect
[inline, static]
 

Intersect a 3D segment with the z = 0 plane.

Assumes that there is an intersection (fails if the segment is parallel to the plane), and returns the distance from u to the intersection point. The intersection point is returned in isect.

Definition at line 382 of file math3d.h.

References Z0Plane.

float csIntersect3::Z0Plane const csVector3   v1,
const csVector3   v2,
csVector3   isect
[static]
 

Intersect a 3D segment with the z = 0 plane.

Assumes that there is an intersection (fails if the segment is parallel to the plane), and returns the distance from u to the intersection point. The intersection point is returned in isect.

Referenced by Z0Plane.

float csIntersect3::ZPlane float    zval,
const csSegment3   uv,
csVector3   isect
[inline, static]
 

Intersect a 3D segment with the plane z = zval.

Assumes that there is an intersection (fails if the segment is parallel to the plane), and returns the distance from u to the intersection point. The intersection point is returned in isect.

Definition at line 405 of file math3d.h.

References ZPlane.

float csIntersect3::ZPlane float    zval,
const csVector3   u,
const csVector3   v,
csVector3   isect
[static]
 

Intersect a 3D segment with the plane z = zval.

Assumes that there is an intersection (fails if the segment is parallel to the plane), and returns the distance from u to the intersection point. The intersection point is returned in isect.

Referenced by ZPlane.


The documentation for this class was generated from the following file:
Generated for Crystal Space by doxygen 1.2.14