diff options
Diffstat (limited to 'src/test/test_quat.c')
-rw-r--r-- | src/test/test_quat.c | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/src/test/test_quat.c b/src/test/test_quat.c new file mode 100644 index 0000000..c932082 --- /dev/null +++ b/src/test/test_quat.c @@ -0,0 +1,82 @@ +#include "test.h" +#include "../math/math.h" + +TEST(test_euler) + +Euler e = {90, 90, 0}; +Vec3 p = {2,3,4}, res; +Quat qut; +quat_fromeuler(&e, &qut); +quat_applytovec3(&qut, &p, &res); +vec3_print(&res); + +/*ÓÃÖá½Ç¶¨Òå*/ +Vec3 axis = { 1, 0,0 }; +Quat qut2; +quat_fromaxisangle(&axis, 90, &qut2); +quat_applytovec3(&qut, &p, &res); +vec3_print(&res); + +Mat4 mat; +quat_tomat4(&qut, &mat); +mat4_print(&mat); + +Vec4 p2 = { 2,3,4,1 }; +Vec4 res2; +mat4_applytovec4(&mat, &p2, &res2); +vec4_print(&res2); + +END + +TEST(test_quat2euler) +Euler e = { 10, 20, 30}; + +Quat q; +euler_toquat(&e, &q); +euler_deg2rad(&e, &e); +quat_print(&q); +euler_print(&e); + +Euler res; +quat_toeuler(&q, &res); + +euler_print(&res); + +quat_fromeuler(&res, &q); +quat_print(&q); + +END + +TEST(test_conjugate) +Quat rot; +Vec3 axis = {2,3,4}; +vec3_normalize(&axis, &axis); +quat_fromaxisangle(&axis, 46, &rot); +Vec3 p = {12, 3, 55}; +vec3_print(&p); +Vec3 res; +quat_applytovec3(&rot, &p, &res); +vec3_print(&res); +Quat rev; +quat_invert(&rot, &rev); +quat_applytovec3(&rev, &res, &res); +vec3_print(&res); +END + +TEST(test_lookrotation) +Vec3 view = {1, 0, 0}; +Vec3 up = {0, 1, 0}; +Quat rot; +quat_setlookrotation(&view, &up, &rot); +quat_print(&rot); +Euler euler; +quat_toeuler(&rot, &euler); +euler_print(&euler); +END + +void test_quat() { + //test_euler(); + //test_quat2euler(); + //test_conjugate(); + //test_lookrotation(); +}
\ No newline at end of file |