68 lines
1.8 KiB
C
68 lines
1.8 KiB
C
|
|
||
|
// BoundingBox.h
|
||
|
|
||
|
// Declares the cBoundingBox class representing an axis-aligned bounding box with floatingpoint coords
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include "Vector3d.h"
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
// tolua_begin
|
||
|
|
||
|
class cBoundingBox
|
||
|
{
|
||
|
public:
|
||
|
cBoundingBox(double a_MinX, double a_MaxX, double a_MinY, double a_MaxY, double a_MinZ, double a_MaxZ);
|
||
|
cBoundingBox(const Vector3d & a_Min, const Vector3d & a_Max);
|
||
|
cBoundingBox(const Vector3d & a_Pos, double a_Radius, double a_Height);
|
||
|
cBoundingBox(const cBoundingBox & a_Orig);
|
||
|
|
||
|
/// Moves the entire boundingbox by the specified offset
|
||
|
void Move(double a_OffX, double a_OffY, double a_OffZ);
|
||
|
|
||
|
/// Moves the entire boundingbox by the specified offset
|
||
|
void Move(const Vector3d & a_Off);
|
||
|
|
||
|
/// Expands the bounding box by the specified amount in each direction (so the box becomes larger by 2 * Expand in each direction)
|
||
|
void Expand(double a_ExpandX, double a_ExpandY, double a_ExpandZ);
|
||
|
|
||
|
/// Returns true if the two bounding boxes intersect
|
||
|
bool DoesIntersect(const cBoundingBox & a_Other);
|
||
|
|
||
|
/// Returns the union of the two bounding boxes
|
||
|
cBoundingBox Union(const cBoundingBox & a_Other);
|
||
|
|
||
|
/// Returns true if the point is inside the bounding box
|
||
|
bool IsInside(const Vector3d & a_Point);
|
||
|
|
||
|
/// Returns true if the point is inside the bounding box
|
||
|
bool IsInside(double a_X, double a_Y,double a_Z);
|
||
|
|
||
|
/// Returns true if a_Other is inside this bounding box
|
||
|
bool IsInside(cBoundingBox & a_Other);
|
||
|
|
||
|
/// Returns true if a boundingbox specified by a_Min and a_Max is inside this bounding box
|
||
|
bool IsInside(const Vector3d & a_Min, const Vector3d & a_Max);
|
||
|
|
||
|
// tolua_end
|
||
|
|
||
|
/// Calculates the intersection of the two bounding boxes; returns true if nonempty
|
||
|
bool Intersect(const cBoundingBox & a_Other, cBoundingBox & a_Intersection);
|
||
|
|
||
|
protected:
|
||
|
Vector3d m_Min;
|
||
|
Vector3d m_Max;
|
||
|
|
||
|
} ; // tolua_export
|
||
|
|
||
|
|
||
|
|
||
|
|