Main Page | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals

pge::AABB Class Reference

#include <AABB.h>


Public Member Functions

 AABB (void)
 Standard constructor.

 AABB (float minX, float minY, float minZ, float maxX, float maxY, float maxZ)
 AABB (const AABB &copy)
 ~AABB (void)
 Destructor.

bool isAABBCompletelyInside (AABB *boundingBox)
bool isAABBInsideOrOverlapping (AABB *boundingBox)
bool isPointInside (const Vector3f &point)
bool isPointInside (float x, float y, float z)
Vector3f getCenter (void)
Vector3f getBottomCenter (void)
void renderSolid (Vector3f color)
void renderWireframe (Vector3f color)

Data Fields

float m_minX
float m_minY
float m_minZ
float m_maxX
float m_maxY
float m_maxZ


Constructor & Destructor Documentation

pge::AABB::AABB void   ) 
 

Standard constructor.

Definition at line 16 of file AABB.cpp.

References m_maxX, m_maxY, m_maxZ, m_minX, m_minY, and m_minZ.

00016                        {
00017                 m_minX = 0.0f;
00018                 m_minY = 0.0f;
00019                 m_minZ = 0.0f;
00020                 m_maxX = 0.0f;
00021                 m_maxY = 0.0f;
00022                 m_maxZ = 0.0f;
00023         }

pge::AABB::AABB float  minX,
float  minY,
float  minZ,
float  maxX,
float  maxY,
float  maxZ
 

Definition at line 31 of file AABB.cpp.

References m_maxX, m_maxY, m_maxZ, m_minX, m_minY, and m_minZ.

00031                                                                                          {
00032                 m_minX = minX;
00033                 m_minY = minY;
00034                 m_minZ = minZ;
00035                 m_maxX = maxX;
00036                 m_maxY = maxY;
00037                 m_maxZ = maxZ;
00038         }

pge::AABB::AABB const AABB copy  ) 
 

Definition at line 46 of file AABB.cpp.

References m_maxX, m_maxY, m_maxZ, m_minX, m_minY, and m_minZ.

00046                                    {
00047                 m_minX = copy.m_minX;
00048                 m_minY = copy.m_minY;
00049                 m_minZ = copy.m_minZ;
00050                 m_maxX = copy.m_maxX;
00051                 m_maxY = copy.m_maxY;
00052                 m_maxZ = copy.m_maxZ;
00053         }

pge::AABB::~AABB void   ) 
 

Destructor.

Definition at line 61 of file AABB.cpp.

00061                         {
00062         }


Member Function Documentation

Vector3f pge::AABB::getBottomCenter void   ) 
 

Definition at line 172 of file AABB.cpp.

References m_maxX, m_maxZ, m_minX, m_minY, and m_minZ.

Referenced by pge::MeshModel::setBottomCenter().

00172                                            {
00173                 Vector3f center = Vector3f((m_maxX + m_minX) / 2.0f, m_minY, (m_maxZ + m_minZ) / 2.0f);
00174                 return center;
00175         }

Vector3f pge::AABB::getCenter void   ) 
 

Definition at line 161 of file AABB.cpp.

References m_maxX, m_maxY, m_maxZ, m_minX, m_minY, and m_minZ.

00161                                      {
00162                 Vector3f center = Vector3f((m_maxX + m_minX) / 2.0f, (m_maxY + m_minY) / 2.0f, (m_maxZ + m_minZ) / 2.0f);
00163                 return center;
00164         }

bool pge::AABB::isAABBCompletelyInside AABB boundingBox  ) 
 

Definition at line 70 of file AABB.cpp.

References isPointInside(), m_maxX, m_maxY, m_maxZ, m_minX, m_minY, and m_minZ.

Referenced by pge::QuadtreeNode::subdivide(), and pge::OctreeNode::subdivide().

