snipplrCallback({"id":12039,"title":"tplvector","source":"
\/*<\/span><\/div><\/li> * tplVector by Marcelo Barreiros Furtado - 2009<\/span><\/div><\/li> * mabafu@gmail.com<\/span><\/div><\/li> * <\/span><\/div><\/li> * To complainers:<\/span><\/div><\/li> * You're free to use this code as you wish, take in mind altough that<\/span><\/div><\/li> * it's provided "as is". I claim no credit over it - neither shame.<\/span><\/div><\/li> * <\/span><\/div><\/li> * To contributors:<\/span><\/div><\/li> * Feel free to use this code in any creative and original way you wish.<\/span><\/div><\/li> * Please e-mail me any issue\/bug\/error you detect on it.<\/span><\/div><\/li> *\/<\/span><\/div><\/li> <\/div><\/li> #ifndef __VECTOR_TPP__<\/span><\/div><\/li> #define __VECTOR_TPP__<\/span><\/div><\/li> <\/div><\/li> \/\/! comment the line bellow to wipe away unnecessary code<\/span><\/div><\/li> \/\/#define __VECTOR_TPP__DEBUG__ <\/span><\/div><\/li> <\/div><\/li> #include <cmath><\/span><\/div><\/li> <\/div><\/li> #ifdef __VECTOR_TPP__DEBUG__<\/span><\/div><\/li> <\/div><\/li> #include <iostream><\/span><\/div><\/li> using<\/span> namespace<\/span> std;<\/span><\/div><\/li> <\/div><\/li> #endif<\/span><\/div><\/li> <\/div><\/li> \/\/! The vector class template<\/span><\/div><\/li> template<\/span><<\/span>class<\/span> T><\/span> class<\/span> tplVector;<\/span><\/div><\/li> <\/div><\/li> \/\/! the dot product operator<\/span><\/div><\/li> template<\/span> <<\/span>class<\/span> T><\/span><\/div><\/li> T operator*<\/span>(<\/span>tplVector<<\/span>T><\/span>&<\/span> left, tplVector<<\/span>T><\/span>&<\/span> right)<\/span>;<\/span><\/div><\/li> <\/div><\/li> \/\/! the cross product operator<\/span><\/div><\/li> template<\/span> <<\/span>class<\/span> T><\/span><\/div><\/li> tplVector<<\/span>T><\/span> operator%<\/span>(<\/span>tplVector<<\/span>T><\/span> left, tplVector<<\/span>T><\/span> right)<\/span>;<\/span><\/div><\/li> <\/div><\/li> \/\/! the scalar multiplication operator 1<\/span><\/div><\/li> template<\/span> <<\/span>class<\/span> T><\/span><\/div><\/li> tplVector<<\/span>T><\/span>&<\/span> operator*<\/span>(<\/span>T scalar, tplVector<<\/span>T><\/span>&<\/span> vector)<\/span>;<\/span><\/div><\/li> <\/div><\/li> \/\/! the scalar multiplication operator 2<\/span><\/div><\/li> template<\/span> <<\/span>class<\/span> T><\/span><\/div><\/li> tplVector<<\/span>T><\/span>&<\/span> operator*<\/span>(<\/span>tplVector<<\/span>T><\/span>&<\/span> vector, T scalar)<\/span>;<\/span><\/div><\/li> <\/div><\/li> \/\/! the sum operator<\/span><\/div><\/li> template<\/span> <<\/span>class<\/span> T><\/span><\/div><\/li> tplVector<<\/span>T><\/span>&<\/span> operator+<\/span>(<\/span>tplVector<<\/span>T><\/span>&<\/span> left, tplVector<<\/span>T><\/span>&<\/span> right)<\/span>;<\/span><\/div><\/li> <\/div><\/li> \/\/! the subtraction operator<\/span><\/div><\/li> template<\/span> <<\/span>class<\/span> T><\/span><\/div><\/li> tplVector<<\/span>T><\/span>&<\/span> operator-<\/span>(<\/span>tplVector<<\/span>T><\/span>&<\/span> left, tplVector<<\/span>T><\/span>&<\/span> right)<\/span>;<\/span><\/div><\/li> <\/div><\/li> \/\/! the vector inversion operator<\/span><\/div><\/li> template<\/span> <<\/span>class<\/span> T><\/span><\/div><\/li> tplVector<<\/span>T><\/span>&<\/span> operator-<\/span>(<\/span>tplVector<<\/span>T