KrisLibrary  1.0.0
Box3D.h
1 #ifndef MATH3D_BOX3D_H
2 #define MATH3D_BOX3D_H
3 
4 #include "AABB3D.h"
5 #include "LocalCoordinates3D.h"
6 
7 namespace Math3D {
8 
9 struct Segment3D;
10 struct Plane3D;
11 struct Triangle3D;
12 struct Sphere3D;
13 
22 {
23  Vector3 center() const;
24  void setCenter(const Vector3& c);
25  void set(const AABB3D& bb);
26  void setTransformed(const AABB3D& box,const RigidTransform& T);
27  void setTransformed(const Box3D& box,const RigidTransform& T);
28  bool contains(const Point3D& pt) const;
29  Real distance(const Point3D& pt) const;
30  Real distance(const Point3D& pt,Point3D& closestPt) const;
31  Real distanceSquared(const Point3D& pt,Point3D& closestPt) const;
32  Real signedDistance(const Point3D& pt) const;
33  Real signedDistance(const Point3D& pt,Point3D& surfacePt) const;
34  void getAABB(AABB3D& bb) const;
35  bool intersects(const AABB3D& b) const;
36  bool intersects(const Box3D& b) const;
37  bool intersectsApprox(const Box3D& b) const;
38  bool intersects(const Segment3D& s) const;
39  bool intersects(const Line3D& l) const;
40  bool intersects(const Triangle3D& t) const;
41  bool intersects(const Sphere3D& b) const;
42 };
43 
44 std::ostream& operator << (std::ostream& out,const Box3D& b);
45 std::istream& operator >> (std::istream& in, Box3D& b);
46 
47 } //namespace Math3D
48 
49 #endif
A 3D vector class.
Definition: math3d/primitives.h:136
Definition: LocalCoordinates3D.h:41
A 3D axis-aligned bounding box.
Definition: AABB3D.h:13
bool intersectsApprox(const Box3D &b) const
faster, approximate version
Definition: Box3D.cpp:145
A rigid-body transformation.
Definition: math3d/primitives.h:820
A 3D sphere class.
Definition: Sphere3D.h:21
Contains all the definitions in the Math3D package.
Definition: AnyGeometry.h:13
A 3D triangle class.
Definition: Triangle3D.h:26
A 3D line class.
Definition: Line3D.h:18
A 3D boxThe box is the unit cube [0,1]^3 set in the scaled local coordinate system. That is, one corner is at the origin, and it has dimensions [dims.x,dims.y,dims.z] in the coordinates given by {xbasis,ybasis,zbasis}.
Definition: Box3D.h:21
Definition: Segment3D.h:12