35 #ifndef AIMS_TALAIRACH_TALVOLUME_H
36 #define AIMS_TALAIRACH_TALVOLUME_H
47 TalairachVolume(
int dx=157,
int dy=189,
int dz=136,
int cx=78,
int cy=76,
68 template<
class T >
inline
70 int cx,
int cy,
int cz )
73 m_d.setVoxelSize( 1.0f, 1.0f, 1.0f );
75 _translation =
Point3df( (
float)cx, -(
float)cy, -(
float)cz );
77 int cdx = ( dx - cx - 1 > cx ) ? dx - cx - 1 : cx;
78 _scale =
Point3df( (
float)cdx, (
float)( dy - cy - 1 ), (
float)cz );
82 template<
class T >
inline
88 for (
int i=0; i<3; i++ )
89 res[ i ] = res[ i ] * _scale[ i ] + _translation[ i ];
95 template<
class T >
inline
101 for (
int i=0; i<3; i++ )
102 res[ i ] = ( pt[ i ] - _translation[ i ] ) / _scale[ i ];
108 template<
class T >
inline
114 int dy = m_d.getSizeY();
115 int dz = m_d.getSizeZ();
120 for ( k=0; k<dz; k++ )
121 for ( j=0; j<dy; j++ )
122 for ( i=0; i<dx; i++ )
124 pt =
Point3df( (
float)i, (
float)j, (
float)k );
125 npt = fromVolume( pt ) + r;
126 m_d( i, j, k ) = d->at( (
int)npt[ 0 ], (
int)npt[ 1 ], (
int)npt[ 2 ] );
Point3df fromTalairach(const Point3df &)
Point3df toTalairach(const Point3df &)
carto::VolumeRef< T > & volume()
Point3df fromVolume(const TalairachBoxBase &, const Point3df &)
Point3df toVolume(const TalairachBoxBase &, const Point3df &)
carto::VolumeRef< T > & create(const TalairachBoxBase &, const carto::rc_ptr< carto::Volume< T > > &)
TalairachVolume(int dx=157, int dy=189, int dz=136, int cx=78, int cy=76, int dz=85)