ray2D.cpp
Go to the documentation of this file.00001
00015 #include <dlrGeometry/ray2D.h>
00016 #include <dlrNumeric/utilities.h>
00017
00018 namespace dnum = dlr::numeric;
00019
00020 namespace dlr {
00021
00022 namespace geometry {
00023
00024
00025
00026 Ray2D::
00027 Ray2D(const Vector2D& point,
00028 const Vector2D& direction,
00029 bool normalize)
00030 : m_origin(point),
00031 m_direction(direction)
00032 {
00033 if(normalize) {
00034 m_direction /= dnum::magnitude(m_direction);
00035 }
00036 }
00037
00038
00039
00040
00041 Ray2D::
00042 Ray2D(double aa, double bb, double cc)
00043 : m_origin(-(aa * cc), -(bb * cc)),
00044 m_direction(-bb, aa)
00045 {
00046 double kk = aa * aa + bb * bb;
00047 m_origin /= kk;
00048 m_direction /= dnum::magnitude(m_direction);
00049 }
00050
00051
00052
00053 Ray2D::
00054 Ray2D(const Ray2D& source)
00055 : m_origin(source.m_origin),
00056 m_direction(source.m_direction)
00057 {
00058
00059 }
00060
00061
00062
00063 Ray2D&
00064 Ray2D::
00065 operator=(const Ray2D& source)
00066 {
00067 if(&source != this) {
00068 m_origin = source.m_origin;
00069 m_direction = source.m_direction;
00070 }
00071 return *this;
00072 }
00073
00074
00075
00076
00077 std::ostream&
00078 operator<<(std::ostream& stream, const Ray2D& ray)
00079 {
00080 stream << "Ray2D { "
00081 << ray.getOrigin() << ", "
00082 << ray.getDirectionVector() << " }";
00083 return stream;
00084 }
00085
00086 }
00087
00088 }