Fixed sign bug

release/4.3a0
dellaert 2015-02-11 15:00:50 +01:00
parent 9cf6bb3f0f
commit 559da158fe
1 changed files with 5 additions and 4 deletions

View File

@ -96,14 +96,15 @@ struct traits<QUATERNION_TYPE> {
Vector3 omega; Vector3 omega;
const double qw = q.w(); const double qw = q.w();
// See Quaternion-Logmap.nb in doc for Taylor expansions
if (qw > NearlyOne) { if (qw > NearlyOne) {
// Taylor expansion of (angle / s) at 1 // Taylor expansion of (angle / s) at 1
//return (2 + 2 * (1-qw) / 3) * q.vec(); // (2 + 2 * (1-qw) / 3) * q.vec();
omega = ( 8. / 3. - 2. / 3. * qw) * q.vec(); omega = ( 8. / 3. - 2. / 3. * qw) * q.vec();
} else if (qw < NearlyNegativeOne) { } else if (qw < NearlyNegativeOne) {
// Taylor expansion of (angle / s) at -1 // Taylor expansion of (angle / s) at -1
//return (-2 - 2 * (1 + qw) / 3) * q.vec(); // (-2 - 2 * (1 + qw) / 3) * q.vec();
omega = (-8. / 3 + 2. / 3 * qw) * q.vec(); omega = (-8. / 3. - 2. / 3. * qw) * q.vec();
} else { } else {
// Normal, away from zero case // Normal, away from zero case
double angle = 2 * acos(qw), s = sqrt(1 - qw * qw); double angle = 2 * acos(qw), s = sqrt(1 - qw * qw);