KrisLibrary  1.0.0
Cylinder3D.h
1 #ifndef MATH3D_CYLINDER3D_H
2 #define MATH3D_CYLINDER3D_H
3 
4 #include "Point.h"
5 
6 namespace Math3D {
7 
8 struct Circle3D;
9 struct AABB3D;
10 struct Line3D;
11 struct Segment3D;
12 
19 struct Cylinder3D
20 {
21  bool contains(const Point3D& pt) const;
22  Real distance(const Point3D& pt) const;
23  Real closestPoint(const Point3D& pt,Point3D& closest) const;
24  void setTransformed(const Cylinder3D& cyl,const RigidTransform& T);
25  void getBase(Circle3D& c) const;
26  void getCap(Circle3D& c) const;
27  void getAABB(AABB3D&) const;
28 
30  bool intersects(const Line3D& line,Real* tmin=NULL,Real* tmax=NULL) const;
31  bool intersects(const Segment3D& seg,Real* tmin=NULL,Real* tmax=NULL) const;
32 
33  Point3D center;
34  Vector3 axis;
35  Real radius;
36  Real height;
37 };
38 
39 std::ostream& operator << (std::ostream& out,const Cylinder3D& b);
40 std::istream& operator >> (std::istream& in, Cylinder3D& b);
41 
42 } //namespace Math3D
43 
44 #endif
A 3D vector class.
Definition: math3d/primitives.h:136
A 3D axis-aligned bounding box.
Definition: AABB3D.h:13
bool intersects(const Line3D &line, Real *tmin=NULL, Real *tmax=NULL) const
Returns the entry/exit points if they intersect.
Definition: Cylinder3D.cpp:104
A rigid-body transformation.
Definition: math3d/primitives.h:820
Real closestPoint(const Point3D &pt, Point3D &closest) const
returns distance to closest
Definition: Cylinder3D.cpp:25
Contains all the definitions in the Math3D package.
Definition: AnyGeometry.h:12
A 2D circle in 3D space class.
Definition: Circle3D.h:21
A 3D line class.
Definition: Line3D.h:18
A 3D cylinder.
Definition: Cylinder3D.h:19
Definition: Segment3D.h:12