00001
00002
00014 #ifndef _PeriodicBinaryTransform_H_
00015 #define _PeriodicBinaryTransform_H_
00016
00017 #ifdef _MSC_VER
00018 #include "msdevstudio/MSconfig.h"
00019 #endif
00020
00021 #include "BinaryTransform.h"
00022
00023 #include "axes/Range.h"
00024
00031 class MDL_HIPPOPLOT_API PeriodicBinaryTransform : public BinaryTransform
00032 {
00033
00034 protected:
00035
00037 Range m_x_limits;
00038
00040 Range m_y_limits;
00041
00043 double m_x_offset;
00044
00046 double m_y_offset;
00047
00049 PeriodicBinaryTransform();
00050
00057 PeriodicBinaryTransform ( UnaryTransform *, bool = false, bool = false,
00058 bool = true, bool = true,
00059 double = -180, double = +180,
00060 double = -90, double = +90);
00061
00063 PeriodicBinaryTransform ( const PeriodicBinaryTransform & );
00064
00065 public:
00066
00068 virtual ~PeriodicBinaryTransform();
00069
00071 virtual const Range & limitX() const;
00072
00074 virtual const Range & limitY() const;
00075
00077 double xOffset() const;
00078
00080 void setXOffset ( double x_offset );
00081
00083 double yOffset() const;
00084
00086 void setYOffset( double y_offset );
00087
00089 double moduloAdd ( double a1, double a2, hippodraw::Axes::Type axis ) const;
00090
00092 double moduloSub ( double s1, double s2, hippodraw::Axes::Type axis ) const;
00093
00095 double moduloAddX ( double x1, double x2 ) const;
00096
00098 double moduloAddY ( double y1, double y2 ) const;
00099
00101 double moduloSubX ( double x1, double x2 ) const;
00102
00104 double moduloSubY ( double y1, double y2 ) const;
00105
00106 };
00107
00108 #endif // _PeriodicBinaryTransform_H_