00070                                                            {
00071                 if(!isPointInside(boundingBox->m_minX, boundingBox->m_minY, boundingBox->m_minZ)) {
00072                         return false;
00073                 }
00074                 if(!isPointInside(boundingBox->m_maxX, boundingBox->m_minY, boundingBox->m_minZ)) {
00075                         return false;
00076                 }
00077                 if(!isPointInside(boundingBox->m_minX, boundingBox->m_maxY, boundingBox->m_minZ)) {
00078                         return false;
00079                 }
00080                 if(!isPointInside(boundingBox->m_maxX, boundingBox->m_maxY, boundingBox->m_minZ)) {
00081                         return false;
00082                 }
00083                 if(!isPointInside(boundingBox->m_minX, boundingBox->m_minY, boundingBox->m_maxZ)) {
00084                         return false;
00085                 }
00086                 if(!isPointInside(boundingBox->m_maxX, boundingBox->m_minY, boundingBox->m_maxZ)) {
00087                         return false;
00088                 }
00089                 if(!isPointInside(boundingBox->m_minX, boundingBox->m_maxY, boundingBox->m_maxZ)) {
00090                         return false;
00091                 }
00092                 if(!isPointInside(boundingBox->m_maxX, boundingBox->m_maxY, boundingBox->m_maxZ)) {
00093                         return false;
00094                 }
00095                 return true;
00096         }

Here is the call graph for this function:

bool pge::AABB::isAABBInsideOrOverlapping AABB boundingBox  ) 
 

Definition at line 104 of file AABB.cpp.

References isPointInside(), m_maxX, m_maxY, m_maxZ, m_minX, m_minY, and m_minZ.

00104                                                               {
00105                 if(isPointInside(boundingBox->m_minX, boundingBox->m_minY, boundingBox->m_minZ)) {
00106                         return true;
00107                 }
00108                 if(isPointInside(boundingBox->m_maxX, boundingBox->m_minY, boundingBox->m_minZ)) {
00109                         return true;
00110                 }
00111                 if(isPointInside(boundingBox->m_minX, boundingBox->m_maxY, boundingBox->m_minZ)) {
00112                         return true;
00113                 }
00114                 if(isPointInside(boundingBox->m_maxX, boundingBox->m_maxY, boundingBox->m_minZ)) {
00115                         return true;
00116                 }
00117                 if(isPointInside(boundingBox->m_minX, boundingBox->m_minY, boundingBox->m_maxZ)) {
00118                         return true;
00119                 }
00120                 if(isPointInside(boundingBox->m_maxX, boundingBox->m_minY, boundingBox->m_maxZ)) {
00121                         return true;
00122                 }
00123                 if(isPointInside(boundingBox->m_minX, boundingBox->m_maxY, boundingBox->m_maxZ)) {
00124                         return true;
00125                 }
00126                 if(isPointInside(boundingBox->m_maxX, boundingBox->m_maxY, boundingBox->m_maxZ)) {
00127                         return true;
00128                 }
00129                 return false;
00130         }

Here is the call graph for this function:

bool pge::AABB::isPointInside float  x,
float  y,
float  z
 

Definition at line 148 of file AABB.cpp.

References m_maxZ, m_minX, m_minY, and m_minZ.

00148                                                           {
00149                 if (x >= m_minX && x <= m_maxX && y >= m_minY && y <= m_maxY && z >= m_minZ && z <= m_maxZ) {
00150                         return true;
00151                 }
00152                 return false;
00153         }

bool pge::AABB::isPointInside const Vector3f point  ) 
 

Definition at line 138 of file AABB.cpp.

References pge::Vector3f::m_v.

Referenced by isAABBCompletelyInside(), isAABBInsideOrOverlapping(), and pge::EffectTest::timer().

00138                                                       {
00139                 return isPointInside(point.m_v[0], point.m_v[1], point.m_v[2]);
00140         }

void pge::AABB::renderSolid Vector3f  color  ) 
 

Definition at line 183 of file AABB.cpp.

References m_maxX, m_maxY, m_maxZ, m_minX, m_minY, and m_minZ.

Referenced by pge::occlusionquery::occlusionQuery().

