Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
Divide::BoundingBox Class Reference

#include <BoundingBox.h>

Public Member Functions

 BoundingBox () noexcept
 
 BoundingBox (const OBB &obb) noexcept
 
 BoundingBox (const BoundingSphere &bSphere) noexcept
 
 BoundingBox (vec3< F32 > min, vec3< F32 > max) noexcept
 
 BoundingBox (const vector< vec3< F32 > > &points) noexcept
 
 BoundingBox (const std::array< vec3< F32 >, 8 > &points) noexcept
 
 BoundingBox (F32 minX, F32 minY, F32 minZ, F32 maxX, F32 maxY, F32 maxZ) noexcept
 
 BoundingBox (const BoundingBox &b) noexcept
 
BoundingBoxoperator= (const BoundingBox &b) noexcept
 
bool containsPoint (const vec3< F32 > &point) const noexcept
 
bool containsBox (const BoundingBox &AABB2) const noexcept
 
bool containsSphere (const BoundingSphere &bSphere) const noexcept
 
bool collision (const BoundingBox &AABB2) const noexcept
 
bool collision (const BoundingSphere &bSphere) const noexcept
 
bool compare (const BoundingBox &bb) const noexcept
 
bool operator== (const BoundingBox &B) const noexcept
 
bool operator!= (const BoundingBox &B) const noexcept
 
RayResult intersect (const Ray &r, F32 t0, F32 t1) const noexcept
 Optimized method.
 
void createFromPoints (const vector< vec3< F32 > > &points) noexcept
 
void createFromPoints (const std::array< vec3< F32 >, 8 > &points) noexcept
 
void createFromSphere (const BoundingSphere &bSphere) noexcept
 
void createFromSphere (const vec3< F32 > &center, F32 radius) noexcept
 
void createFromCenterAndSize (const vec3< F32 > &center, const vec3< F32 > &size) noexcept
 
void createFromOBB (const OBB &obb) noexcept
 
void add (const vec3< F32 > &v) noexcept
 
void add (const BoundingBox &bb) noexcept
 
void translate (const vec3< F32 > &v) noexcept
 
void multiply (F32 factor) noexcept
 
void multiply (const vec3< F32 > &v) noexcept
 
void multiplyMax (const vec3< F32 > &v) noexcept
 
void multiplyMin (const vec3< F32 > &v) noexcept
 
void transform (vec3< F32 > initialMin, vec3< F32 > initialMax, const mat4< F32 > &mat) noexcept
 
void transform (const BoundingBox &initialBoundingBox, const mat4< F32 > &mat) noexcept
 
void transform (const mat4< F32 > &mat) noexcept
 
const vec3< F32 > & getMin () const noexcept
 
const vec3< F32 > & getMax () const noexcept
 
vec3< F32getCenter () const noexcept
 
vec3< F32getExtent () const noexcept
 
vec3< F32getHalfExtent () const noexcept
 
F32 getWidth () const noexcept
 
F32 getHeight () const noexcept
 
F32 getDepth () const noexcept
 
void set (const BoundingBox &bb) noexcept
 
void set (const vec3< F32 > &min, const vec3< F32 > &max) noexcept
 
void setMin (const vec3< F32 > &min) noexcept
 
void setMax (const vec3< F32 > &max) noexcept
 
void set (F32 min, F32 max) noexcept
 
void set (F32 minX, F32 minY, F32 minZ, F32 maxX, F32 maxY, F32 maxZ) noexcept
 
void setMin (F32 min) noexcept
 
void setMin (F32 minX, F32 minY, F32 minZ) noexcept
 
void setMax (F32 max) noexcept
 
void setMax (F32 maxX, F32 maxY, F32 maxZ) noexcept
 
void reset () noexcept
 
vec3< F32cornerPoint (U8 cornerIndex) const noexcept
 
std::array< vec3< F32 >, 8 > getPoints () const noexcept
 
vec3< F32nearestPoint (const vec3< F32 > &pos) const noexcept
 
