Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1. #define temop2 template<size_t R1, size_t C1, size_t R2, size_t C2, class T>
  2. #define temop1 template<size_t R, size_t C, class T>
  3. #define vec_ini _Mat(vector<vector<T>> (R, vector<T> (C, 0.)))
  4. #define x _Mat[0][0]
  5. #define y _Mat[1][0]
  6. #define z _Mat[2][0]
  7.  
  8. template<size_t R, size_t C, class T> struct Matrix
  9. {
  10. Matrix (): vec_ini
  11. {}
  12.  
  13. Matrix (T _x, T _y, T _z): vec_ini
  14. {
  15. _Mat[0][0] = _x;
  16. _Mat[1][0] = _y;
  17. _Mat[2][0] = _z;
  18. }
  19.  
  20. Matrix (T _x, T _y): vec_ini
  21. {
  22. _Mat[0][0] = _x;
  23. _Mat[1][0] = _y;
  24. }
  25.  
  26. Matrix (Matrix<R, C, T>& v): vec_ini
  27. {
  28. *this = v;
  29. }
  30.  
  31. vector<T>& operator [] (const int i)
  32. {
  33. assert (i >= 0 && i < R);
  34. return _Mat[i];
  35. }
  36.  
  37. Matrix<R, C, T>& operator = (Matrix<R, C, T> &m)
  38. {
  39. for(size_t i = R; i--; )
  40. for(size_t j = C; j--; )
  41. _Mat[i][j] = m[i][j];
  42. return *this;
  43. }
  44.  
  45. vector<vector<T> > _Mat;
  46. };
  47.  
  48. typedef Matrix<2, 1, float> Vec2f;
  49. typedef Matrix<3, 1, float> Vec3f;
  50. typedef Matrix<2, 1, int> Vec2i;
  51. typedef Matrix<3, 1, int> Vec3i;
  52.  
  53. Vec3f m2v (Matrix<4, 1, float> m)
  54. {
  55. return Vec3f (m[0][0]/m[3][0], m[1][0]/m[3][0], m[2][0]/m[3][0]);
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement