00001
00015 #ifndef _DLR_GEOMETRY_RAY3D_H_
00016 #define _DLR_GEOMETRY_RAY3D_H_
00017
00018 #include <iostream>
00019 #include <dlrNumeric/vector3D.h>
00020
00021 namespace dlr {
00022
00023 namespace geometry {
00024
00028 class Ray3D {
00029 public:
00030
00035 Ray3D()
00036 : m_origin(0.0, 0.0, 0.0), m_direction(1.0, 0.0, 0.0) {}
00037
00038
00050 Ray3D(const Vector3D& point,
00051 const Vector3D& direction,
00052 bool normalize = true);
00053
00054
00061 Ray3D(const Ray3D& source);
00062
00063
00067 ~Ray3D() {}
00068
00069
00078 Ray3D&
00079 operator=(const Ray3D& source);
00080
00081
00088 const Vector3D&
00089 getDirectionVector() const {return m_direction;}
00090
00091
00098 const Vector3D&
00099 getOrigin() const {return m_origin;}
00100
00101
00102 private:
00103
00104
00105
00106 Vector3D m_origin;
00107 Vector3D m_direction;
00108
00109 };
00110
00111
00112
00113
00114
00115 std::ostream&
00116 operator<<(std::ostream& stream, const Ray3D& plane);
00117
00118
00119 }
00120
00121 }
00122
00123
00124
00125
00126 namespace dlr {
00127
00128 namespace geometry {
00129
00130
00131 }
00132
00133 }
00134
00135
00136 #endif