| 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 | 
} |