00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _TILTEDCYLINDERIF_H_
00012 #define _TILTEDCYLINDERIF_H_
00013
00014 #include "MayDay.H"
00015 #include "RealVect.H"
00016
00017 #include "BaseIF.H"
00018
00019 #include "NamespaceHeader.H"
00020
00022
00025 class TiltedCylinderIF: public BaseIF
00026 {
00027 public:
00029
00034 TiltedCylinderIF(const Real& a_radius,
00035 const RealVect& a_direction,
00036 const RealVect& a_point,
00037 const bool& a_inside);
00038
00040 TiltedCylinderIF(const TiltedCylinderIF& a_inputIF);
00041
00043 virtual ~TiltedCylinderIF();
00044
00046
00049 virtual void GetParams(Real& a_radius,
00050 RealVect& a_direction,
00051 RealVect& a_point,
00052 bool& a_inside) const;
00053
00055
00058 virtual void SetParams(const Real& a_radius,
00059 const RealVect& a_direction,
00060 const RealVect& a_point,
00061 const bool& a_inside);
00062
00064
00067 virtual Real value(const RealVect& a_point) const;
00068
00069 virtual BaseIF* newImplicitFunction() const;
00070
00071 virtual bool fastIntersection(const RealVect& a_low, const RealVect& a_high) const
00072 {return !m_tiltedAxis;}
00073
00074
00075 virtual GeometryService::InOut InsideOutside(const RealVect& a_low, const RealVect& a_high) const ;
00076
00077 protected:
00078 Real m_radius;
00079 RealVect m_direction;
00080 bool m_tiltedAxis;
00081 int m_coordDir;
00082 RealVect m_point;
00083 bool m_inside;
00084
00085 Real m_radius2;
00086 Real m_length2;
00087
00088 private:
00089 TiltedCylinderIF()
00090 {
00091 MayDay::Error("TiltedCylinderIF uses strong construction");
00092 }
00093
00094 void operator=(const TiltedCylinderIF& a_inputIF)
00095 {
00096 MayDay::Error("TiltedCylinderIF doesn't allow assignment");
00097 }
00098 };
00099
00100 #include "NamespaceFooter.H"
00101 #endif