00001 00009 #ifndef _MESHLIB_MOBIUS_H_ 00010 #define _MESHLIB_MOBIUS_H_ 00011 00012 #include <assert.h> 00013 #include <math.h> 00014 #include <complex> 00015 00016 namespace MeshLib{ 00017 00021 typedef std::complex<double> Complex; 00022 00026 class CMobius 00027 { 00028 public: 00032 CMobius(){ m_z0=Complex(0,0); m_theta = std::polar(1.0,0.0);}; 00038 CMobius( Complex z0, double theta ) { m_z0 = z0; m_theta = std::polar(1.0,theta);}; 00042 ~CMobius(){}; 00047 Complex operator*( Complex z ) { return m_theta * (z - m_z0)/(Complex(1.0,0.0)-std::conj(m_z0)*z); }; 00048 00049 protected: 00053 Complex m_theta; 00057 Complex m_z0; 00058 }; 00059 00060 }//name space MeshLib 00061 00062 #endif //_MESHLIB_POINT_H_ defiined