voxelTerrain
 All Classes Functions Variables Typedefs Enumerations Pages
ray.hpp
1 #ifndef LINE_HPP
2 #define LINE_HPP
3 
4 #include "blub/math/vector3.hpp"
5 
6 
7 namespace Ogre
8 {
9  class Ray;
10 }
11 
12 
13 namespace blub
14 {
15 
16 class ray
17 {
18 public:
19 #ifndef BLUB_NO_OGRE3D
20  ray(const Ogre::Ray &vec);
21  operator Ogre::Ray() const;
22 #endif
23 
24  ray():mOrigin(vector3::ZERO), mDirection(vector3::UNIT_Z) {}
25  ray(const vector3& origin, const vector3& direction)
26  :mOrigin(origin), mDirection(direction) {}
27 
29  void setOrigin(const vector3& origin) {mOrigin = origin;}
31  const vector3& getOrigin(void) const {return mOrigin;}
32 
34  void setDirection(const vector3& dir) {mDirection = dir;}
36  const vector3& getDirection(void) const {return mDirection;}
37 
39  vector3 getPoint(real t) const {
40  return vector3(mOrigin + (mDirection * t));
41  }
42 
44  vector3 operator*(real t) const {
45  return getPoint(t);
46  }
47 
48  bool intersects (const plane &pl, vector3 *point = nullptr, real *tOut = nullptr) const;
49 
50 protected:
51  vector3 mOrigin;
52  vector3 mDirection;
53 
54 };
55 
56 }
57 
58 #endif // LINE_HPP
vector3 operator*(real t) const
Definition: ray.hpp:44
void setDirection(const vector3 &dir)
Definition: ray.hpp:34
vector3 getPoint(real t) const
Definition: ray.hpp:39
const vector3 & getDirection(void) const
Definition: ray.hpp:36
Definition: ray.hpp:16
Definition: vector3.hpp:26
Definition: plane.hpp:16
void setOrigin(const vector3 &origin)
Definition: ray.hpp:29
Definition: deadlineTimer.hpp:10
Definition: axisAlignedBox.hpp:10
const vector3 & getOrigin(void) const
Definition: ray.hpp:31