vec3< F32getPVertex (const vec3< F32 > &normal) const noexcept
 
vec3< F32getNVertex (const vec3< F32 > &normal) const noexcept
 

Private Attributes

vec3< F32_min
 
vec3< F32_max
 

Friends

class Attorney::BoundingBoxEditor
 

Detailed Description

Definition at line 47 of file BoundingBox.h.

Constructor & Destructor Documentation

◆ BoundingBox() [1/8]

Divide::BoundingBox::BoundingBox ( )
noexcept

Definition at line 9 of file BoundingBox.cpp.

◆ BoundingBox() [2/8]

Divide::BoundingBox::BoundingBox ( const OBB obb)
explicitnoexcept

Definition at line 38 of file BoundingBox.cpp.

◆ BoundingBox() [3/8]

Divide::BoundingBox::BoundingBox ( const BoundingSphere bSphere)
explicitnoexcept

Definition at line 44 of file BoundingBox.cpp.

◆ BoundingBox() [4/8]

Divide::BoundingBox::BoundingBox ( vec3< F32 min,
vec3< F32 max 
)
explicitnoexcept

Definition at line 15 of file BoundingBox.cpp.

◆ BoundingBox() [5/8]

Divide::BoundingBox::BoundingBox ( const vector< vec3< F32 > > &  points)
explicitnoexcept

Definition at line 27 of file BoundingBox.cpp.

◆ BoundingBox() [6/8]

Divide::BoundingBox::BoundingBox ( const std::array< vec3< F32 >, 8 > &  points)
explicitnoexcept

Definition at line 33 of file BoundingBox.cpp.

◆ BoundingBox() [7/8]

Divide::BoundingBox::BoundingBox ( F32  minX,
F32  minY,
F32  minZ,
F32  maxX,
F32  maxY,
F32  maxZ 
)
explicitnoexcept

Definition at line 21 of file BoundingBox.cpp.

◆ BoundingBox() [8/8]

Divide::BoundingBox::BoundingBox ( const BoundingBox b)
noexcept

Definition at line 50 of file BoundingBox.cpp.

Member Function Documentation

◆ add() [1/2]

void Divide::BoundingBox::add ( const BoundingBox bb)
inlinenoexcept

Definition at line 96 of file BoundingBox.inl.

◆ add() [2/2]

void Divide::BoundingBox::add ( const vec3< F32 > &  v)
inlinenoexcept

Definition at line 72 of file BoundingBox.inl.

◆ collision() [1/2]

bool Divide::BoundingBox::collision ( const BoundingBox AABB2) const
noexcept

Definition at line 96 of file BoundingBox.cpp.

◆ collision() [2/2]

bool Divide::BoundingBox::collision ( const BoundingSphere bSphere) const
noexcept

Definition at line 107 of file BoundingBox.cpp.

◆ compare()

bool Divide::BoundingBox::compare ( const BoundingBox bb) const
inlinenoexcept

Definition at line 42 of file BoundingBox.inl.

◆ containsBox()

bool Divide::BoundingBox::containsBox ( const BoundingBox AABB2) const
noexcept

Definition at line 80 of file BoundingBox.cpp.

◆ containsPoint()

bool Divide::BoundingBox::containsPoint ( const vec3< F32 > &  point) const
inlinenoexcept

Definition at line 37 of file BoundingBox.inl.

◆ containsSphere()

bool Divide::BoundingBox::containsSphere ( const BoundingSphere bSphere) const
noexcept

Definition at line 84 of file BoundingBox.cpp.

◆ cornerPoint()

vec3< F32 > Divide::BoundingBox::cornerPoint ( U8  cornerIndex) const
inlinenoexcept

Definition at line 227 of file BoundingBox.inl.

◆ createFromCenterAndSize()

void Divide::BoundingBox::createFromCenterAndSize ( const vec3< F32 > &  center,
const vec3< F32 > &  size 
)
noexcept

Definition at line 65 of file BoundingBox.cpp.

◆ createFromOBB()

void Divide::BoundingBox::createFromOBB ( const OBB obb)
noexcept

