Skip to content
This repository was archived by the owner on Nov 17, 2021. It is now read-only.

Commit 9380e80

Browse files
committed
Test: added check for quaternion vector to vector rotation constructor
including all the parallel vector corner cases
1 parent dc93714 commit 9380e80

File tree

1 file changed

+34
-5
lines changed

1 file changed

+34
-5
lines changed

test/attitude.cpp

+34-5
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,7 @@ int main()
2727
TEST(isEqual(e, e));
2828

2929
// 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);
3431
Eulerf euler_copy(v);
3532
TEST(isEqual(euler_copy, euler_check));
3633

@@ -42,6 +39,38 @@ int main()
4239
TEST(fabs(q(2) - 3) < eps);
4340
TEST(fabs(q(3) - 4) < eps);
4441

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+
4574
// quat normalization
4675
q.normalize();
4776
TEST(isEqual(q, Quatf(0.18257419f, 0.36514837f,
@@ -297,7 +326,7 @@ int main()
297326
TEST(isEqual(Dcmf(q), q.to_dcm()));
298327

299328
// conjugate
300-
Vector3f v1(1.5f, 2.2f, 3.2f);
329+
v = Vector3f(1.5f, 2.2f, 3.2f);
301330
TEST(isEqual(q.conjugate_inversed(v1), Dcmf(q).T()*v1));
302331
TEST(isEqual(q.conjugate(v1), Dcmf(q)*v1));
303332

0 commit comments

Comments
 (0)