KrisLibrary  1.0.0
Plane3D.h
1 #ifndef MATH3D_PLANE3D_H
2 #define MATH3D_PLANE3D_H
3 
4 #include "Point.h"
5 
6 namespace Math3D {
7 
8 struct Line3D;
9 struct Ray3D;
10 struct Segment3D;
11 struct AABB3D;
12 
19 struct Plane3D
20 {
21  void setPointNormal(const Point3D& a, const Vector3& n);
22  void setPointBases(const Point3D& a, const Vector3& b1, const Vector3& b2);
23  void setPoints(const Point3D& a, const Point3D& b, const Point3D& c);
24  void setTransformed(const Plane3D& pin, const RigidTransform& xform);
25  void setTransformed(const Plane3D& pin, const Matrix4& xform);
26 
27  Real distance(const Point3D& v) const;
28  void project(const Point3D& in, Point3D& out) const;
29  void getBasis(Vector3& xb, Vector3& yb) const;
30 
31  bool intersectsSegment(const Segment3D&, Real* t);
32  bool intersectsLine(const Line3D&, Real* t);
33  bool intersectsRay(const Ray3D&, Real* t);
34  bool intersects(const AABB3D&) const;
35  bool intersectsInterior(const AABB3D&) const;
36  void distanceLimits(const AABB3D&,Real& dmin,Real& dmax) const;
37 
42  int allIntersections(const Plane3D& p,Line3D& l) const;
43 
44  bool Read(File& f);
45  bool Write(File& f) const;
46  void Print(std::ostream& out) const;
47 
48  Vector3 normal;
49  Real offset;
50 };
51 
52 std::ostream& operator << (std::ostream& out,const Plane3D& p);
53 std::istream& operator >> (std::istream& out,Plane3D& p);
54 
55 } //namespace Math
56 
57 #endif
A 3D plane classRepresents plane with a normal and offset such that x on the plane satisfy dot(normal...
Definition: Plane3D.h:19
A 3D vector class.
Definition: math3d/primitives.h:136
void getBasis(Vector3 &xb, Vector3 &yb) const
returns a basis of the plane
Definition: Plane3D.cpp:111
A 3D axis-aligned bounding box.
Definition: AABB3D.h:13
void project(const Point3D &in, Point3D &out) const
projects onto the plane
Definition: Plane3D.cpp:106
A rigid-body transformation.
Definition: math3d/primitives.h:820
A 4x4 matrix class.
Definition: math3d/primitives.h:626
Contains all the definitions in the Math3D package.
Definition: AnyGeometry.h:12
void distanceLimits(const AABB3D &, Real &dmin, Real &dmax) const
calculates min/max bbox distances
Definition: Plane3D.cpp:184
A 3D line class.
Definition: Line3D.h:18
int allIntersections(const Plane3D &p, Line3D &l) const
Definition: Plane3D.cpp:238
A cross-platform class for reading/writing binary data.
Definition: File.h:47
Definition: Segment3D.h:12
Definition: Ray3D.h:8