Files
c3c/test/unit/stdlib/math/matrix.c3
Tonis a877d4458c Improve Matrix identity functions and add Quaternion to matrix function (#765)
* Edit matrix identity fn and add quaternion to matrix fn

* Change matrix identity macros to constants

---------

Co-authored-by: Tonis <tanton@paysure.solutions>
2023-05-16 11:50:01 +02:00

52 lines
1.1 KiB
C

module math_matrix @test;
import std::math;
fn void test_mat4()
{
{|
Matrix4 mat = MATRIX4_IDENTITY;
Matrix4 mat2 = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 };
Matrix4 calc = mat.mul(mat2);
assert(calc.m == mat.m);
Matrix4 translated = mat.translate(Vec3{0.0, 0.0, 0.0});
assert(translated.m == mat.m);
|};
{|
Matrix4 mat = { 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8 };
Matrix4 mat2 = { 8, 7, 6, 5, 4, 3, 2, 1, 8, 7, 6, 5, 4, 3, 2, 1 };
Matrix4 calc = mat.mul(mat2);
Matrix4 value = { 56, 46, 36, 26, 152, 126, 100, 74, 56, 46, 36, 26, 152, 126, 100, 74 };
assert(calc.m == value.m);
|};
}
fn void test_mat3()
{
Matrix3 mat = { 3, 5, 3, 5, 2, 6, 6, 2, 1 };
Matrix3 mat2 = { 4, 2, 6, 7, 8, 9, 2, 3, 4 };
Matrix3 calc = mat.mul(mat2);
Matrix3 value = { 53, 55, 75, 46, 44, 72, 40, 31, 58 };
assert(calc.m == value.m);
}
fn void test_mat2()
{
Matrix2 mat = { 3, 5, 5, 2};
Matrix2 mat2 = { 4, 2, 7, 8 };
Matrix2 calc = mat.mul(mat2);
Matrix2 value = { 47, 46, 34, 26 };
assert(calc.m == value.m);
}
fn void test_vec3()
{
Vec3 cross = Vec3{2,3,4}.cross(Vec3{5,6,7});
assert(cross == Vec3{-3,6,-3});
}