00001 /******************************************************************************* 00002 * Transformation2D.h 00003 * 00004 * (C) 2008 AG Aktives Sehen <agas@uni-koblenz.de> 00005 * Universitaet Koblenz-Landau 00006 * 00007 * $Id: Transformation2D.h 44313 2011-04-06 22:46:28Z agas $ 00008 *******************************************************************************/ 00009 00010 #ifndef TRANSFORMATION2D_H 00011 #define TRANSFORMATION2D_H 00012 00013 #include <cmath> 00014 #include <vector> 00015 //#include "Workers/Math/Vec.h" 00016 #include "Point2D.h" 00017 #include "Line2D.h" 00018 00019 00028 class Transformation2D : public CVec2 00029 { 00030 00031 public: 00032 00039 Transformation2D ( double x, double y, double theta ); 00040 00046 Transformation2D ( const CVec2& vec, double theta ); 00047 00051 Transformation2D(); 00052 00056 ~Transformation2D(); 00057 00064 void set ( double x, double y, double theta ); 00065 00070 double theta() const; 00071 00075 Transformation2D operator+ ( Transformation2D t ) const; 00076 Transformation2D& operator+= ( Transformation2D t ); 00077 00081 Transformation2D operator- ( Transformation2D t ) const; 00082 Transformation2D& operator-= ( Transformation2D t ); 00083 00087 Transformation2D operator* ( float factor ) const; 00088 Transformation2D& operator*= ( float factor ); 00089 00093 Transformation2D operator/ ( float factor ) const; 00094 Transformation2D& operator/= ( float factor ); 00095 00099 bool operator== ( Transformation2D t ) const; 00100 bool operator!= ( Transformation2D t ) const; 00101 00106 bool operator<= ( Transformation2D t ) const; 00107 bool operator>= ( Transformation2D t ) const; 00108 bool operator< ( Transformation2D t ) const; 00109 bool operator> ( Transformation2D t ) const; 00110 00114 Transformation2D abs() const; 00115 00119 Transformation2D inverse() const; 00120 00124 Point2D transform ( const Point2D& point ) const; 00125 std::vector<Point2D> transform ( const std::vector<Point2D>& points ) const; 00126 00130 Line2D transform ( const Line2D& line ) const; 00131 std::vector<Line2D> transform ( const std::vector<Line2D>& lines ) const; 00132 00137 std::string toString() const; 00138 00139 private: 00140 double m_Theta; 00141 }; 00142 00143 #endif 00144