00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef _XYZTransform_H_
00012 #define _XYZTransform_H_
00013
00014 #include "XYZTransformBase.h"
00015
00016 #include <vector>
00017
00018 namespace hippodraw {
00019
00020 class UnaryTransform;
00021
00027 class MDL_HIPPOPLOT_API XYZTransform : public XYZTransformBase
00028 {
00029
00031 UnaryTransform * m_x;
00032
00034 UnaryTransform * m_y;
00035
00037 UnaryTransform * m_z;
00038
00039 public:
00040
00043 XYZTransform ( UnaryTransform * x, UnaryTransform * y, UnaryTransform * z );
00044
00046 XYZTransform ( const XYZTransform & );
00047
00049 virtual ~XYZTransform();
00050
00052 #ifdef CLONE_DEFECT
00053 virtual TransformBase * clone () const;
00054 #else
00055 virtual XYZTransform * clone () const;
00056 #endif
00057
00059 TransformBase * xTransform () const;
00060
00062 TransformBase * yTransform () const;
00063
00065 TransformBase * zTransform () const;
00066
00067 virtual void transform ( double & x, double & y, double & z ) const;
00068
00069 virtual void transform ( std::vector< double > & x,
00070 std::vector< double > & y,
00071 std::vector< double > & z ) const;
00072
00073 virtual void validate ( Range & x, Range & y, Range & z ) const;
00074
00076 virtual const Range & limitX () const;
00077
00079 virtual const Range & limitY () const;
00080
00082 virtual const Range & limitZ () const;
00083
00085 virtual bool isLinearInZ () const;
00086 };
00087
00088 }
00089
00090 #endif // _XYZTransform_H_