ellipse2D.h
Go to the documentation of this file.00001
00015 #ifndef DLR_GEOMETRY_ELLIPSE2D_H
00016 #define DLR_GEOMETRY_ELLIPSE2D_H
00017
00018 #include <iostream>
00019 #include <dlrNumeric/vector2D.h>
00020
00021 namespace dlr {
00022
00023 namespace geometry {
00024
00028 class Ellipse2D {
00029 public:
00030
00034 inline
00035 Ellipse2D();
00036
00037
00053 inline
00054 Ellipse2D(const dlr::numeric::Vector2D& origin,
00055 const dlr::numeric::Vector2D& semimajorAxis,
00056 double ratio);
00057
00058
00064 inline
00065 Ellipse2D(const Ellipse2D& source);
00066
00067
00071 ~Ellipse2D() {}
00072
00073
00081 inline Ellipse2D&
00082 operator=(const Ellipse2D& source);
00083
00084
00091 const dlr::numeric::Vector2D&
00092 getOrigin() const {return m_origin;}
00093
00094
00108 const dlr::numeric::Vector2D&
00109 getSemimajorAxis() const {return m_semimajorAxis;}
00110
00111
00125 const dlr::numeric::Vector2D&
00126 getSemiminorAxis() const {return m_semimajorAxis;}
00127
00128
00129 private:
00130
00131
00132
00133 dlr::numeric::Vector2D m_origin;
00134 dlr::numeric::Vector2D m_semimajorAxis;
00135 dlr::numeric::Vector2D m_semiminorAxis;
00136
00137 };
00138
00139
00140
00141
00142
00143 std::ostream&
00144 operator<<(std::ostream& stream, const Ellipse2D& ellipse);
00145
00146 }
00147
00148 }
00149
00150
00151
00152
00153 namespace dlr {
00154
00155 namespace geometry {
00156
00157
00158 Ellipse2D::
00159 Ellipse2D()
00160 : m_origin(0.0, 0.0),
00161 m_semimajorAxis(1.0, 0.0),
00162 m_semiminorAxis(0.0, 1.0)
00163 {
00164
00165 }
00166
00167
00168
00169
00170 Ellipse2D::
00171 Ellipse2D(const dlr::numeric::Vector2D& origin,
00172 const dlr::numeric::Vector2D& semimajorAxis,
00173 double ratio)
00174 : m_origin(origin),
00175 m_semimajorAxis(semimajorAxis),
00176 m_semiminorAxis(semimajorAxis.y() * ratio, semimajorAxis.x() * ratio)
00177 {
00178 if(ratio > 1.0) {
00179 std::swap(m_semimajorAxis, m_semiminorAxis);
00180 }
00181 }
00182
00183
00184
00185 Ellipse2D::
00186 Ellipse2D(const Ellipse2D& source)
00187 : m_origin(source.m_origin),
00188 m_semimajorAxis(source.m_semimajorAxis),
00189 m_semiminorAxis(source.m_semiminorAxis)
00190 {
00191
00192 }
00193
00194
00195
00196 Ellipse2D&
00197 Ellipse2D::
00198 operator=(const Ellipse2D& source)
00199 {
00200 if(&source != this) {
00201 m_origin = source.m_origin;
00202 m_semimajorAxis = source.m_semimajorAxis;
00203 m_semiminorAxis = source.m_semiminorAxis;
00204 }
00205 return *this;
00206 }
00207
00208 }
00209
00210 }
00211
00212
00213 #endif