1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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_mulvec4(&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();
}
|