summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ui/accelerometercontrol.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/ui/accelerometercontrol.cpp b/src/ui/accelerometercontrol.cpp
index 1a65afc..1ab7434 100644
--- a/src/ui/accelerometercontrol.cpp
+++ b/src/ui/accelerometercontrol.cpp
@@ -45,8 +45,11 @@ static QVector3D accelerometerY(0, 1, 0);
static QVector3D accelerometerZ(0, 0, -1);
static QVector3D unrotatedGravity(0, 1, 0);
+static const double kEarthGravity = 9.8;
+static const double kZero = 1e-4;
+
AccelerometerControl::AccelerometerControl(QWidget *parent)
- : QGLWidget(parent), mGravity(9.8)
+ : QGLWidget(parent), mGravity(kEarthGravity)
{
}
@@ -307,6 +310,10 @@ QVector3D AccelerometerControl::value() const
newValue.setX(QVector3D::dotProduct(mRotation.conjugate().rotatedVector(accelerometerX), unrotatedGravity));
newValue.setY(QVector3D::dotProduct(mRotation.conjugate().rotatedVector(accelerometerY), unrotatedGravity));
newValue.setZ(QVector3D::dotProduct(mRotation.conjugate().rotatedVector(accelerometerZ), unrotatedGravity));
+ // remove rounding errors
+ if (qAbs(newValue.x()) < kZero) newValue.setX(0);
+ if (qAbs(newValue.y()) < kZero) newValue.setY(0);
+ if (qAbs(newValue.z()) < kZero) newValue.setZ(0);
newValue *= mGravity;
return newValue;