68#ifndef LASS_GUARDIAN_OF_INCLUSION_PRIM_AABB_3D_H
69#define LASS_GUARDIAN_OF_INCLUSION_PRIM_AABB_3D_H
93 typedef MinMaxPolicy TMinMaxPolicy;
97 typedef typename TPoint::TVector TVector;
99 typedef typename TPoint::TValue TValue;
100 typedef typename TPoint::TParam TParam;
101 typedef typename TPoint::TReference TReference;
102 typedef typename TPoint::TConstReference TConstReference;
103 typedef typename TPoint::TNumTraits TNumTraits;
105 enum { dimension = TPoint::dimension };
107 template <
typename U>
struct Rebind
117 const TPoint&
min()
const;
118 const TPoint&
max()
const;
141 template <
class RandomGenerator>
const TPoint
random(RandomGenerator&
random)
const;
155template <
typename T,
class MMPa,
class MMPb>
158template <
typename T,
class MMP>
161template <
typename T,
class MMP>
167template <
typename T,
class MMP>
170template <
typename T,
class MMPa,
class MMPb>
173template <
typename T,
class MMPa,
class MMPb,
class MMPr>
176template <
typename T,
class MMPa,
class MMPb>
179template <
typename T,
class MMP>
182template <
typename T,
class MMP>
185template <
typename T,
class MMPa,
class MMPb>
188template <
typename T,
class MMP>
191template <
typename T,
class MMP>
194template <
typename T,
class MMP>
195std::ostream& operator<<(std::ostream& stream,
const Aabb3D<T, MMP>& aabb);
197template <
typename T,
class MMP>
206#define LASS_PRIM_HAVE_PY_EXPORT_TRAITS_AABB_3D
207#ifdef LASS_GUARDIAN_OF_INCLUSION_UTIL_PYOBJECT_PLUS_H
211#ifdef LASS_GUARDIAN_OF_INCLUSION_PRIM_DISK_3D_H
215#ifdef LASS_GUARDIAN_OF_INCLUSION_PRIM_PARALLELOGRAM_3D_H
219#ifdef LASS_GUARDIAN_OF_INCLUSION_PRIM_PLANE_3D_H
223#ifdef LASS_GUARDIAN_OF_INCLUSION_PRIM_RAY_3D_H
227#ifdef LASS_GUARDIAN_OF_INCLUSION_PRIM_SIMPLE_POLYGON_3D_H
231#ifdef LASS_GUARDIAN_OF_INCLUSION_PRIM_SPHERE_3D_H
235#ifdef LASS_GUARDIAN_OF_INCLUSION_PRIM_TRIANGLE_3D_H
239#ifdef LASS_GUARDIAN_OF_INCLUSION_PRIM_TRANSFORMATION_3D_H
Output stream for writing a selection of geometric primitives to XML files.
your momma's axis aligned bounding box.
const TVector size() const
Return size of bounding box per axis, max - min.
TSelf & operator+=(const TPoint &point)
Expand bounding box so it contains point.
void grow(TVector iDistance)
Expand bounding box by axis-dependent distance.
const TValue volume() const
Returns volume of bounding box.
void clear()
set AABB to an empty box
const TPointH center() const
Return the center point of the bounding box.
bool intersects(const Aabb3D< T, MMP2 > &other) const
Check if two axis-aligned bounding boxes do intersect.
const TPoint random(RandomGenerator &random) const
Return a random point so that bounding box contains it.
const TPoint & min() const
void scale(TParam iScale)
Scale bounding box by scale iScale.
const TPoint & max() const
Side classify(const TPoint &point) const
Classify if a point is in or outside the bounding box, or on its surface.
Aabb3D(const Aabb3D< T, MMP2 > &other)
copy constructor.
Aabb3D(const TPoint &point)
Construct bounding box around a single point (min == max)
TSelf & operator=(const Aabb3D< T, MMP2 > &other)
assign one bounding box to another.
const TValue area() const
Returns surface area of bounding box.
Aabb3D(const TPoint &min, const TPoint &max)
Construct bounding box, spanned by min and max.
bool collides(const Aabb3D< T, MMP2 > &other) const
Check if two axis-aligned bounding boxes do dollide.
void grow(TParam iDistance)
Expand bounding box by distance iDistance.
bool contains(const Aabb3D< T, MMP2 > &other) const
Returns true if the AABB other is inside (or on its surface) this AABB.
void setMin(const TPoint &min)
set corner with smallest component values
TSelf & operator+=(const Aabb3D< T, MMP2 > &other)
Expand boundix box so it contains the other bounding box.
bool isEmpty() const
Return true if bounding box contains no points.
void setMax(const TPoint &max)
set corner with larges component values
bool isValid() const
internal check to see if AABB is valid.
bool contains(const TPoint &point) const
Returns true if point is inside bounding box or on its surface.
Aabb3D()
Construct an empty bounding box.
void swap(Aabb3D< T, MMP2 > &other)
swap two bounding boxes.
#define LASS_SIMD_ALIGN
if LASS_SIMD_ALIGNMENT is set, use LASS_SIMD_ALIGN to align some structures on SIMD alignment boundar...
set of geometrical primitives
Side
Different sides of a surface.
Result
meta information on the result you have from an operation like an intersection ...
Library for Assembled Shared Sources.
MinMaxPolicy enforcing strict rules for the minima and maxima.