@@ -27,10 +27,7 @@ int main()
27
27
TEST (isEqual (e, e));
28
28
29
29
// euler vector ctor
30
- Vector<float , 3 > v;
31
- v (0 ) = 0 .1f ;
32
- v (1 ) = 0 .2f ;
33
- v (2 ) = 0 .3f ;
30
+ Vector3f v (0 .1f , 0 .2f , 0 .3f );
34
31
Eulerf euler_copy (v);
35
32
TEST (isEqual (euler_copy, euler_check));
36
33
@@ -42,6 +39,38 @@ int main()
42
39
TEST (fabs (q (2 ) - 3 ) < eps);
43
40
TEST (fabs (q (3 ) - 4 ) < eps);
44
41
42
+ // quaternion ctor: vector to vector
43
+ Vector3f v1 (0 .f , 0 .f , 1 .f );
44
+ // identity & default destination vector test
45
+ Quatf quat_v (v1);
46
+ TEST (isEqual (quat_v.conjugate (v1), v1));
47
+ // random test
48
+ v1 = Vector3f (-80 .1f , 1 .5f , -6 .89f );
49
+ Vector3f v2 (0 .1f , 0 .2f , 0 .3f );
50
+ quat_v = Quatf (v1, v2);
51
+ TEST (isEqual (quat_v.conjugate (v1).normalized () * v2.norm (), v2));
52
+ // special 180 degree case 1
53
+ v1 = Vector3f (0 .f , 1 .f , 1 .f );
54
+ v2 = Vector3f (0 .f , -1 .f , -1 .f );
55
+ quat_v = Quatf (v1, v2);
56
+ TEST (isEqual (quat_v.conjugate (v1).normalized () * v2.norm (), v2));
57
+ // special 180 degree case 2
58
+ v1 = Vector3f (1 .f , 2 .f , 0 .f );
59
+ v2 = Vector3f (0 .f , -1 .f , -1 .f );
60
+ quat_v = Quatf (v1, v2);
61
+ TEST (isEqual (quat_v.conjugate (v1).normalized () * v2.norm (), v2));
62
+ // special 180 degree case 3
63
+ v1 = Vector3f (0 .f , 0 .f , 1 .f );
64
+ v2 = Vector3f (0 .f , 0 .f , -1 .f );
65
+ quat_v = Quatf (v1, v2);
66
+ TEST (isEqual (quat_v.conjugate (v1).normalized () * v2.norm (), v2));
67
+ // special 180 degree case 4
68
+ v1 = Vector3f (1 .f , 1 .f , 1 .f );
69
+ v2 = Vector3f (-1 .f , -1 .f , -1 .f );
70
+ quat_v = Quatf (v1, v2);
71
+ TEST (isEqual (quat_v.conjugate (v1).normalized () * v2.norm (), v2));
72
+
73
+
45
74
// quat normalization
46
75
q.normalize ();
47
76
TEST (isEqual (q, Quatf (0 .18257419f , 0 .36514837f ,
@@ -297,7 +326,7 @@ int main()
297
326
TEST (isEqual (Dcmf (q), q.to_dcm ()));
298
327
299
328
// conjugate
300
- Vector3f v1 (1 .5f , 2 .2f , 3 .2f );
329
+ v = Vector3f (1 .5f , 2 .2f , 3 .2f );
301
330
TEST (isEqual (q.conjugate_inversed (v1), Dcmf (q).T ()*v1));
302
331
TEST (isEqual (q.conjugate (v1), Dcmf (q)*v1));
303
332
0 commit comments