Advertisement
Guest User

Untitled

a guest
May 24th, 2018
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.75 KB | None | 0 0
  1. #include <iomanip>
  2. #include <iostream>
  3.  
  4. struct Matrix4
  5. {
  6.     float data[16];
  7.  
  8.     Matrix4(float m00, float m01,float m02, float m03,
  9.         float m10,  float m11,  float m12,  float m13,
  10.         float m20,  float m21,  float m22,  float m23,
  11.         float m30,  float m31,  float m32,  float m33)
  12.         : data{
  13.             m00, m10, m20, m30,
  14.             m01, m11, m21, m31,
  15.             m02, m12, m22, m32,
  16.             m03, m13, m23, m33
  17.           }
  18.     {}
  19. };
  20.  
  21. int main() {
  22.     const Matrix4 id = Matrix4(
  23.         1.0f, 0.0f, 0.0f, 0.0f,
  24.         0.0f, 1.0f, 0.0f, 0.0f,
  25.         0.0f, 0.0f, 1.0f, 0.0f,
  26.         0.0f, 0.0f, 0.0f, 1.0f);
  27.  
  28.     const auto &a = id;
  29.     const auto &b = id;
  30.  
  31.     Matrix4 m1(
  32.         a.data[0] * b.data[0] + a.data[4] * b.data[1] + a.data[8] * b.data[2] + a.data[12] * b.data[3],
  33.         a.data[0] * b.data[4] + a.data[4] * b.data[5] + a.data[8] * b.data[6] + a.data[12] * b.data[7],
  34.         a.data[0] * b.data[8] + a.data[4] * b.data[9] + a.data[8] * b.data[10] + a.data[12] * b.data[11],
  35.         a.data[0] * b.data[12] + a.data[4] * b.data[13] + a.data[8] * b.data[14] + a.data[12] * b.data[15],
  36.         a.data[1] * b.data[0] + a.data[5] * b.data[1] + a.data[9] * b.data[2] + a.data[13] * b.data[3],
  37.         a.data[1] * b.data[4] + a.data[5] * b.data[5] + a.data[9] * b.data[6] + a.data[13] * b.data[7],
  38.         a.data[1] * b.data[8] + a.data[5] * b.data[9] + a.data[9] * b.data[10] +a.data[13] * b.data[11],
  39.         a.data[1] * b.data[12] + a.data[5] * b.data[13] + a.data[9] * b.data[14] +  a.data[13] * b.data[15],
  40.         a.data[2] * b.data[0] + a.data[6] * b.data[1] + a.data[10] * b.data[2] +a.data[14] * b.data[3],
  41.         a.data[2] * b.data[4] + a.data[6] * b.data[5] + a.data[10] * b.data[6] +a.data[14] * b.data[7],
  42.         a.data[2] * b.data[8] + a.data[6] * b.data[9] + a.data[10] * b.data[10] + a.data[14] * b.data[11],
  43.         a.data[2] * b.data[12] + a.data[6] * b.data[13] + a.data[10] * b.data[14] + a.data[14] * b.data[15],
  44.         a.data[3] * b.data[0] + a.data[7] * b.data[1] + a.data[11] * b.data[2] + a.data[15] * b.data[3],
  45.         a.data[3] * b.data[4] + a.data[7] * b.data[5] + a.data[11] * b.data[6] + a.data[15] * b.data[7],
  46.         a.data[3] * b.data[8] + a.data[7] * b.data[9] + a.data[11] * b.data[10] + a.data[15] * b.data[11],
  47.         a.data[3] * b.data[12] + a.data[7] * b.data[13] + a.data[11] * b.data[14] + a.data[15] * b.data[15]);
  48.  
  49.     std::cout << "MSVC " << _MSC_VER << " " << sizeof(void*)*8 << "-bit\n";
  50.    
  51.     std::cout << "id:";
  52.     for (int i = 0; i < 16; ++i)
  53.         std::cout << " " << std::setprecision(20) << id.data[i];
  54.  
  55.     std::cout << "\n";
  56.  
  57.  
  58.     std::cout << "m1:";
  59.     for (int i = 0; i < 16; ++i)
  60.         std::cout << " " << std::setprecision(20) << m1.data[i];
  61.  
  62.     std::cout << "\n";
  63.  
  64.     const int diff_index = 15;
  65.  
  66.     std::cout << "Actual value of element " << diff_index << " is " << std::setprecision(20) << m1.data[diff_index] << " expected " << std::setprecision(20) << id.data[diff_index] << std::endl;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement