|
|
|
@ -94,14 +94,20 @@ public:
@@ -94,14 +94,20 @@ public:
|
|
|
|
|
Vector<Type, 4>() |
|
|
|
|
{ |
|
|
|
|
Quaternion &q = *this; |
|
|
|
|
q(0) = Type(0.5) * Type(sqrt(Type(1) + dcm(0, 0) + |
|
|
|
|
dcm(1, 1) + dcm(2, 2))); |
|
|
|
|
q(1) = Type((dcm(2, 1) - dcm(1, 2)) / |
|
|
|
|
(Type(4) * q(0))); |
|
|
|
|
q(2) = Type((dcm(0, 2) - dcm(2, 0)) / |
|
|
|
|
(Type(4) * q(0))); |
|
|
|
|
q(3) = Type((dcm(1, 0) - dcm(0, 1)) / |
|
|
|
|
(Type(4) * q(0))); |
|
|
|
|
q(0) = 1; |
|
|
|
|
q(1) = 0; |
|
|
|
|
q(2) = 0; |
|
|
|
|
q(3) = 0; |
|
|
|
|
if (((Type(1) + dcm(0, 0) + dcm(1, 1) + dcm(2, 2)) > 0) & (fabsf(q(0)) > 0) ) { |
|
|
|
|
q(0) = Type(0.5) * Type(sqrt(Type(1) + dcm(0, 0) + |
|
|
|
|
dcm(1, 1) + dcm(2, 2))); |
|
|
|
|
q(1) = Type((dcm(2, 1) - dcm(1, 2)) / |
|
|
|
|
(Type(4) * q(0))); |
|
|
|
|
q(2) = Type((dcm(0, 2) - dcm(2, 0)) / |
|
|
|
|
(Type(4) * q(0))); |
|
|
|
|
q(3) = Type((dcm(1, 0) - dcm(0, 1)) / |
|
|
|
|
(Type(4) * q(0))); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|