00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _SPINE_ENTRY_H
00011 #define _SPINE_ENTRY_H
00012
00017 class SpineEntry
00018 {
00019 public:
00023 SpineEntry( Id shaft, Id head, unsigned int parent );
00027 SpineEntry();
00028
00030 unsigned int parent() const;
00032 void setParent( unsigned int parent );
00033
00035 unsigned int fid() const;
00036
00037 Id shaftId() const;
00038 Id headId() const;
00039
00044 void matchCubeMeshEntriesToHead( const ChemCompt* compt,
00045 unsigned int myIndex,
00046 double granularity, vector< VoxelJunction >& ret ) const;
00047
00051 void matchCubeMeshEntriesToPSD( const ChemCompt* compt,
00052 unsigned int myIndex,
00053 double granularity, vector< VoxelJunction >& ret ) const;
00054
00060 unsigned int matchNeuroMeshEntriesToShaft( const ChemCompt* compt,
00061 unsigned int myIndex,
00062 double& area, double& length ) const;
00063
00065 double volume() const;
00066
00068 void mid( double& x, double& y, double& z ) const;
00069
00071 void apex( double& x, double& y, double& z ) const;
00072
00073 void matchCubeMeshEntries( const ChemCompt* other,
00074 unsigned int myIndex,
00075 double granularity, vector< VoxelJunction >& ret );
00076
00077 double rootArea() const;
00078 double headArea() const;
00079 double diffusionLength() const;
00080
00086 void setVolume( double volume );
00087
00091 void positionShaftBase( double x, double y, double z );
00092
00101 vector< double > psdCoords() const;
00102
00103 private:
00104 CylBase root_;
00105 CylBase shaft_;
00106 CylBase head_;
00107
00110 unsigned int parent_;
00111
00113 Id shaftId_;
00114 Id headId_;
00115 };
00116
00117 #endif // _SPINE_ENTRY_H