| 1 | #include "Vector3d.hpp" | 
| 2 | #include "Mat3x3d.hpp" | 
| 3 |  | 
| 4 | Vector3d& Vector3d::operator*= ( const Mat3x3d & m){ | 
| 5 | Vector3d temp; | 
| 6 |  | 
| 7 | temp = *this; | 
| 8 | x = temp.x*m.element[0][0] + temp.y*m.element[1][0] + temp.z* m.element[2][0]; | 
| 9 | y = temp.x*m.element[0][1] + temp.y*m.element[1][1] + temp.z* m.element[2][1]; | 
| 10 | z = temp.x*m.element[0][2] + temp.y*m.element[1][2] + temp.z* m.element[2][2]; | 
| 11 |  | 
| 12 | return *this; | 
| 13 | } | 
| 14 |  | 
| 15 | Mat3x3d outProduct(const Vector3d& v1, const Vector3d& v2){ | 
| 16 | Mat3x3d m; | 
| 17 |  | 
| 18 | m.element[0][0] = v1.x * v2.x; | 
| 19 | m.element[0][1] = v1.x * v2.y; | 
| 20 | m.element[0][2] = v1.x * v2.z; | 
| 21 |  | 
| 22 | m.element[1][0] = v1.y * v2.x; | 
| 23 | m.element[1][1] = v1.y * v2.y; | 
| 24 | m.element[1][2] = v1.y * v2.z; | 
| 25 |  | 
| 26 | m.element[2][0] = v1.z * v2.x; | 
| 27 | m.element[2][1] = v1.z * v2.y; | 
| 28 | m.element[2][2] = v1.z * v2.z; | 
| 29 |  | 
| 30 | return m; | 
| 31 | } |