Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iomanip>
- #include <iostream>
- struct Matrix4
- {
- float data[16];
- Matrix4(float m00, float m01,float m02, float m03,
- float m10, float m11, float m12, float m13,
- float m20, float m21, float m22, float m23,
- float m30, float m31, float m32, float m33)
- : data{
- m00, m10, m20, m30,
- m01, m11, m21, m31,
- m02, m12, m22, m32,
- m03, m13, m23, m33
- }
- {}
- };
- int main() {
- const Matrix4 id = Matrix4(
- 1.0f, 0.0f, 0.0f, 0.0f,
- 0.0f, 1.0f, 0.0f, 0.0f,
- 0.0f, 0.0f, 1.0f, 0.0f,
- 0.0f, 0.0f, 0.0f, 1.0f);
- const auto &a = id;
- const auto &b = id;
- Matrix4 m1(
- a.data[0] * b.data[0] + a.data[4] * b.data[1] + a.data[8] * b.data[2] + a.data[12] * b.data[3],
- a.data[0] * b.data[4] + a.data[4] * b.data[5] + a.data[8] * b.data[6] + a.data[12] * b.data[7],
- a.data[0] * b.data[8] + a.data[4] * b.data[9] + a.data[8] * b.data[10] + a.data[12] * b.data[11],
- a.data[0] * b.data[12] + a.data[4] * b.data[13] + a.data[8] * b.data[14] + a.data[12] * b.data[15],
- a.data[1] * b.data[0] + a.data[5] * b.data[1] + a.data[9] * b.data[2] + a.data[13] * b.data[3],
- a.data[1] * b.data[4] + a.data[5] * b.data[5] + a.data[9] * b.data[6] + a.data[13] * b.data[7],
- a.data[1] * b.data[8] + a.data[5] * b.data[9] + a.data[9] * b.data[10] +a.data[13] * b.data[11],
- a.data[1] * b.data[12] + a.data[5] * b.data[13] + a.data[9] * b.data[14] + a.data[13] * b.data[15],
- a.data[2] * b.data[0] + a.data[6] * b.data[1] + a.data[10] * b.data[2] +a.data[14] * b.data[3],
- a.data[2] * b.data[4] + a.data[6] * b.data[5] + a.data[10] * b.data[6] +a.data[14] * b.data[7],
- a.data[2] * b.data[8] + a.data[6] * b.data[9] + a.data[10] * b.data[10] + a.data[14] * b.data[11],
- a.data[2] * b.data[12] + a.data[6] * b.data[13] + a.data[10] * b.data[14] + a.data[14] * b.data[15],
- a.data[3] * b.data[0] + a.data[7] * b.data[1] + a.data[11] * b.data[2] + a.data[15] * b.data[3],
- a.data[3] * b.data[4] + a.data[7] * b.data[5] + a.data[11] * b.data[6] + a.data[15] * b.data[7],
- a.data[3] * b.data[8] + a.data[7] * b.data[9] + a.data[11] * b.data[10] + a.data[15] * b.data[11],
- a.data[3] * b.data[12] + a.data[7] * b.data[13] + a.data[11] * b.data[14] + a.data[15] * b.data[15]);
- std::cout << "MSVC " << _MSC_VER << " " << sizeof(void*)*8 << "-bit\n";
- std::cout << "id:";
- for (int i = 0; i < 16; ++i)
- std::cout << " " << std::setprecision(20) << id.data[i];
- std::cout << "\n";
- std::cout << "m1:";
- for (int i = 0; i < 16; ++i)
- std::cout << " " << std::setprecision(20) << m1.data[i];
- std::cout << "\n";
- const int diff_index = 15;
- 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;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement