diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2014-11-10 21:03:29 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2014-11-11 10:32:34 +0100 |
commit | 3514acd1b038e6f906ae2af8b46e626b85724783 (patch) | |
tree | ba99630d5c02c85d43e19c63c967bb1960241149 /opentrack/tracker.cpp | |
parent | fb4f631a62ddbe126d3271d9fa311b3c4f17e701 (diff) |
centering changes
Diffstat (limited to 'opentrack/tracker.cpp')
-rw-r--r-- | opentrack/tracker.cpp | 19 |
1 files changed, 3 insertions, 16 deletions
diff --git a/opentrack/tracker.cpp b/opentrack/tracker.cpp index 4e12132e..8892c85a 100644 --- a/opentrack/tracker.cpp +++ b/opentrack/tracker.cpp @@ -51,22 +51,9 @@ double Tracker::map(double pos, bool invertp, Mapping& axis) // http://stackoverflow.com/a/18436193 static dmat<3, 1> rmat_to_euler(const dmat<3, 3>& R) { - static constexpr double pi = 3.141592653; - const double up = 90 * pi / 180.; - if (R(0, 2) > 0.9991) - { - double roll = atan(R(1, 0) / R(2, 0)); - return dmat<3, 1>({0., up, roll}); - } - if (R(0, 2) < -0.9991) - { - double roll = atan(R(1, 0) / R(2, 0)); - return dmat<3, 1>({0., -up, roll}); - } - // don't use atan2 here, confuses quadrants. see issue #63 -sh - double pitch = asin(R(0, 2)); - double roll = atan(R(1, 2) / R(2, 2)); - double yaw = atan(R(0, 1) / R(0, 0)); + double pitch = asin(-R(0, 2)); + double roll = atan2(R(1, 2), R(2, 2)); + double yaw = atan2(R(0, 1), R(0, 0)); return dmat<3, 1>({yaw, pitch, roll}); } |