qtmobility/examples/sensors/panorama/rotationcontroller.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 11 Jun 2010 14:26:25 +0300
changeset 11 06b8e2af4411
child 14 6fbed849b4f4
permissions -rw-r--r--
Revision: 201021 Kit: 2010123

#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;
}