00001 // $Id: Hyperbolic.h,v 1.2 2000/01/18 00:42:07 burnett Exp $ 00002 // 00003 00004 #ifndef HYPERBOLIC_H 00005 #define HYPERBOLIC_H 00006 00007 #include "geometry/Surface.h" 00008 00010 class Hyperbolic : public Surface 00011 { 00012 public: 00013 00014 Hyperbolic(const Point& origin, const Vector& axis, double ri, double ro, double h_z); 00015 00016 virtual double how_near( const Point& x ) const; 00017 virtual double distance( const Point& x ,const Vector& v,int) const; 00019 virtual Vector normal( const Point& x )const; 00020 00021 // specify geometry 00022 00023 const Vector& axis()const{return Surface::direction();} 00024 00025 double radius(double z=0)const; 00026 // radius at position z from origin 00027 00028 virtual const char *nameOf() const { return "Hyperbolic"; } 00029 virtual void printOn( std::ostream& os = std::cout ) const; 00030 00031 00032 }; 00033 #endif 00034
1.2.3 written by Dimitri van Heesch,
© 1997-2000