rtcVec2.h
Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2009
00003  * Robert Bosch LLC
00004  * Research and Technology Center North America
00005  * Palo Alto, California
00006  *
00007  * All rights reserved.
00008  *
00009  *------------------------------------------------------------------------------
00010  * project ....: Autonomous Technologies
00011  * file .......: rtcVec2.h
00012  * authors ....: Benjamin Pitzer
00013  * organization: Robert Bosch LLC
00014  * creation ...: 08/16/2006
00015  * modified ...: $Date: 2009-01-21 18:19:16 -0800 (Wed, 21 Jan 2009) $
00016  * changed by .: $Author: benjaminpitzer $
00017  * revision ...: $Revision: 14 $
00018  */
00019 #ifndef RTC_VEC2_H
00020 #define RTC_VEC2_H
00021 
00022 //== INCLUDES ==================================================================
00023 #include "rtc/rtcMath.h"
00024 #include "rtc/rtcVec.h"
00025 
00026 //== NAMESPACES ================================================================
00027 namespace rtc {
00028 
00029 // Forward declarations
00030 template <class T, int M> class Vec; // M-d vector
00031 template <class T> class Vec2; // 2d Vector
00032 
00036 template <class T>
00037 class Vec2: public Vec<T,2> {
00038 public:
00039   // Constructors
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   // Cast Operation
00047   template <class U> Vec2(const Vec<U,2>& v);
00048 
00049   // Mutators
00050   void set(const T x0, const T x1);
00051 
00052   // Perp Operator
00053   Vec2<T> perp() const;
00054 
00055   // inherit member data and functions of parent
00056   using Vec<T,2>::x;
00057   using Vec<T,2>::set;
00058 };
00059 
00060 // Declare a few common typdefs
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 // Vec2<T>
00070 //==============================================================================
00071 
00072 // Constructors
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 // Casting Operation
00103 
00106 template <class T> template <class U>
00107 inline Vec2<T>::Vec2(const Vec<U,2>& v) : Vec<T,2>(v) {}
00108 
00109 // Mutators
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 } // NAMESPACE rtc
00127 //==============================================================================
00128 #endif // RTC_VEC2_H defined
00129 //==============================================================================


rtc
Author(s): Benjamin Pitzer
autogenerated on Thu Jan 2 2014 11:04:54