sensorfw
filters/rotationfilter/rotationfilter.h
Go to the documentation of this file.
00001 
00026 #ifndef ROTATIONFILTER_H
00027 #define ROTATIONFILTER_H
00028 
00029 #include <QObject>
00030 
00031 #include "orientationdata.h"
00032 #include "filter.h"
00033 
00040 class RotationFilter : public QObject, public FilterBase
00041 {
00042     Q_OBJECT;
00043 public:
00048     static FilterBase* factoryMethod()
00049     {
00050         return new RotationFilter();
00051     }
00052 
00053 private:
00054 
00058     RotationFilter();
00059 
00065     double vectorLength(const TimedXyzData& data);
00066 
00067     Sink<RotationFilter, TimedXyzData> accelerometerDataSink_;
00068     Sink<RotationFilter, CompassData> compassDataSink_;
00069     Source<TimedXyzData> source_;
00070 
00071     void interpret(unsigned, const TimedXyzData*);
00072     void updateZvalue(unsigned, const CompassData*);
00073 
00074     inline int dotProduct(TimedXyzData a, TimedXyzData b) const {
00075         return (a.x_ * b.x_) + (a.y_ * b.y_) + (a.z_ * b.z_);
00076     }
00077 
00078     TimedXyzData rotation_;
00079 };
00080 
00081 #endif // ROTATIONFILTER_H