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