00183                                              {
00184                 renderer::color3f(color);
00185                 glDisable(GL_TEXTURE_2D);
00186 
00187                 glBegin(GL_QUADS);
00188                 // Front
00189                 renderer::vertex3f(m_minX, m_minY, m_minZ);
00190                 renderer::vertex3f(m_maxX, m_minY, m_minZ);
00191                 renderer::vertex3f(m_maxX, m_maxY, m_minZ);
00192                 renderer::vertex3f(m_minX, m_maxY, m_minZ);
00193 
00194                 // Back
00195                 renderer::vertex3f(m_minX, m_minY, m_maxZ);
00196                 renderer::vertex3f(m_maxX, m_minY, m_maxZ);
00197                 renderer::vertex3f(m_maxX, m_maxY, m_maxZ);
00198                 renderer::vertex3f(m_minX, m_maxY, m_maxZ);
00199 
00200                 // Top
00201                 renderer::vertex3f(m_minX, m_maxY, m_minZ);
00202                 renderer::vertex3f(m_maxX, m_maxY, m_minZ);
00203                 renderer::vertex3f(m_maxX, m_maxY, m_maxZ);
00204                 renderer::vertex3f(m_minX, m_maxY, m_maxZ);
00205 
00206                 // Bottom
00207                 renderer::vertex3f(m_minX, m_minY, m_minZ);
00208                 renderer::vertex3f(m_maxX, m_minY, m_minZ);
00209                 renderer::vertex3f(m_maxX, m_minY, m_maxZ);
00210                 renderer::vertex3f(m_minX, m_minY, m_maxZ);
00211 
00212                 // Left
00213                 renderer::vertex3f(m_minX, m_minY, m_maxZ);
00214                 renderer::vertex3f(m_minX, m_minY, m_minZ);
00215                 renderer::vertex3f(m_minX, m_maxY, m_minZ);
00216                 renderer::vertex3f(m_minX, m_maxY, m_maxZ);
00217 
00218                 // Right
00219                 renderer::vertex3f(m_maxX, m_minY, m_minZ);
00220                 renderer::vertex3f(m_maxX, m_minY, m_maxZ);
00221                 renderer::vertex3f(m_maxX, m_maxY, m_maxZ);
00222                 renderer::vertex3f(m_maxX, m_maxY, m_minZ);
00223                 glEnd();
00224         }

void pge::AABB::renderWireframe Vector3f  color  ) 
 

Definition at line 232 of file AABB.cpp.

References m_maxX, m_maxY, m_maxZ, m_minX, m_minY, and m_minZ.

Referenced by pge::QuadtreeNode::renderWireframe(), and pge::OctreeNode::renderWireframe().

00232                                                  {
00233                 renderer::color3f(color);
00234                 glDisable(GL_TEXTURE_2D);
00235 
00236                 glBegin(GL_LINES);
00237                 // Front
00238                 renderer::vertex3f(m_minX, m_minY, m_minZ);
00239                 renderer::vertex3f(m_maxX, m_minY, m_minZ);
00240                 renderer::vertex3f(m_maxX, m_maxY, m_minZ);
00241                 renderer::vertex3f(m_minX, m_maxY, m_minZ);
00242 
00243                 // Back
00244                 renderer::vertex3f(m_minX, m_minY, m_maxZ);
00245                 renderer::vertex3f(m_maxX, m_minY, m_maxZ);
00246                 renderer::vertex3f(m_maxX, m_maxY, m_maxZ);
00247                 renderer::vertex3f(m_minX, m_maxY, m_maxZ);
00248 
00249                 // Left
00250                 renderer::vertex3f(m_minX, m_minY, m_maxZ);
00251                 renderer::vertex3f(m_minX, m_maxY, m_maxZ);
00252                 renderer::vertex3f(m_minX, m_minY, m_minZ);
00253                 renderer::vertex3f(m_minX, m_maxY, m_minZ);
00254                 renderer::vertex3f(m_minX, m_minY, m_maxZ);
00255                 renderer::vertex3f(m_minX, m_minY, m_minZ);
00256                 renderer::vertex3f(m_minX, m_maxY, m_minZ);
00257                 renderer::vertex3f(m_minX, m_maxY, m_maxZ);
00258 
00259                 // Right
00260                 renderer::vertex3f(m_maxX, m_minY, m_maxZ);
00261                 renderer::vertex3f(m_maxX, m_maxY, m_maxZ);
00262                 renderer::vertex3f(m_maxX, m_minY, m_minZ);
00263                 renderer::vertex3f(m_maxX, m_maxY, m_minZ);
00264                 renderer::vertex3f(m_maxX, m_minY, m_maxZ);
00265                 renderer::vertex3f(m_maxX, m_minY, m_minZ);
00266                 renderer::vertex3f(m_maxX, m_maxY, m_minZ);
00267                 renderer::vertex3f(m_maxX, m_maxY, m_maxZ);
00268                 glEnd();
00269         }


