summaryrefslogtreecommitdiff
path: root/src/test/test_quat.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/test_quat.c')
-rw-r--r--src/test/test_quat.c82
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