00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef TEDDY__MATHS__CROSS_VECTOR_4__H
00026 #define TEDDY__MATHS__CROSS_VECTOR_4__H
00027
00028
00029 #include "Teddy/Maths/Vector4.h"
00030
00031
00032 namespace Teddy {
00033 namespace Maths {
00034
00035
00036 #define CrossVector4 TCrossVector4<float>
00037
00038
00039 template <typename T> class TCrossVector4 : public TVector4<T> {
00040 public:
00041 TCrossVector4( const TVector4<T> &r, const TVector4<T> &s, const TVector4<T> &t ){
00042 v[0] = r[1]*s[2]*t[3] + r[2]*s[3]*t[1] + r[3]*s[1]*t[2] - r[1]*s[3]*t[2] - r[2]*s[1]*t[3] - r[3]*s[2]*t[1];
00043 v[1] = r[0]*s[3]*t[2] + r[2]*s[0]*t[3] + r[3]*s[2]*t[0] - r[0]*s[2]*t[3] - r[2]*s[3]*t[0] - r[3]*s[0]*t[2];
00044 v[2] = r[0]*s[1]*t[3] + r[1]*s[3]*t[0] + r[3]*s[0]*t[1] - r[0]*s[3]*t[1] - r[1]*s[0]*t[3] - r[3]*s[1]*t[0];
00045 v[3] = r[0]*s[2]*t[1] + r[1]*s[0]*t[2] + r[2]*s[1]*t[0] - r[0]*s[1]*t[2] - r[1]*s[2]*t[0] - r[2]*s[0]*t[1];
00046 }
00047 };
00048
00049
00050 };
00051 };
00052
00053
00054 #endif // TEDDY__MATHS__CROSS_VECTOR_4__H
00055