Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef RTC_VEC2_H
00020 #define RTC_VEC2_H
00021
00022
00023 #include "rtc/rtcMath.h"
00024 #include "rtc/rtcVec.h"
00025
00026
00027 namespace rtc {
00028
00029
00030 template <class T, int M> class Vec;
00031 template <class T> class Vec2;
00032
00036 template <class T>
00037 class Vec2: public Vec<T,2> {
00038 public:
00039
00040 Vec2();
00041 Vec2(const T* d);
00042 Vec2(const T a);
00043 Vec2(const T x0, const T x1);
00044 Vec2(const Vec<T,2>& v);
00045
00046
00047 template <class U> Vec2(const Vec<U,2>& v);
00048
00049
00050 void set(const T x0, const T x1);
00051
00052
00053 Vec2<T> perp() const;
00054
00055
00056 using Vec<T,2>::x;
00057 using Vec<T,2>::set;
00058 };
00059
00060
00061 typedef Vec2<bool> Vec2b;
00062 typedef Vec2<char> Vec2c;
00063 typedef Vec2<unsigned char> Vec2uc;
00064 typedef Vec2<int> Vec2i;
00065 typedef Vec2<float> Vec2f;
00066 typedef Vec2<double> Vec2d;
00067
00068
00069
00070
00071
00072
00073
00076 template <class T>
00077 inline Vec2<T>::Vec2() {
00078 }
00079
00082 template <class T>
00083 inline Vec2<T>::Vec2(const T* d) : Vec<T,2>(d) {}
00084
00087 template <class T>
00088 inline Vec2<T>::Vec2(const T a) : Vec<T,2>(a) {}
00089
00092 template <class T>
00093 inline Vec2<T>::Vec2(const T x0, const T x1) {
00094 set(x0,x1);
00095 }
00096
00099 template <class T>
00100 inline Vec2<T>::Vec2(const Vec<T,2>& v) : Vec<T,2>(v) {}
00101
00102
00103
00106 template <class T> template <class U>
00107 inline Vec2<T>::Vec2(const Vec<U,2>& v) : Vec<T,2>(v) {}
00108
00109
00110
00113 template <class T>
00114 inline void Vec2<T>::set(const T x0, const T x1) {
00115 x[0] = x0; x[1] = x1;
00116 }
00117
00120 template <class T>
00121 inline Vec2<T> Vec2<T>::perp() const {
00122 return Vec2<T>(-x[1],x[0]);
00123 }
00124
00125
00126 }
00127
00128 #endif // RTC_VEC2_H defined
00129