qtmobility/examples/sensors/panorama/rotationcontroller.cpp
changeset 11 06b8e2af4411
child 14 6fbed849b4f4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtmobility/examples/sensors/panorama/rotationcontroller.cpp	Fri Jun 11 14:26:25 2010 +0300
@@ -0,0 +1,40 @@
+#include "inputcontroller.h"
+#include "rotationcontroller.h"
+#include <QTime>
+#include <QDebug>
+#include <math.h>
+
+
+RotationController::RotationController( ): TimedController(), m_factor(0.5){}
+
+void RotationController::startSensor()
+{
+    m_rotationSensor.connectToBackend();
+    m_rotationSensor.start();
+    connect(&m_rotationSensor, SIGNAL(readingChanged()), this, SLOT(update()));
+
+    int dataRate = m_rotationSensor.dataRate();
+    m_interval = dataRate>0?1000/m_rotationSensor.dataRate():20;
+}
+
+void RotationController::stopSensor(){ m_rotationSensor.stop();}
+
+
+void RotationController::update()
+{
+    qreal pitch = m_rotationSensor.reading()->x();
+    qreal roll= m_rotationSensor.reading()->y();
+
+    m_dx = - m_factor* roll;
+    m_dy =  - m_factor * pitch;
+
+    updateCoordinates();
+}
+
+
+void RotationController::updateCoordinates(){
+    m_x +=m_dx * m_delay / m_interval;
+    m_y +=m_dy * m_delay / m_interval;
+}
+
+