diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2016-07-04 10:37:46 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2016-07-04 10:37:46 +0200 |
commit | a822de144cd679af6c27262d86884483b1fc634e (patch) | |
tree | 226c0343cae98febdb8bd33d52ecaafc990dd1ea | |
parent | c63688786b535b775cf34c7ad33b3afd238f04bb (diff) |
logic/tracker: get roll for camera centering from inertial centering
It stays centered this way. Sadly yaw and pitch are still somewhat not
fixed in the user's reference frame.
-rw-r--r-- | opentrack-logic/tracker.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/opentrack-logic/tracker.cpp b/opentrack-logic/tracker.cpp index 6557b061..10512059 100644 --- a/opentrack-logic/tracker.cpp +++ b/opentrack-logic/tracker.cpp @@ -177,12 +177,17 @@ void Tracker::logic() rmat m_; switch (s.center_method) { + // inertial case 0: default: m_ = r * r_b.t(); break; + // relative case 1: - m_ = r_b.t() * r; + euler_t degs = rmat_to_euler(r_b.t() * r); + degs(2) = rmat_to_euler(r * r_b.t())(2); + m_ = euler_to_rmat(degs); + break; } const euler_t euler = r2d * rmat_to_euler(m_); |