Advertisement
Guest User

Untitled

a guest
Sep 3rd, 2015
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. struct vector
  4. {
  5. float data[3];
  6.  
  7. vector()
  8. {
  9. for (size_t i = 0; i < 3; i++)
  10. {
  11. data[i] = 0;
  12. }
  13. }
  14.  
  15. vector(float x, float y, float z)
  16. {
  17. data[0] = x;
  18. data[1] = y;
  19. data[2] = z;
  20. }
  21.  
  22. void print()
  23. {
  24. for (size_t y = 0; y < 3; y++)
  25. {
  26. std::cout << data[y];
  27. if (y < 2) std::cout << ", ";
  28.  
  29. std::cout << std::endl;
  30. }
  31. }
  32. };
  33.  
  34. template <typename T>
  35. struct matrix3x3
  36. {
  37. T data[3][3];
  38.  
  39. matrix3x3()
  40. {
  41. for (size_t y = 0; y < 3; y++)
  42. {
  43. for (size_t x = 0; x < 3; x++)
  44. {
  45. data[y][x] = 0;
  46. }
  47. }
  48. }
  49.  
  50. matrix3x3(T p1, T p2, T p3, T p4, T p5, T p6, T p7, T p8, T p9)
  51. {
  52. data[0][0] = p1;
  53. data[0][1] = p2;
  54. data[0][2] = p3;
  55.  
  56. data[1][0] = p4;
  57. data[1][1] = p5;
  58. data[1][2] = p6;
  59.  
  60. data[2][0] = p7;
  61. data[2][1] = p8;
  62. data[2][2] = p9;
  63. }
  64.  
  65. void print()
  66. {
  67. for (size_t y = 0; y < 3; y++)
  68. {
  69. for (size_t x = 0; x < 3; x++)
  70. {
  71. std::cout << data[y][x];
  72. }
  73.  
  74. std::cout << std::endl;
  75. }
  76. }
  77.  
  78. matrix3x3 operator*(const matrix3x3& other)
  79. {
  80. matrix3x3 newMatrix;
  81.  
  82. for (size_t z = 0; z < 3; z++)
  83. {
  84. for (size_t y = 0; y < 3; y++)
  85. {
  86. newMatrix.data[y][z] = 0;
  87.  
  88. for (size_t x = 0; x < 3; x++)
  89. {
  90. newMatrix.data[y][z] += data[y][x] * other.data[x][z];
  91. }
  92. }
  93. }
  94.  
  95. return newMatrix;
  96. }
  97.  
  98. const vector operator*(const vector other)
  99. {
  100. vector newVector;
  101.  
  102. for (size_t y = 0; y < 3; y++)
  103. {
  104. newVector.data[y] = 0;
  105.  
  106. for (size_t x = 0; x < 3; x++)
  107. {
  108. newVector.data[y] += data[y][x] * other.data[x];
  109. }
  110. }
  111.  
  112. return newVector;
  113. }
  114. };
  115.  
  116.  
  117. int main()
  118. {
  119. matrix3x3<float> matrix(1.0f, 2.0f, 3.0f, 2.0f, 4.0f, 0.0f, 5.0f, -1.0f, 2.0f);
  120. matrix3x3<float> matrix2(1.0f, 2.0f, 0.0f, 4.0f, 5.0f, 0.0f, 1.0f, 0.0f, 0.0f);
  121. vector vector1(1, 4, 1);
  122.  
  123. std::cout << "matrix 1" << std::endl;
  124. matrix.print();
  125.  
  126. std::cout << std::endl << "+ matrix 2" << std::endl;
  127. matrix2.print();
  128. std::cout << std::endl << "= matrix 3" << std::endl;
  129.  
  130. matrix3x3<float> matrix3 = matrix * matrix2;
  131. matrix3.print();
  132.  
  133. std::cout << std::endl << "vector yolo" << std::endl;
  134.  
  135. vector vector2 = matrix * vector1;
  136. vector2.print();
  137.  
  138. return 0;
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement