00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _CYL_BASE_H
00011 #define _CYL_BASE_H
00012
00017 class CylBase
00018 {
00019 public:
00020 CylBase( double x, double y, double z,
00021 double dia, double length, unsigned int numDivs );
00022 CylBase();
00023
00024 void setX( double v );
00025 double getX() const;
00026 void setY( double v );
00027 double getY() const;
00028 void setZ( double v );
00029 double getZ() const;
00030 void setDia( double v );
00031 double getDia() const;
00032 void setLength( double v );
00033 double getLength() const;
00034 void setNumDivs( unsigned int v );
00035 unsigned int getNumDivs() const;
00036 void setIsCylinder( bool v );
00037 bool getIsCylinder() const;
00038
00040 double volume( const CylBase& parent ) const;
00041
00045 double voxelVolume( const CylBase& parent, unsigned int fid ) const;
00046
00057 vector< double > getCoordinates( const CylBase& parent,
00058 unsigned int entry ) const;
00059
00069 double getDiffusionArea(
00070 const CylBase& parent, unsigned int index ) const;
00071
00073 double getMiddleArea(
00074 const CylBase& parent, unsigned int index ) const;
00075
00077 double getVoxelLength() const;
00078
00082
00083 double selectGridSize( double h, double dia1, double granularity )
00084 const;
00085
00086 void matchCubeMeshEntries( const ChemCompt* other,
00087 const CylBase& parent,
00088 unsigned int startIndex,
00089 double granularity,
00090 vector< VoxelJunction >& ret,
00091 bool useCylinderCurve, bool useCylinderCap ) const;
00092
00093 double nearest( double x, double y, double z,
00094 const CylBase& parent,
00095 double& linePos, double& r ) const;
00096
00097 double nearest( double x, double y, double z,
00098 const CylBase& parent,
00099 unsigned int& index ) const;
00100
00101 private:
00103 double x_;
00104 double y_;
00105 double z_;
00106
00107 double dia_;
00108 double length_;
00109 unsigned int numDivs_;
00110 bool isCylinder_;
00111 };
00112
00113 #endif // _CYL_BASE_H