00001 #ifndef CircleZ_H 00002 #define CircleZ_H 00003 00004 #include "vector3.h" 00005 00008 class CircleZ { 00009 public: 00010 CircleZ(double radius, double z) 00011 : radius_(radius), z_(z) 00012 { } 00014 mesh::Vector3 operator()(double phi) const { 00015 return mesh::Vector3(radius_ * ::cos(phi), radius_ * ::sin(phi), z_); 00016 } 00018 mesh::Vector3 deriv(double phi) const { 00019 return mesh::Vector3(-radius_ * ::sin(phi), radius_ * ::cos(phi), 0.0); 00020 } 00021 private: 00022 double radius_; 00023 double z_; 00024 }; 00025 00026 #endif