Definition at line 71 of file BoundingBox.cpp.

◆ createFromPoints() [1/2]

void Divide::BoundingBox::createFromPoints ( const std::array< vec3< F32 >, 8 > &  points)
inlinenoexcept

Definition at line 61 of file BoundingBox.inl.

◆ createFromPoints() [2/2]

void Divide::BoundingBox::createFromPoints ( const vector< vec3< F32 > > &  points)
inlinenoexcept

Definition at line 55 of file BoundingBox.inl.

◆ createFromSphere() [1/2]

void Divide::BoundingBox::createFromSphere ( const BoundingSphere bSphere)
noexcept

Definition at line 61 of file BoundingBox.cpp.

◆ createFromSphere() [2/2]

void Divide::BoundingBox::createFromSphere ( const vec3< F32 > &  center,
F32  radius 
)
inlinenoexcept

Definition at line 67 of file BoundingBox.inl.

◆ getCenter()

vec3< F32 > Divide::BoundingBox::getCenter ( ) const
inlinenoexcept

Definition at line 145 of file BoundingBox.inl.

◆ getDepth()

F32 Divide::BoundingBox::getDepth ( ) const
inlinenoexcept

Definition at line 175 of file BoundingBox.inl.

◆ getExtent()

vec3< F32 > Divide::BoundingBox::getExtent ( ) const
inlinenoexcept

Definition at line 154 of file BoundingBox.inl.

◆ getHalfExtent()

vec3< F32 > Divide::BoundingBox::getHalfExtent ( ) const
inlinenoexcept

Definition at line 158 of file BoundingBox.inl.

◆ getHeight()

F32 Divide::BoundingBox::getHeight ( ) const
inlinenoexcept

Definition at line 171 of file BoundingBox.inl.

◆ getMax()

const vec3< F32 > & Divide::BoundingBox::getMax ( ) const
inlinenoexcept

Definition at line 141 of file BoundingBox.inl.

◆ getMin()

const vec3< F32 > & Divide::BoundingBox::getMin ( ) const
inlinenoexcept

Definition at line 137 of file BoundingBox.inl.

◆ getNVertex()

vec3< F32 > Divide::BoundingBox::getNVertex ( const vec3< F32 > &  normal) const
inlinenoexcept

Definition at line 265 of file BoundingBox.inl.

◆ getPoints()

std::array< vec3< F32 >, 8 > Divide::BoundingBox::getPoints ( ) const
inlinenoexcept

Definition at line 241 of file BoundingBox.inl.

◆ getPVertex()

vec3< F32 > Divide::BoundingBox::getPVertex ( const vec3< F32 > &  normal) const
inlinenoexcept

Definition at line 259 of file BoundingBox.inl.

◆ getWidth()

F32 Divide::BoundingBox::getWidth ( ) const
inlinenoexcept

Definition at line 167 of file BoundingBox.inl.

◆ intersect()

RayResult Divide::BoundingBox::intersect ( const Ray r,
F32  t0,
F32  t1 
) const
noexcept

Optimized method.

Optimized method: http://www.cs.utah.edu/~awilliam/box/box.pdf.

Definition at line 125 of file BoundingBox.cpp.

◆ multiply() [1/2]

void Divide::BoundingBox::multiply ( const vec3< F32 > &  v)
inlinenoexcept

Definition at line 116 of file BoundingBox.inl.

◆ multiply() [2/2]

void Divide::BoundingBox::multiply ( F32  factor)
inlinenoexcept

Definition at line 111 of file BoundingBox.inl.

◆ multiplyMax()

void Divide::BoundingBox::multiplyMax ( const vec3< F32 > &  v)
inlinenoexcept

Definition at line 125 of file BoundingBox.inl.

◆ multiplyMin()

void Divide::BoundingBox::multiplyMin ( const vec3< F32 > &  v)
inlinenoexcept

Definition at line 131 of file BoundingBox.inl.

◆ nearestPoint()

