00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef GENLIB2_ROTMATVEC3_INCLUDED
00022 #define GENLIB2_ROTMATVEC3_INCLUDED
00023
00024 #include "rotmatrix3.h"
00025 #include "vector3.h"
00026
00027 using namespace std;
00028
00029 namespace GenLib2
00030 {
00031
00035 template<class T>
00036 void mult(Vector3<T>& c, const RotMatrix3<T>& A, const Vector3<T>& b)
00037 {
00038 c.x = A(0,0) * b.x + A(0,1) * b.y + A(0,2) * b.z;
00039 c.y = A(1,0) * b.x + A(1,1) * b.y + A(1,2) * b.z;
00040 c.z = A(2,0) * b.x + A(2,1) * b.y + A(2,2) * b.z;
00041 }
00042
00043
00047 template<class T>
00048 void mult_inv(Vector3<T>& c, const RotMatrix3<T>& A, const Vector3<T>& b)
00049 {
00050 c.x = A(0,0) * b.x + A(1,0) * b.y + A(2,0) * b.z;
00051 c.y = A(0,1) * b.x + A(1,1) * b.y + A(2,1) * b.z;
00052 c.z = A(0,2) * b.x + A(1,2) * b.y + A(2,2) * b.z;
00053 }
00054
00055
00059 template<class T>
00060 Vector3<T> operator*(const RotMatrix3<T>& A, const Vector3<T>& b)
00061 {
00062 Vector3<T> c;
00063
00064
00065
00066
00067 mult(c, A, b);
00068
00069 return c;
00070 }
00071
00072 }
00073
00074 #endif