00001 00012 #include "XYZTransform.h" 00013 00014 #include "UnaryTransform.h" 00015 00016 using std::vector; 00017 00018 XYZTransform::XYZTransform ( UnaryTransform * x, 00019 UnaryTransform * y, 00020 UnaryTransform * z ) 00021 { 00022 m_name = "XYZTransform"; 00023 m_x = x; 00024 m_y = y; 00025 m_z = z; 00026 } 00027 00028 XYZTransform::~XYZTransform () 00029 { 00030 delete m_x; 00031 delete m_y; 00032 delete m_z; 00033 } 00034 00035 XYZTransform::XYZTransform ( const XYZTransform & t ) 00036 : XYZTransformBase ( t ) 00037 { 00038 #ifdef CLONE_DEFECT 00039 m_x = dynamic_cast < UnaryTransform * > ( t.m_x->clone () ); 00040 m_y = dynamic_cast < UnaryTransform * > ( t.m_y->clone () ); 00041 m_z = dynamic_cast < UnaryTransform * > ( t.m_z->clone () ); 00042 #else 00043 m_x = t.m_x->clone (); 00044 m_y = t.m_y->clone (); 00045 m_z = t.m_z->clone (); 00046 #endif 00047 } 00048 00049 #ifdef CLONE_DEFECT 00050 TransformBase * XYZTransform::clone () const 00051 #else 00052 XYZTransform * XYZTransform::clone () const 00053 #endif 00054 { 00055 return new XYZTransform ( *this ); 00056 } 00057 00058 /* virtual */ 00059 void XYZTransform::transform ( double & x, 00060 double & y, 00061 double & z ) const 00062 { 00063 m_x->transform ( x ); 00064 m_y->transform ( y ); 00065 m_z->transform ( z ); 00066 } 00067 00068 /* virtual */ 00069 void 00070 XYZTransform:: 00071 transform ( std::vector< double > & x, 00072 std::vector< double > & y, 00073 std::vector< double > & z ) const 00074 { 00075 m_x->transform ( x ); 00076 m_y->transform ( y ); 00077 m_z->transform ( z ); 00078 } 00079 00080 /* virtual */ 00081 void XYZTransform::validate ( Range & x, Range & y, Range & z ) const 00082 { 00083 m_x->validate ( x ); 00084 m_y->validate ( y ); 00085 m_z->validate ( z ); 00086 } 00087 00088 /* virtual */ 00089 const Range & XYZTransform::limitX () const 00090 { 00091 return m_x->limits (); 00092 } 00093 00094 /* virtual */ 00095 const Range & XYZTransform::limitY () const 00096 { 00097 return m_y->limits (); 00098 } 00099 00100 /* virtual */ 00101 const Range & XYZTransform::limitZ () const 00102 { 00103 return m_z->limits (); 00104 } 00105 00106 TransformBase * XYZTransform::xTransform () const 00107 { 00108 return m_x; 00109 } 00110 00111 TransformBase * XYZTransform::yTransform () const 00112 { 00113 return m_y; 00114 } 00115 00116 TransformBase * XYZTransform::zTransform () const 00117 { 00118 return m_z; 00119 }