| 749 | } |
| 750 | |
| 751 | static void test_matrix4x4() |
| 752 | { |
| 753 | { |
| 754 | const Matrix4x4 a = { |
| 755 | 1.2f, -2.3f, 5.1f, -1.2f, |
| 756 | 2.2f, -5.1f, 1.1f, -7.4f, |
| 757 | 3.2f, 3.3f, -3.8f, -9.2f, |
| 758 | -6.8f, -2.9f, 1.0f, 4.9f |
| 759 | }; |
| 760 | const Matrix4x4 b = { |
| 761 | 3.2f, 4.8f, 6.0f, 5.3f, |
| 762 | -1.6f, -7.1f, -2.4f, -6.2f, |
| 763 | -3.1f, -2.2f, 8.9f, 8.3f, |
| 764 | 3.8f, 9.1f, -3.1f, -7.1f |
| 765 | }; |
| 766 | const Matrix4x4 c = a + b; |
| 767 | ENSURE(fequal(c.x.x, 4.4f, 0.00001f)); |
| 768 | ENSURE(fequal(c.x.y, 2.5f, 0.00001f)); |
| 769 | ENSURE(fequal(c.x.z, 11.1f, 0.00001f)); |
| 770 | ENSURE(fequal(c.x.w, 4.1f, 0.00001f)); |
| 771 | ENSURE(fequal(c.y.x, 0.6f, 0.00001f)); |
| 772 | ENSURE(fequal(c.y.y, -12.2f, 0.00001f)); |
| 773 | ENSURE(fequal(c.y.z, -1.3f, 0.00001f)); |
| 774 | ENSURE(fequal(c.y.w, -13.6f, 0.00001f)); |
| 775 | ENSURE(fequal(c.z.x, 0.1f, 0.00001f)); |
| 776 | ENSURE(fequal(c.z.y, 1.1f, 0.00001f)); |
| 777 | ENSURE(fequal(c.z.z, 5.1f, 0.00001f)); |
| 778 | ENSURE(fequal(c.z.w, -0.9f, 0.00001f)); |
| 779 | ENSURE(fequal(c.t.x, -3.0f, 0.00001f)); |
| 780 | ENSURE(fequal(c.t.y, 6.2f, 0.00001f)); |
| 781 | ENSURE(fequal(c.t.z, -2.1f, 0.00001f)); |
| 782 | ENSURE(fequal(c.t.w, -2.2f, 0.00001f)); |
| 783 | } |
| 784 | { |
| 785 | const Matrix4x4 a = { |
| 786 | 1.2f, -2.3f, 5.1f, -1.2f, |
| 787 | 2.2f, -5.1f, 1.1f, -7.4f, |
| 788 | 3.2f, 3.3f, -3.8f, -9.2f, |
| 789 | -6.8f, -2.9f, 1.0f, 4.9f |
| 790 | }; |
| 791 | const Matrix4x4 b = { |
| 792 | 3.2f, 4.8f, 6.0f, 5.3f, |
| 793 | -1.6f, -7.1f, -2.4f, -6.2f, |
| 794 | -3.1f, -2.2f, 8.9f, 8.3f, |
| 795 | 3.8f, 9.1f, -3.1f, -7.1f |
| 796 | }; |
| 797 | const Matrix4x4 c = a - b; |
| 798 | ENSURE(fequal(c.x.x, -2.0f, 0.00001f)); |
| 799 | ENSURE(fequal(c.x.y, -7.1f, 0.00001f)); |
| 800 | ENSURE(fequal(c.x.z, -0.9f, 0.00001f)); |
| 801 | ENSURE(fequal(c.x.w, -6.5f, 0.00001f)); |
| 802 | ENSURE(fequal(c.y.x, 3.8f, 0.00001f)); |
| 803 | ENSURE(fequal(c.y.y, 2.0f, 0.00001f)); |
| 804 | ENSURE(fequal(c.y.z, 3.5f, 0.00001f)); |
| 805 | ENSURE(fequal(c.y.w, -1.2f, 0.00001f)); |
| 806 | ENSURE(fequal(c.z.x, 6.3f, 0.00001f)); |
| 807 | ENSURE(fequal(c.z.y, 5.5f, 0.00001f)); |
| 808 | ENSURE(fequal(c.z.z, -12.7f, 0.00001f)); |