Field Documentation

float pge::AABB::m_maxX
 

Definition at line 74 of file AABB.h.

Referenced by AABB(), pge::MeshModel::buildBoundingBox(), pge::Mesh::buildBoundingBox(), getBottomCenter(), getCenter(), pge::DynamicCity::init(), isAABBCompletelyInside(), pge::Frustum::isAABBInside(), isAABBInsideOrOverlapping(), pge::Mesh::isHeightQueryInside(), renderSolid(), renderWireframe(), pge::MeshModel::setBottomCenter(), pge::Sphere::Sphere(), pge::QuadtreeNode::subdivide(), and pge::OctreeNode::subdivide().

float pge::AABB::m_maxY
 

Definition at line 75 of file AABB.h.

Referenced by AABB(), pge::MeshModel::buildBoundingBox(), pge::Mesh::buildBoundingBox(), getCenter(), pge::Mesh::getHeightAt(), isAABBCompletelyInside(), pge::Frustum::isAABBInside(), isAABBInsideOrOverlapping(), renderSolid(), renderWireframe(), pge::MeshModel::setBottomCenter(), pge::Sphere::Sphere(), pge::QuadtreeNode::subdivide(), and pge::OctreeNode::subdivide().

float pge::AABB::m_maxZ
 

Definition at line 76 of file AABB.h.

Referenced by AABB(), pge::MeshModel::buildBoundingBox(), pge::Mesh::buildBoundingBox(), getBottomCenter(), getCenter(), pge::DynamicCity::init(), isAABBCompletelyInside(), pge::Frustum::isAABBInside(), isAABBInsideOrOverlapping(), pge::Mesh::isHeightQueryInside(), isPointInside(), renderSolid(), renderWireframe(), pge::MeshModel::setBottomCenter(), pge::Sphere::Sphere(), pge::QuadtreeNode::subdivide(), and pge::OctreeNode::subdivide().

float pge::AABB::m_minX
 

Definition at line 71 of file AABB.h.

Referenced by AABB(), pge::MeshModel::buildBoundingBox(), pge::Mesh::buildBoundingBox(), getBottomCenter(), getCenter(), pge::DynamicCity::init(), isAABBCompletelyInside(), pge::Frustum::isAABBInside(), isAABBInsideOrOverlapping(), pge::Mesh::isHeightQueryInside(), isPointInside(), renderSolid(), renderWireframe(), pge::MeshModel::setBottomCenter(), pge::Sphere::Sphere(), pge::QuadtreeNode::subdivide(), and pge::OctreeNode::subdivide().

float pge::AABB::m_minY
 

Definition at line 72 of file AABB.h.

Referenced by AABB(), pge::MeshModel::buildBoundingBox(), pge::Mesh::buildBoundingBox(), getBottomCenter(), getCenter(), pge::DynamicCity::init(), isAABBCompletelyInside(), pge::Frustum::isAABBInside(), isAABBInsideOrOverlapping(), isPointInside(), renderSolid(), renderWireframe(), pge::MeshModel::setBottomCenter(), pge::Sphere::Sphere(), pge::QuadtreeNode::subdivide(), and pge::OctreeNode::subdivide().

float pge::AABB::m_minZ
 

Definition at line 73 of file AABB.h.

Referenced by AABB(), pge::MeshModel::buildBoundingBox(), pge::Mesh::buildBoundingBox(), getBottomCenter(), getCenter(), pge::DynamicCity::init(), isAABBCompletelyInside(), pge::Frustum::isAABBInside(), isAABBInsideOrOverlapping(), pge::Mesh::isHeightQueryInside(), isPointInside(), renderSolid(), renderWireframe(), pge::MeshModel::setBottomCenter(), pge::Sphere::Sphere(), pge::QuadtreeNode::subdivide(), and pge::OctreeNode::subdivide().


The documentation for this class was generated from the following files:
Generated on Mon Oct 16 12:08:55 2006 for Phobosengine by doxygen 1.3.4