GEL  2
GEL is a library for Geometry and Linear Algebra
/Users/jab/Documents/Teaching/02585/GEL2_and_demos/GEL/src/CGLA/ArithVec2Float.h
00001 #ifndef __CGLA__ARITHVEC2FLOAT_H__
00002 #define __CGLA__ARITHVEC2FLOAT_H__
00003 
00004 #include "ArithVecFloat.h"
00005 
00006 namespace CGLA {
00007 
00008         template<class T, class V>
00009         class ArithVec2Float: public ArithVecFloat<T,V,2>
00010         {
00011         public:
00012 
00014                 ArithVec2Float(T a, T b): ArithVecFloat<T,V,2>(a,b) {}
00015 
00017                 ArithVec2Float() {}             
00018         };
00019 
00021         template<class T, class V>
00022         inline V normalize(const ArithVec2Float<T,V>& v) 
00023         {
00024                 return v/v.length();
00025         }
00026 
00028         template<class T, class V>
00029         inline V orthogonal(const ArithVec2Float<T,V>& v) 
00030         {
00031                 return V(-v[1],v[0]);
00032         }
00033 
00034         // Computes (scalar) cross product from two vectors     
00035         template<class T, class V>
00036         inline T cross(const ArithVec2Float<T,V>& a, 
00037                                                                  const ArithVec2Float<T,V>& b)
00038         {
00039                 return a[0]*b[1]-a[1]*b[0];
00040         }
00041 
00045         template<class T, class V>
00046         bool linear_combine(const ArithVec2Float<T,V>& a,
00047                                                                                         const ArithVec2Float<T,V>& b,
00048                                                                                         const ArithVec2Float<T,V>& c,
00049                                                                                         T&,
00050                                                                                         T&);
00051 
00052 
00053 }
00054 
00055 #endif
00056 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations