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