KrisLibrary  1.0.0
AABB3D.h
1 #ifndef MATH3D_AABB3D_H
2 #define MATH3D_AABB3D_H
3 
5 #include "Point.h"
6 class File;
7 
8 namespace Math3D {
9 
13 struct AABB3D
14 {
15  AABB3D();
16  AABB3D(const Vector3& bmin,const Vector3& bmax);
17  AABB3D(const AABB3D&);
18  bool Read(File& f);
19  bool Write(File& f) const;
20  void Print(std::ostream& out) const;
21 
22  void justify();
23  void setTransform(const AABB3D&,const Matrix4& mat);
24  void inplaceTransform(const Matrix4& mat);
25  void minimize();
26  void maximize();
27  void expand(const Point3D&);
28  void setPoint(const Point3D&);
29  void setIntersection(const AABB3D&);
30  void setUnion(const AABB3D&);
31  void getSize(Vector3&) const;
32  Vector3 size() const;
33  void getMidpoint(Point3D&) const;
34  Vector3 midpoint() const;
35  bool contains(const Point3D&) const;
36  bool contains(const AABB3D&) const;
37  bool intersects(const AABB3D&) const;
38  Real distance(const Point3D&) const;
39  Real distance(const Point3D& pt,Point3D& closest) const;
40  Real distanceSquared(const Point3D& pt,Point3D& closest) const;
41  Real distance(const AABB3D& bb) const;
42  Real distance(const AABB3D& bb,Point3D& myclosest,Point3D& bbclosest) const;
43 
44  Vector3 bmin, bmax;
45 };
46 
47 std::ostream& operator << (std::ostream& out,const AABB3D& bb);
48 std::istream& operator >> (std::istream& in,AABB3D& bb);
49 
50 } //namespace Math3D
51 
52 #endif
53 
Common math typedefs, constants, functions.
A 3D vector class.
Definition: math3d/primitives.h:136
A 3D axis-aligned bounding box.
Definition: AABB3D.h:13
A 4x4 matrix class.
Definition: math3d/primitives.h:626
Contains all the definitions in the Math3D package.
Definition: AnyGeometry.h:12
void justify()
swaps negative sized entries (where min>max)
Definition: AABB3D.cpp:181
A cross-platform class for reading/writing binary data.
Definition: File.h:47