vec3< F32 > Divide::BoundingBox::nearestPoint ( const vec3< F32 > &  pos) const
inlinenoexcept

Definition at line 255 of file BoundingBox.inl.

◆ operator!=()

bool Divide::BoundingBox::operator!= ( const BoundingBox B) const
inlinenoexcept

Definition at line 51 of file BoundingBox.inl.

◆ operator=()

BoundingBox & Divide::BoundingBox::operator= ( const BoundingBox b)
noexcept

Definition at line 55 of file BoundingBox.cpp.

◆ operator==()

bool Divide::BoundingBox::operator== ( const BoundingBox B) const
inlinenoexcept

Definition at line 47 of file BoundingBox.inl.

◆ reset()

void Divide::BoundingBox::reset ( )
inlinenoexcept

Definition at line 222 of file BoundingBox.inl.

◆ set() [1/4]

void Divide::BoundingBox::set ( const BoundingBox bb)
inlinenoexcept

Definition at line 187 of file BoundingBox.inl.

◆ set() [2/4]

void Divide::BoundingBox::set ( const vec3< F32 > &  min,
const vec3< F32 > &  max 
)
inlinenoexcept

Definition at line 217 of file BoundingBox.inl.

◆ set() [3/4]

void Divide::BoundingBox::set ( F32  min,
F32  max 
)
inlinenoexcept

Definition at line 191 of file BoundingBox.inl.

◆ set() [4/4]

void Divide::BoundingBox::set ( F32  minX,
F32  minY,
F32  minZ,
F32  maxX,
F32  maxY,
F32  maxZ 
)
inlinenoexcept

Definition at line 196 of file BoundingBox.inl.

◆ setMax() [1/3]

void Divide::BoundingBox::setMax ( const vec3< F32 > &  max)
inlinenoexcept

Definition at line 183 of file BoundingBox.inl.

◆ setMax() [2/3]

void Divide::BoundingBox::setMax ( F32  max)
inlinenoexcept

Definition at line 209 of file BoundingBox.inl.

◆ setMax() [3/3]

void Divide::BoundingBox::setMax ( F32  maxX,
F32  maxY,
F32  maxZ 
)
inlinenoexcept

Definition at line 213 of file BoundingBox.inl.

◆ setMin() [1/3]

void Divide::BoundingBox::setMin ( const vec3< F32 > &  min)
inlinenoexcept

Definition at line 179 of file BoundingBox.inl.

◆ setMin() [2/3]

void Divide::BoundingBox::setMin ( F32  min)
inlinenoexcept

Definition at line 201 of file BoundingBox.inl.

◆ setMin() [3/3]

void Divide::BoundingBox::setMin ( F32  minX,
F32  minY,
F32  minZ 
)
inlinenoexcept

Definition at line 205 of file BoundingBox.inl.

◆ transform() [1/3]

void Divide::BoundingBox::transform ( const BoundingBox initialBoundingBox,
const mat4< F32 > &  mat 
)
noexcept

Definition at line 182 of file BoundingBox.cpp.

◆ transform() [2/3]

void Divide::BoundingBox::transform ( const mat4< F32 > &  mat)
noexcept

Definition at line 178 of file BoundingBox.cpp.

◆ transform() [3/3]

void Divide::BoundingBox::transform ( vec3< F32 initialMin,
vec3< F32 initialMax,
const mat4< F32 > &  mat 
)
noexcept

Definition at line 186 of file BoundingBox.cpp.

◆ translate()

void Divide::BoundingBox::translate ( const vec3< F32 > &  v)
inlinenoexcept

Definition at line 106 of file BoundingBox.inl.

Friends And Related Function Documentation

◆ Attorney::BoundingBoxEditor

friend class Attorney::BoundingBoxEditor
friend

Definition at line 48 of file BoundingBox.h.

Member Data Documentation

◆ _max

vec3<F32> Divide::BoundingBox::_max
private

Definition at line 132 of file BoundingBox.h.

◆ _min

vec3<F32> Divide::BoundingBox::_min
private

Definition at line 132 of file BoundingBox.h.


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