sensorfw
|
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