35 #ifndef AIMS_MOMENT_MOMNORMSTGY_H 36 #define AIMS_MOMENT_MOMNORMSTGY_H 56 template<
class T >
inline 62 double mx = m->
m1()[ 0 ] / m->
m0();
63 double my = m->
m1()[ 1 ] / m->
m0();
64 double mz = m->
m1()[ 2 ] / m->
m0();
66 double tx = (double)p[0] * cx - mx;
67 double ty = (double)p[1] * cy - my;
68 double tz = (double)p[2] * cz - mz;
70 m->
m2()[ 0 ] += tx * tx;
71 m->
m2()[ 1 ] += ty * ty;
72 m->
m2()[ 2 ] += tz * tz;
73 m->
m2()[ 3 ] += tx * ty;
74 m->
m2()[ 4 ] += tx * tz;
75 m->
m2()[ 5 ] += ty * tz;
77 m->
m3()[ 0 ] += tx * tx * tx;
78 m->
m3()[ 1 ] += ty * ty * ty;
79 m->
m3()[ 2 ] += tz * tz * tz;
80 m->
m3()[ 3 ] += tx * tx * ty;
81 m->
m3()[ 4 ] += tx * tx * tz;
82 m->
m3()[ 5 ] += tx * ty * ty;
83 m->
m3()[ 6 ] += ty * ty * tz;
84 m->
m3()[ 7 ] += tx * tz * tz;
85 m->
m3()[ 8 ] += ty * tz * tz;
86 m->
m3()[ 9 ] += tx * ty * tz;
90 template<
class T >
inline 107 for ( z=0; z<dz; z++, it+=olbs )
108 for ( y=0; y<dy; y++, it+=opbl )
109 for ( x=0; x<dx; x++, it++ )
116 m->
m1()[ 0 ] += (double)x * cx;
117 m->
m1()[ 1 ] += (double)y * cy;
118 m->
m1()[ 2 ] += (double)z * cz;
121 double mx = m->
m1()[ 0 ] / m->
m0();
122 double my = m->
m1()[ 1 ] / m->
m0();
123 double mz = m->
m1()[ 2 ] / m->
m0();
130 for ( z=0; z<dz; z++, it+=olbs )
131 for ( y=0; y<dy; y++, it+=opbl )
132 for ( x=0; x<dx; x++, it++ )
134 addVoxel2( m,
Point3d( x, y, z ) );
138 for ( x=0; x<3; x++ ) m->
m1()[ x ] *= ct;
139 for ( x=0; x<6; x++ ) m->
m2()[ x ] *= ct;
140 for ( x=0; x<10; x++ ) m->
m3()[ x ] *= ct;
144 template <
typename T>
159 m->
sum() += bk.size();
160 m->
m0() += bk.size();
162 for( ib=bk.begin(); ib!=eb; ++ib )
164 m->
m1()[ 0 ] += (double)ib->first[0] * cx;
165 m->
m1()[ 1 ] += (double)ib->first[1] * cy;
166 m->
m1()[ 2 ] += (double)ib->first[2] * cz;
169 double mx = m->
m1()[ 0 ] / m->
m0();
170 double my = m->
m1()[ 1 ] / m->
m0();
171 double mz = m->
m1()[ 2 ] / m->
m0();
177 for( ib=bk.begin(); ib!=eb; ++ib )
178 addVoxel2( m, ib->first );
183 for ( x=0; x<3; x++ ) m->
m1()[ x ] *= ct;
184 for ( x=0; x<6; x++ ) m->
m2()[ x ] *= ct;
185 for ( x=0; x<10; x++ ) m->
m3()[ x ] *= ct;
int oLineBetweenSlice() const
int oPointBetweenLine() const
void doit(Moment< T > *, AimsData< T > &, T, int)
std::map< Point3d, T, BucketMapLess > Bucket