diff options
author | Laszlo Agocs <laszlo.agocs@theqtcompany.com> | 2015-11-21 17:16:05 +0100 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@theqtcompany.com> | 2015-11-21 16:17:08 +0000 |
commit | 1f204c48c5f9e3237fd158199e58e3d156a5a70d (patch) | |
tree | b8fd25cb42e45f167c0b9bf8d654cc3f0c81f239 /src/sensehat/qsensehatsensors.cpp | |
parent | ce7b70010dc82cb76f22bd530261e70d8095da3a (diff) |
Report orientation in a Python-compatible manner
Change-Id: Ifc0390439e93751ceb88977b14344576f919afa7
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Diffstat (limited to 'src/sensehat/qsensehatsensors.cpp')
-rw-r--r-- | src/sensehat/qsensehatsensors.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/sensehat/qsensehatsensors.cpp b/src/sensehat/qsensehatsensors.cpp index ce0e098..6f72cae 100644 --- a/src/sensehat/qsensehatsensors.cpp +++ b/src/sensehat/qsensehatsensors.cpp @@ -178,6 +178,12 @@ void QSenseHatSensorsPrivate::update(QSenseHatSensors::UpdateFlags what) } } +static inline qreal toDeg360(qreal rad) +{ + const qreal deg = qRadiansToDegrees(rad); + return deg < 0 ? deg + 360 : deg; +} + void QSenseHatSensorsPrivate::report(const RTIMU_DATA &data, QSenseHatSensors::UpdateFlags what) { if (what.testFlag(QSenseHatSensors::UpdateHumidity)) { @@ -224,7 +230,11 @@ void QSenseHatSensorsPrivate::report(const RTIMU_DATA &data, QSenseHatSensors::U if (what.testFlag(QSenseHatSensors::UpdateOrientation)) { if (data.fusionPoseValid) { - orientation = QVector3D(data.fusionPose.x(), data.fusionPose.y(), data.fusionPose.z()); + // To be compatible with the Python lib's get_orientation(), report + // degrees in range 0..360 and in the order pitch, roll, yaw. + orientation = QVector3D(toDeg360(data.fusionPose.y()), + toDeg360(data.fusionPose.x()), + toDeg360(data.fusionPose.z())); emit q->orientationChanged(orientation); } } |