34 #ifndef __INCLUDE_MARCHING_CUBES_H__
35 #define __INCLUDE_MARCHING_CUBES_H__
42 #ifndef __INCLUDE_MIST_H__
46 #ifndef __INCLUDE_MIST_FACET__
50 #ifndef __INCLUDE_MIST_VECTOR__
54 #ifndef __INCLUDE_INTERVAL_TREE_H__
70 template<
class V,
class P >
81 node(
const value_type &vv,
const point_type &pp,
const point_type &nn ) : v( vv ), p( pp ), n( nn ) { }
89 template<
typename T >
90 inline size_t number_of_triangles(
const std::vector< T > &sv )
93 for(
size_t i = 0 ; i < sv.size( ) ; i ++ )
95 ret += ( sv[ i ] - 2 );
102 #define __MCFUNC__( name ) \
103 static size_t name( const node_type nda[ 8 ], \
104 vector_type pv[ 12 ], \
105 vector_type nv[ 12 ], \
108 const vector_type &o, \
109 const vector_type &s ) \
111 #define __MCFUNC_DEF__( name ) \
112 template< typename V, typename P > \
113 size_t marching_cubes< V, P >::name( const node_type nda[ 8 ], \
114 vector_type pv[ 12 ], \
115 vector_type nv[ 12 ], \
118 const vector_type &o, \
119 const vector_type &s ) \
121 #define __MCFUNC0__( name ) \
122 __MCFUNC_DEF__( name ) \
127 #define __MCFUNC3__( name, AXIS1, NDA1, NDA2, AXIS2, NDA3, NDA4, AXIS3, NDA5, NDA6 ) \
128 __MCFUNC_DEF__( name ) \
130 interpolation_about_##AXIS1( nda[ NDA1 ], nda[ NDA2 ], pv[ 0 ], nv[ 0 ], th, o, s ); \
131 interpolation_about_##AXIS2( nda[ NDA3 ], nda[ NDA4 ], pv[ 1 ], nv[ 1 ], th, o, s ); \
132 interpolation_about_##AXIS3( nda[ NDA5 ], nda[ NDA6 ], pv[ 2 ], nv[ 2 ], th, o, s ); \
137 #define __MCFUNC4__( name, AXIS1, NDA1, NDA2, AXIS2, NDA3, NDA4, AXIS3, NDA5, NDA6, AXIS4, NDA7, NDA8 ) \
138 __MCFUNC_DEF__( name ) \
140 interpolation_about_##AXIS1( nda[ NDA1 ], nda[ NDA2 ], pv[ 0 ], nv[ 0 ], th, o, s ); \
141 interpolation_about_##AXIS2( nda[ NDA3 ], nda[ NDA4 ], pv[ 1 ], nv[ 1 ], th, o, s ); \
142 interpolation_about_##AXIS3( nda[ NDA5 ], nda[ NDA6 ], pv[ 2 ], nv[ 2 ], th, o, s ); \
143 interpolation_about_##AXIS4( nda[ NDA7 ], nda[ NDA8 ], pv[ 3 ], nv[ 3 ], th, o, s ); \
148 #define __MCFUNC5__( name, AXIS1, NDA1, NDA2, AXIS2, NDA3, NDA4, AXIS3, NDA5, NDA6, AXIS4, NDA7, NDA8, AXIS5, NDA9, NDA10 ) \
149 __MCFUNC_DEF__( name ) \
151 interpolation_about_##AXIS1( nda[ NDA1 ], nda[ NDA2 ], pv[ 0 ], nv[ 0 ], th, o, s ); \
152 interpolation_about_##AXIS2( nda[ NDA3 ], nda[ NDA4 ], pv[ 1 ], nv[ 1 ], th, o, s ); \
153 interpolation_about_##AXIS3( nda[ NDA5 ], nda[ NDA6 ], pv[ 2 ], nv[ 2 ], th, o, s ); \
154 interpolation_about_##AXIS4( nda[ NDA7 ], nda[ NDA8 ], pv[ 3 ], nv[ 3 ], th, o, s ); \
155 interpolation_about_##AXIS5( nda[ NDA9 ], nda[ NDA10 ], pv[ 4 ], nv[ 4 ], th, o, s ); \
160 #define __MCFUNC6_1__( name, AXIS1, NDA1, NDA2, AXIS2, NDA3, NDA4, AXIS3, NDA5, NDA6, AXIS4, NDA7, NDA8, AXIS5, NDA9, NDA10, AXIS6, NDA11, NDA12 ) \
161 __MCFUNC_DEF__( name ) \
163 interpolation_about_##AXIS1( nda[ NDA1 ], nda[ NDA2 ], pv[ 0 ], nv[ 0 ], th, o, s ); \
164 interpolation_about_##AXIS2( nda[ NDA3 ], nda[ NDA4 ], pv[ 1 ], nv[ 1 ], th, o, s ); \
165 interpolation_about_##AXIS3( nda[ NDA5 ], nda[ NDA6 ], pv[ 2 ], nv[ 2 ], th, o, s ); \
166 interpolation_about_##AXIS4( nda[ NDA7 ], nda[ NDA8 ], pv[ 3 ], nv[ 3 ], th, o, s ); \
167 interpolation_about_##AXIS5( nda[ NDA9 ], nda[ NDA10 ], pv[ 4 ], nv[ 4 ], th, o, s ); \
168 interpolation_about_##AXIS6( nda[ NDA11 ], nda[ NDA12 ], pv[ 5 ], nv[ 5 ], th, o, s ); \
174 #define __MCFUNC6_2__( name, AXIS1, NDA1, NDA2, AXIS2, NDA3, NDA4, AXIS3, NDA5, NDA6, AXIS4, NDA7, NDA8, AXIS5, NDA9, NDA10, AXIS6, NDA11, NDA12 ) \
175 __MCFUNC_DEF__( name ) \
177 interpolation_about_##AXIS1( nda[ NDA1 ], nda[ NDA2 ], pv[ 0 ], nv[ 0 ], th, o, s ); \
178 interpolation_about_##AXIS2( nda[ NDA3 ], nda[ NDA4 ], pv[ 1 ], nv[ 1 ], th, o, s ); \
179 interpolation_about_##AXIS3( nda[ NDA5 ], nda[ NDA6 ], pv[ 2 ], nv[ 2 ], th, o, s ); \
180 interpolation_about_##AXIS4( nda[ NDA7 ], nda[ NDA8 ], pv[ 3 ], nv[ 3 ], th, o, s ); \
181 interpolation_about_##AXIS5( nda[ NDA9 ], nda[ NDA10 ], pv[ 4 ], nv[ 4 ], th, o, s ); \
182 interpolation_about_##AXIS6( nda[ NDA11 ], nda[ NDA12 ], pv[ 5 ], nv[ 5 ], th, o, s ); \
187 #define __MCFUNC7_1__( name, AXIS1, NDA1, NDA2, AXIS2, NDA3, NDA4, AXIS3, NDA5, NDA6, AXIS4, NDA7, NDA8, AXIS5, NDA9, NDA10, AXIS6, NDA11, NDA12, AXIS7, NDA13, NDA14 ) \
188 __MCFUNC_DEF__( name ) \
190 interpolation_about_##AXIS1( nda[ NDA1 ], nda[ NDA2 ], pv[ 0 ], nv[ 0 ], th, o, s ); \
191 interpolation_about_##AXIS2( nda[ NDA3 ], nda[ NDA4 ], pv[ 1 ], nv[ 1 ], th, o, s ); \
192 interpolation_about_##AXIS3( nda[ NDA5 ], nda[ NDA6 ], pv[ 2 ], nv[ 2 ], th, o, s ); \
193 interpolation_about_##AXIS4( nda[ NDA7 ], nda[ NDA8 ], pv[ 3 ], nv[ 3 ], th, o, s ); \
194 interpolation_about_##AXIS5( nda[ NDA9 ], nda[ NDA10 ], pv[ 4 ], nv[ 4 ], th, o, s ); \
195 interpolation_about_##AXIS6( nda[ NDA11 ], nda[ NDA12 ], pv[ 5 ], nv[ 5 ], th, o, s ); \
196 interpolation_about_##AXIS7( nda[ NDA13 ], nda[ NDA14 ], pv[ 6 ], nv[ 6 ], th, o, s ); \
202 #define __MCFUNC7_2__( name, AXIS1, NDA1, NDA2, AXIS2, NDA3, NDA4, AXIS3, NDA5, NDA6, AXIS4, NDA7, NDA8, AXIS5, NDA9, NDA10, AXIS6, NDA11, NDA12, AXIS7, NDA13, NDA14 ) \
203 __MCFUNC_DEF__( name ) \
205 interpolation_about_##AXIS1( nda[ NDA1 ], nda[ NDA2 ], pv[ 0 ], nv[ 0 ], th, o, s ); \
206 interpolation_about_##AXIS2( nda[ NDA3 ], nda[ NDA4 ], pv[ 1 ], nv[ 1 ], th, o, s ); \
207 interpolation_about_##AXIS3( nda[ NDA5 ], nda[ NDA6 ], pv[ 2 ], nv[ 2 ], th, o, s ); \
208 interpolation_about_##AXIS4( nda[ NDA7 ], nda[ NDA8 ], pv[ 3 ], nv[ 3 ], th, o, s ); \
209 interpolation_about_##AXIS5( nda[ NDA9 ], nda[ NDA10 ], pv[ 4 ], nv[ 4 ], th, o, s ); \
210 interpolation_about_##AXIS6( nda[ NDA11 ], nda[ NDA12 ], pv[ 5 ], nv[ 5 ], th, o, s ); \
211 interpolation_about_##AXIS7( nda[ NDA13 ], nda[ NDA14 ], pv[ 6 ], nv[ 6 ], th, o, s ); \
216 #define __MCFUNC8_1__( name, AXIS1, NDA1, NDA2, AXIS2, NDA3, NDA4, AXIS3, NDA5, NDA6, AXIS4, NDA7, NDA8, AXIS5, NDA9, NDA10, AXIS6, NDA11, NDA12, AXIS7, NDA13, NDA14, AXIS8, NDA15, NDA16 ) \
217 __MCFUNC_DEF__( name ) \
219 interpolation_about_##AXIS1( nda[ NDA1 ], nda[ NDA2 ], pv[ 0 ], nv[ 0 ], th, o, s ); \
220 interpolation_about_##AXIS2( nda[ NDA3 ], nda[ NDA4 ], pv[ 1 ], nv[ 1 ], th, o, s ); \
221 interpolation_about_##AXIS3( nda[ NDA5 ], nda[ NDA6 ], pv[ 2 ], nv[ 2 ], th, o, s ); \
222 interpolation_about_##AXIS4( nda[ NDA7 ], nda[ NDA8 ], pv[ 3 ], nv[ 3 ], th, o, s ); \
223 interpolation_about_##AXIS5( nda[ NDA9 ], nda[ NDA10 ], pv[ 4 ], nv[ 4 ], th, o, s ); \
224 interpolation_about_##AXIS6( nda[ NDA11 ], nda[ NDA12 ], pv[ 5 ], nv[ 5 ], th, o, s ); \
225 interpolation_about_##AXIS7( nda[ NDA13 ], nda[ NDA14 ], pv[ 6 ], nv[ 6 ], th, o, s ); \
226 interpolation_about_##AXIS8( nda[ NDA15 ], nda[ NDA16 ], pv[ 7 ], nv[ 7 ], th, o, s ); \
232 #define __MCFUNC8_2__( name, AXIS1, NDA1, NDA2, AXIS2, NDA3, NDA4, AXIS3, NDA5, NDA6, AXIS4, NDA7, NDA8, AXIS5, NDA9, NDA10, AXIS6, NDA11, NDA12, AXIS7, NDA13, NDA14, AXIS8, NDA15, NDA16 ) \
233 __MCFUNC_DEF__( name ) \
235 interpolation_about_##AXIS1( nda[ NDA1 ], nda[ NDA2 ], pv[ 0 ], nv[ 0 ], th, o, s ); \
236 interpolation_about_##AXIS2( nda[ NDA3 ], nda[ NDA4 ], pv[ 1 ], nv[ 1 ], th, o, s ); \
237 interpolation_about_##AXIS3( nda[ NDA5 ], nda[ NDA6 ], pv[ 2 ], nv[ 2 ], th, o, s ); \
238 interpolation_about_##AXIS4( nda[ NDA7 ], nda[ NDA8 ], pv[ 3 ], nv[ 3 ], th, o, s ); \
239 interpolation_about_##AXIS5( nda[ NDA9 ], nda[ NDA10 ], pv[ 4 ], nv[ 4 ], th, o, s ); \
240 interpolation_about_##AXIS6( nda[ NDA11 ], nda[ NDA12 ], pv[ 5 ], nv[ 5 ], th, o, s ); \
241 interpolation_about_##AXIS7( nda[ NDA13 ], nda[ NDA14 ], pv[ 6 ], nv[ 6 ], th, o, s ); \
242 interpolation_about_##AXIS8( nda[ NDA15 ], nda[ NDA16 ], pv[ 7 ], nv[ 7 ], th, o, s ); \
248 #define __MCFUNC9_1__( name, AXIS1, NDA1, NDA2, AXIS2, NDA3, NDA4, AXIS3, NDA5, NDA6, AXIS4, NDA7, NDA8, AXIS5, NDA9, NDA10, AXIS6, NDA11, NDA12, AXIS7, NDA13, NDA14, AXIS8, NDA15, NDA16, AXIS9, NDA17, NDA18 ) \
249 __MCFUNC_DEF__( name ) \
251 interpolation_about_##AXIS1( nda[ NDA1 ], nda[ NDA2 ], pv[ 0 ], nv[ 0 ], th, o, s ); \
252 interpolation_about_##AXIS2( nda[ NDA3 ], nda[ NDA4 ], pv[ 1 ], nv[ 1 ], th, o, s ); \
253 interpolation_about_##AXIS3( nda[ NDA5 ], nda[ NDA6 ], pv[ 2 ], nv[ 2 ], th, o, s ); \
254 interpolation_about_##AXIS4( nda[ NDA7 ], nda[ NDA8 ], pv[ 3 ], nv[ 3 ], th, o, s ); \
255 interpolation_about_##AXIS5( nda[ NDA9 ], nda[ NDA10 ], pv[ 4 ], nv[ 4 ], th, o, s ); \
256 interpolation_about_##AXIS6( nda[ NDA11 ], nda[ NDA12 ], pv[ 5 ], nv[ 5 ], th, o, s ); \
257 interpolation_about_##AXIS7( nda[ NDA13 ], nda[ NDA14 ], pv[ 6 ], nv[ 6 ], th, o, s ); \
258 interpolation_about_##AXIS8( nda[ NDA15 ], nda[ NDA16 ], pv[ 7 ], nv[ 7 ], th, o, s ); \
259 interpolation_about_##AXIS9( nda[ NDA17 ], nda[ NDA18 ], pv[ 8 ], nv[ 8 ], th, o, s ); \
266 #define __MCFUNC9_2__( name, AXIS1, NDA1, NDA2, AXIS2, NDA3, NDA4, AXIS3, NDA5, NDA6, AXIS4, NDA7, NDA8, AXIS5, NDA9, NDA10, AXIS6, NDA11, NDA12, AXIS7, NDA13, NDA14, AXIS8, NDA15, NDA16, AXIS9, NDA17, NDA18 ) \
267 __MCFUNC_DEF__( name ) \
269 interpolation_about_##AXIS1( nda[ NDA1 ], nda[ NDA2 ], pv[ 0 ], nv[ 0 ], th, o, s ); \
270 interpolation_about_##AXIS2( nda[ NDA3 ], nda[ NDA4 ], pv[ 1 ], nv[ 1 ], th, o, s ); \
271 interpolation_about_##AXIS3( nda[ NDA5 ], nda[ NDA6 ], pv[ 2 ], nv[ 2 ], th, o, s ); \
272 interpolation_about_##AXIS4( nda[ NDA7 ], nda[ NDA8 ], pv[ 3 ], nv[ 3 ], th, o, s ); \
273 interpolation_about_##AXIS5( nda[ NDA9 ], nda[ NDA10 ], pv[ 4 ], nv[ 4 ], th, o, s ); \
274 interpolation_about_##AXIS6( nda[ NDA11 ], nda[ NDA12 ], pv[ 5 ], nv[ 5 ], th, o, s ); \
275 interpolation_about_##AXIS7( nda[ NDA13 ], nda[ NDA14 ], pv[ 6 ], nv[ 6 ], th, o, s ); \
276 interpolation_about_##AXIS8( nda[ NDA15 ], nda[ NDA16 ], pv[ 7 ], nv[ 7 ], th, o, s ); \
277 interpolation_about_##AXIS9( nda[ NDA17 ], nda[ NDA18 ], pv[ 8 ], nv[ 8 ], th, o, s ); \
283 #define __MCFUNC12__( name, AXIS1, NDA1, NDA2, AXIS2, NDA3, NDA4, AXIS3, NDA5, NDA6, AXIS4, NDA7, NDA8, AXIS5, NDA9, NDA10, AXIS6, NDA11, NDA12, AXIS7, NDA13, NDA14, AXIS8, NDA15, NDA16, AXIS9, NDA17, NDA18, AXIS10, NDA19, NDA20, AXIS11, NDA21, NDA22, AXIS12, NDA23, NDA24 ) \
284 __MCFUNC_DEF__( name ) \
286 interpolation_about_##AXIS1 ( nda[ NDA1 ], nda[ NDA2 ], pv[ 0 ], nv[ 0 ], th, o, s ); \
287 interpolation_about_##AXIS2 ( nda[ NDA3 ], nda[ NDA4 ], pv[ 1 ], nv[ 1 ], th, o, s ); \
288 interpolation_about_##AXIS3 ( nda[ NDA5 ], nda[ NDA6 ], pv[ 2 ], nv[ 2 ], th, o, s ); \
289 interpolation_about_##AXIS4 ( nda[ NDA7 ], nda[ NDA8 ], pv[ 3 ], nv[ 3 ], th, o, s ); \
290 interpolation_about_##AXIS5 ( nda[ NDA9 ], nda[ NDA10 ], pv[ 4 ], nv[ 4 ], th, o, s ); \
291 interpolation_about_##AXIS6 ( nda[ NDA11 ], nda[ NDA12 ], pv[ 5 ], nv[ 5 ], th, o, s ); \
292 interpolation_about_##AXIS7 ( nda[ NDA13 ], nda[ NDA14 ], pv[ 6 ], nv[ 6 ], th, o, s ); \
293 interpolation_about_##AXIS8 ( nda[ NDA15 ], nda[ NDA16 ], pv[ 7 ], nv[ 7 ], th, o, s ); \
294 interpolation_about_##AXIS9 ( nda[ NDA17 ], nda[ NDA18 ], pv[ 8 ], nv[ 8 ], th, o, s ); \
295 interpolation_about_##AXIS10( nda[ NDA19 ], nda[ NDA20 ], pv[ 9 ], nv[ 9 ], th, o, s ); \
296 interpolation_about_##AXIS11( nda[ NDA21 ], nda[ NDA22 ], pv[ 10 ], nv[ 10 ], th, o, s ); \
297 interpolation_about_##AXIS12( nda[ NDA23 ], nda[ NDA24 ], pv[ 11 ], nv[ 11 ], th, o, s ); \
354 template<
typename ARRAY3,
typename P =
double >
376 func_type fa_[ 256 ];
380 bool is_preprocessed_;
385 std::vector< tag_type > active_cube_tags_;
393 marching_cubes( ) : is_preprocessed_( false ), th_( 0 ), o_( 0, 0, 0 ), s_( 1, 1, 1 )
395 init_function_array( );
461 if( is_preprocessed_ )
463 isosurfacing_with_preprocess( va, pv, nv, sv );
467 isosurfacing_without_preprocess( va, pv, nv, sv );
479 if( is_preprocessed_ )
481 isosurfacing_with_preprocess( va, facets );
485 isosurfacing_without_preprocess( va, facets );
498 construct_pointer_difference_array( va );
502 it_.find( th_, active_cube_tags_ );
503 std::sort( active_cube_tags_.begin( ), active_cube_tags_.end( ) );
507 const size_type end = active_cube_tags_.size( );
508 for(
size_type i = begin ; i < end ; i ++ )
510 size_type ptn = construct_cube( va, active_cube_tags_[ i ], nda );
513 isosurfacing_in_cube( nda, pv, nv, sv, ptn );
527 construct_pointer_difference_array( va );
533 for(
size_t k = 0 ; k < va.depth( ) - 1 ; k ++ )
535 for(
size_t j = 0 ; j < va.height( ) - 1 ; j ++ )
537 for(
size_t i = 0 ; i < va.width( ) - 1 ; i ++ )
539 size_type ptn = construct_cube_without_preprocessing( va, i, j, k, nda );
542 isosurfacing_in_cube( nda, pv, nv, sv, ptn );
559 construct_pointer_difference_array( va );
561 it_.find( th_, active_cube_tags_ );
562 std::sort( active_cube_tags_.begin( ), active_cube_tags_.end( ) );
566 const size_type end = active_cube_tags_.size( );
567 for(
size_type i = begin ; i < end ; i ++ )
569 size_type ptn = construct_cube( va, active_cube_tags_[ i ], nda );
572 isosurfacing_in_cube( nda, facets, ptn );
586 construct_pointer_difference_array( va );
590 for(
size_type k = 0 ; k < va.depth( ) - 1 ; k++ )
592 for(
size_type j = 0 ; j < va.height( ) - 1 ; j ++ )
594 for(
size_type i = 0 ; i < va.width( ) - 1 ; i ++ )
596 size_type ptn = construct_cube_without_preprocessing( va, i, j, k, nda );
599 isosurfacing_in_cube( nda, facets, ptn );
612 if( is_preprocessed_ )
617 construct_pointer_difference_array( va );
618 is_preprocessed_ = construct_point_array( va ) && construct_normal_array( va ) && construct_interval_tree( va );
620 if( !is_preprocessed_ )
622 std::cout <<
"can't construct preprocessing data for lack of memory, use non-preprocessing version of marching cubes." << std::endl;
626 return( is_preprocessed_ );
630 void de_preprocess( )
632 destruct_point_array( );
633 destruct_normal_array( );
634 destruct_interval_tree( );
635 is_preprocessed_ =
false;
640 size_type construct_cube(
const image_type &va,
const size_t i, node_type nda[ 8 ] )
const
642 nda[ 0 ].v = va[ i + pda_[ 0 ] ];
643 nda[ 1 ].v = va[ i + pda_[ 1 ] ];
644 nda[ 2 ].v = va[ i + pda_[ 2 ] ];
645 nda[ 3 ].v = va[ i + pda_[ 3 ] ];
646 nda[ 4 ].v = va[ i + pda_[ 4 ] ];
647 nda[ 5 ].v = va[ i + pda_[ 5 ] ];
648 nda[ 6 ].v = va[ i + pda_[ 6 ] ];
649 nda[ 7 ].v = va[ i + pda_[ 7 ] ];
651 size_type ptn = pattern( nda );
653 if( 0 < ptn && ptn < 255 )
655 nda[ 0 ].p = pa_[ i + pda_[ 0 ] ];
656 nda[ 1 ].p = pa_[ i + pda_[ 1 ] ];
657 nda[ 2 ].p = pa_[ i + pda_[ 2 ] ];
658 nda[ 3 ].p = pa_[ i + pda_[ 3 ] ];
659 nda[ 4 ].p = pa_[ i + pda_[ 4 ] ];
660 nda[ 5 ].p = pa_[ i + pda_[ 5 ] ];
661 nda[ 6 ].p = pa_[ i + pda_[ 6 ] ];
662 nda[ 7 ].p = pa_[ i + pda_[ 7 ] ];
664 nda[ 0 ].n = na_[ i + pda_[ 0 ] ];
665 nda[ 1 ].n = na_[ i + pda_[ 1 ] ];
666 nda[ 2 ].n = na_[ i + pda_[ 2 ] ];
667 nda[ 3 ].n = na_[ i + pda_[ 3 ] ];
668 nda[ 4 ].n = na_[ i + pda_[ 4 ] ];
669 nda[ 5 ].n = na_[ i + pda_[ 5 ] ];
670 nda[ 6 ].n = na_[ i + pda_[ 6 ] ];
671 nda[ 7 ].n = na_[ i + pda_[ 7 ] ];
681 size_type construct_cube_without_preprocessing(
const image_type &va,
const size_t i,
const size_t j,
const size_t k, node_type nda[ 8 ] )
const
683 typedef typename image_type::const_pointer const_pointer;
684 const_pointer p0 = &va( i, j, k );
685 const_pointer p1 = p0 + pda_[ 1 ];
686 const_pointer p2 = p0 + pda_[ 2 ];
687 const_pointer p3 = p0 + pda_[ 3 ];
688 const_pointer p4 = p0 + pda_[ 4 ];
689 const_pointer p5 = p0 + pda_[ 5 ];
690 const_pointer p6 = p0 + pda_[ 6 ];
691 const_pointer p7 = p0 + pda_[ 7 ];
693 nda[ 0 ].v = p0[ 0 ];
694 nda[ 1 ].v = p1[ 0 ];
695 nda[ 2 ].v = p2[ 0 ];
696 nda[ 3 ].v = p3[ 0 ];
697 nda[ 4 ].v = p4[ 0 ];
698 nda[ 5 ].v = p5[ 0 ];
699 nda[ 6 ].v = p6[ 0 ];
700 nda[ 7 ].v = p7[ 0 ];
702 size_type ptn = pattern( nda );
704 if( 0 < ptn && ptn < 255 )
706 nda[ 0 ].p = _point( i, j, k );
707 nda[ 1 ].p = _point( i + 1, j, k );
708 nda[ 2 ].p = _point( i, j + 1, k );
709 nda[ 3 ].p = _point( i + 1, j + 1, k );
710 nda[ 4 ].p = _point( i, j, k + 1 );
711 nda[ 5 ].p = _point( i + 1, j, k + 1 );
712 nda[ 6 ].p = _point( i, j + 1, k + 1 );
713 nda[ 7 ].p = _point( i + 1, j + 1, k + 1 );
715 nda[ 0 ].n = __normal( va, i, j, k );
716 nda[ 1 ].n = __normal( va, i + 1, j, k );
717 nda[ 2 ].n = __normal( va, i, j + 1, k );
718 nda[ 3 ].n = __normal( va, i + 1, j + 1, k );
719 nda[ 4 ].n = __normal( va, i, j, k + 1 );
720 nda[ 5 ].n = __normal( va, i + 1, j, k + 1 );
721 nda[ 6 ].n = __normal( va, i, j + 1, k + 1 );
722 nda[ 7 ].n = __normal( va, i + 1, j + 1, k + 1 );
732 void isosurfacing_in_cube(
const node_type nda[ 8 ], vector_list_type &pv, vector_list_type &nv,std::vector< size_type > &sv, size_type ptn )
734 size_type num = fa_[ ptn ]( nda, __p__, __n__, __s__, th_, o_, s_ );
736 vector_type *PP = __p__;
737 vector_type *NN = __n__;
738 for( size_type i = 0 ; i < num ; i++ )
740 size_type s = __s__[ i ];
741 for( size_type j = 0 ; j < s ; j++ )
743 pv.push_back( *PP++ );
744 nv.push_back( *NN++ );
751 void add_facet( facet_list< T > &facets,
const vector_type &p1,
const vector_type &p2,
const vector_type &p3,
const vector_type &n1,
const vector_type &n2,
const vector_type &n3 )
753 vector_type N = n1 + n2 + n3;
755 if( N.length( ) > 0.0 )
759 if( N.inner( ( p2 - p1 ).outer( p3 - p1 ) ) < 0 )
761 facets.push_back(
typename facet_list< T >::facet_type( N, p1, p3, p2 ) );
765 facets.push_back(
typename facet_list< T >::facet_type( N, p1, p2, p3 ) );
770 facets.push_back(
typename facet_list< T >::facet_type( p1, p2, p3 ) );
775 void isosurfacing_in_cube(
const node_type nda[ 8 ], facet_list< T > &facets, size_type ptn )
777 size_type num = fa_[ ptn ]( nda, __p__, __n__, __s__, th_, o_, s_ );
779 vector_type *P = __p__;
780 vector_type *N = __n__;
781 for( size_type i = 0 ; i < num ; i++ )
786 add_facet( facets, P[ 0 ], P[ 1 ], P[ 2 ], N[ 0 ], N[ 1 ], N[ 2 ] );
790 add_facet( facets, P[ 0 ], P[ 1 ], P[ 2 ], N[ 0 ], N[ 1 ], N[ 2 ] );
791 add_facet( facets, P[ 0 ], P[ 2 ], P[ 3 ], N[ 0 ], N[ 2 ], N[ 3 ] );
795 add_facet( facets, P[ 0 ], P[ 1 ], P[ 2 ], N[ 0 ], N[ 1 ], N[ 2 ] );
796 add_facet( facets, P[ 0 ], P[ 2 ], P[ 3 ], N[ 0 ], N[ 2 ], N[ 3 ] );
797 add_facet( facets, P[ 0 ], P[ 3 ], P[ 4 ], N[ 0 ], N[ 3 ], N[ 4 ] );
801 add_facet( facets, P[ 0 ], P[ 1 ], P[ 2 ], N[ 0 ], N[ 1 ], N[ 2 ] );
802 add_facet( facets, P[ 0 ], P[ 2 ], P[ 3 ], N[ 0 ], N[ 2 ], N[ 3 ] );
803 add_facet( facets, P[ 0 ], P[ 3 ], P[ 4 ], N[ 0 ], N[ 3 ], N[ 4 ] );
804 add_facet( facets, P[ 0 ], P[ 4 ], P[ 5 ], N[ 0 ], N[ 4 ], N[ 5 ] );
808 add_facet( facets, P[ 0 ], P[ 1 ], P[ 2 ], N[ 0 ], N[ 1 ], N[ 2 ] );
809 add_facet( facets, P[ 0 ], P[ 2 ], P[ 3 ], N[ 0 ], N[ 2 ], N[ 3 ] );
810 add_facet( facets, P[ 0 ], P[ 3 ], P[ 4 ], N[ 0 ], N[ 3 ], N[ 4 ] );
811 add_facet( facets, P[ 0 ], P[ 4 ], P[ 5 ], N[ 0 ], N[ 4 ], N[ 5 ] );
812 add_facet( facets, P[ 0 ], P[ 5 ], P[ 6 ], N[ 0 ], N[ 5 ], N[ 6 ] );
824 ivector_type _point(
const size_type i,
const size_type j,
const size_type k )
const
826 return( ivector_type( static_cast< typename ivector_type::value_type >( i ), static_cast< typename ivector_type::value_type >( j ), static_cast< typename ivector_type::value_type >( k ) ) );
829 ivector_type _normal(
const image_type &va,
const size_type i,
const size_type j,
const size_type k )
const
831 float_type v1 =
static_cast< float_type
>( _value( va, i - 1, j, k ) - _value( va, i + 1, j, k ) );
832 float_type v2 =
static_cast< float_type
>( _value( va, i, j - 1, k ) - _value( va, i, j + 1, k ) );
833 float_type v3 =
static_cast< float_type
>( _value( va, i, j, k - 1 ) - _value( va, i, j, k + 1 ) );
834 vector_type n = vector_type( v1, v2, v3 ).unit( );
835 return ivector_type( static_cast< typename ivector_type::value_type >( n.x * 32767 ), static_cast< typename ivector_type::value_type >( n.y * 32767 ), static_cast< typename ivector_type::value_type >( n.z * 32767 ) );
838 vector_type __normal(
const image_type &va,
const size_type i,
const size_type j,
const size_type k )
const
840 float_type v1 =
static_cast< float_type
>( _value( va, i - 1, j, k ) - _value( va, i + 1, j, k ) );
841 float_type v2 =
static_cast< float_type
>( _value( va, i, j - 1, k ) - _value( va, i, j + 1, k ) );
842 float_type v3 =
static_cast< float_type
>( _value( va, i, j, k - 1 ) - _value( va, i, j, k + 1 ) );
843 return( vector_type( v1, v2, v3 ) );
846 value_type _value(
const image_type &va,
const size_t i ,
const size_t j,
const size_t k )
const
848 return ( i < va.width( ) && j < va.height( ) && k < va.depth( ) ) ? va( i, j, k ) : value_type( );
851 void construct_pointer_difference_array(
const image_type &va )
853 size_type w = va.width( );
854 size_type h = va.height( );
861 pda_[ 5 ] = w * h + 1;
862 pda_[ 6 ] = w * h + w;
863 pda_[ 7 ] = w * h + w + 1;
866 bool construct_point_array(
const image_type &va )
868 bool ret = pa_.resize( va.width( ), va.height( ), va.depth( ) );
870 for(
size_t k = 0 ; k < pa_.depth( ) ; k ++ )
872 for(
size_t j = 0 ; j < pa_.height( ) ; j ++ )
874 for(
size_t i = 0 ; i < pa_.width( ) ; i ++ )
876 pa_( i, j, k ) = _point( i, j, k );
884 bool construct_normal_array(
const image_type &va )
886 bool ret = na_.resize( va.width( ), va.height( ), va.depth( ) );
888 for(
size_t k = 0 ; k < na_.depth( ) ; k ++ )
890 for(
size_t j = 0 ; j < na_.height( ) ; j ++ )
892 for(
size_t i = 0 ; i < na_.width( ) ; i ++ )
894 na_( i, j, k ) = _normal( va, i, j, k );
902 bool construct_interval_tree(
const image_type &va )
904 std::vector< section_type > secs;
905 min_max_type minimum, maximum;
907 for(
size_t k = 0 ; k < va.depth( ) - 1 ; k ++ )
909 for(
size_t j = 0 ; j < va.height( ) - 1 ; j ++ )
911 for(
size_t i = 0 ; i < va.width( ) - 1 ; i ++ )
913 tag = i + va.width( ) * j + va.width( ) * va.height( ) * k;
914 get_section( va, tag, minimum, maximum );
915 if( minimum != maximum )
917 secs.push_back( section_type( minimum, maximum, tag ) );
922 active_cube_tags_.clear( );
923 active_cube_tags_.reserve( secs.size( ) );
924 return ( it_.construct( secs ) && active_cube_tags_.capacity( ) >= secs.size( ) );
927 void destruct_point_array( )
932 void destruct_normal_array( )
937 void destruct_interval_tree( )
940 active_cube_tags_.clear( );
943 void get_section(
const image_type &va,
const tag_type &tag, min_max_type &minimum, min_max_type &maximum )
const
945 minimum = va[ tag + pda_[ 0 ] ];
946 maximum = va[ tag + pda_[ 0 ] ];
947 for(
size_t i = 1 ; i < 8 ; i ++ )
949 if( va[ tag + pda_[ i ] ] < minimum )
951 minimum = va[ tag + pda_[ i ] ];
953 else if( va[ tag + pda_[ i ] ] > maximum )
955 maximum = va[ tag + pda_[ i ] ];
960 size_type pattern(
const node_type nda[ 8 ] )
const
963 v += nda[ 0 ].v >= th_ ? 1 : 0;
964 v += nda[ 1 ].v >= th_ ? 2 : 0;
965 v += nda[ 2 ].v >= th_ ? 4 : 0;
966 v += nda[ 3 ].v >= th_ ? 8 : 0;
967 v += nda[ 4 ].v >= th_ ? 16 : 0;
968 v += nda[ 5 ].v >= th_ ? 32 : 0;
969 v += nda[ 6 ].v >= th_ ? 64 : 0;
970 v += nda[ 7 ].v >= th_ ? 128 : 0;
974 static void interpolation_about_x(
const node_type &nd0,
const node_type &nd1, vector_type &p, vector_type &n, float_type th,
const vector_type &o,
const vector_type &s )
976 float_type tp =
static_cast< float_type
>( ( nd1.v - th ) / ( static_cast< double >( nd1.v ) - nd0.v ) );
977 p.x = nd0.p.x * tp + nd1.p.x * ( 1 - tp );
981 float_type tn =
static_cast< float_type
>( (
static_cast< float_type
>( nd1.p.x ) - p.x ) / ( nd1.p.x - nd0.p.x ) );
982 n = vector_type( nd0.n.x * tn + nd1.n.x * ( 1 - tn ), nd0.n.y * tn + nd1.n.y * ( 1 - tn ), nd0.n.z * tn + nd1.n.z * ( 1 - tn ) ).unit( );
983 p.x = ( p.x + o.x ) * s.x;
984 p.y = ( p.y + o.y ) * s.y;
985 p.z = ( p.z + o.z ) * s.z;
988 static void interpolation_about_y(
const node_type &nd0,
const node_type &nd1, vector_type &p, vector_type &n, float_type th,
const vector_type &o,
const vector_type &s )
990 float_type tp =
static_cast< float_type
>( ( nd1.v - th ) / ( static_cast< float_type >( nd1.v ) - nd0.v ) );
992 p.y = nd0.p.y * tp + nd1.p.y * ( 1 - tp );
995 float_type tn =
static_cast< float_type
>( (
static_cast< float_type
>( nd1.p.y ) - p.y ) / ( nd1.p.y - nd0.p.y ) );
996 n = vector_type( nd0.n.x * tn + nd1.n.x * ( 1 - tn ), nd0.n.y * tn + nd1.n.y * ( 1 - tn ), nd0.n.z * tn + nd1.n.z * ( 1 - tn ) ).unit( );
997 p.x = ( p.x + o.x ) * s.x;
998 p.y = ( p.y + o.y ) * s.y;
999 p.z = ( p.z + o.z ) * s.z;
1002 static void interpolation_about_z(
const node_type &nd0,
const node_type &nd1, vector_type &p, vector_type &n, float_type th,
const vector_type &o,
const vector_type &s )
1004 float_type tp =
static_cast< float_type
>( ( nd1.v - th ) / ( static_cast< float_type >( nd1.v ) - nd0.v ) );
1007 p.z = nd0.p.z * tp + nd1.p.z * ( 1 - tp );
1009 float_type tn =
static_cast< float_type
>( (
static_cast< float_type
>( nd1.p.z ) - p.z ) / ( nd1.p.z - nd0.p.z ) );
1010 n = vector_type( nd0.n.x * tn + nd1.n.x * ( 1 - tn ), nd0.n.y * tn + nd1.n.y * ( 1 - tn ), nd0.n.z * tn + nd1.n.z * ( 1 - tn ) ).unit( );
1011 p.x = ( p.x + o.x ) * s.x;
1012 p.y = ( p.y + o.y ) * s.y;
1013 p.z = ( p.z + o.z ) * s.z;
1016 void init_function_array( )
1018 fa_[ 0 ] = f000; fa_[ 1 ] = f001; fa_[ 2 ] = f002; fa_[ 3 ] = f003; fa_[ 4 ] = f004; fa_[ 5 ] = f005; fa_[ 6 ] = f006; fa_[ 7 ] = f007;
1019 fa_[ 8 ] = f008; fa_[ 9 ] = f009; fa_[ 10 ] = f010; fa_[ 11 ] = f011; fa_[ 12 ] = f012; fa_[ 13 ] = f013; fa_[ 14 ] = f014; fa_[ 15 ] = f015;
1020 fa_[ 16 ] = f016; fa_[ 17 ] = f017; fa_[ 18 ] = f018; fa_[ 19 ] = f019; fa_[ 20 ] = f020; fa_[ 21 ] = f021; fa_[ 22 ] = f022; fa_[ 23 ] = f023;
1021 fa_[ 24 ] = f024; fa_[ 25 ] = f025; fa_[ 26 ] = f026; fa_[ 27 ] = f027; fa_[ 28 ] = f028; fa_[ 29 ] = f029; fa_[ 30 ] = f030; fa_[ 31 ] = f031;
1022 fa_[ 32 ] = f032; fa_[ 33 ] = f033; fa_[ 34 ] = f034; fa_[ 35 ] = f035; fa_[ 36 ] = f036; fa_[ 37 ] = f037; fa_[ 38 ] = f038; fa_[ 39 ] = f039;
1023 fa_[ 40 ] = f040; fa_[ 41 ] = f041; fa_[ 42 ] = f042; fa_[ 43 ] = f043; fa_[ 44 ] = f044; fa_[ 45 ] = f045; fa_[ 46 ] = f046; fa_[ 47 ] = f047;
1024 fa_[ 48 ] = f048; fa_[ 49 ] = f049; fa_[ 50 ] = f050; fa_[ 51 ] = f051; fa_[ 52 ] = f052; fa_[ 53 ] = f053; fa_[ 54 ] = f054; fa_[ 55 ] = f055;
1025 fa_[ 56 ] = f056; fa_[ 57 ] = f057; fa_[ 58 ] = f058; fa_[ 59 ] = f059; fa_[ 60 ] = f060; fa_[ 61 ] = f061; fa_[ 62 ] = f062; fa_[ 63 ] = f063;
1026 fa_[ 64 ] = f064; fa_[ 65 ] = f065; fa_[ 66 ] = f066; fa_[ 67 ] = f067; fa_[ 68 ] = f068; fa_[ 69 ] = f069; fa_[ 70 ] = f070; fa_[ 71 ] = f071;
1027 fa_[ 72 ] = f072; fa_[ 73 ] = f073; fa_[ 74 ] = f074; fa_[ 75 ] = f075; fa_[ 76 ] = f076; fa_[ 77 ] = f077; fa_[ 78 ] = f078; fa_[ 79 ] = f079;
1028 fa_[ 80 ] = f080; fa_[ 81 ] = f081; fa_[ 82 ] = f082; fa_[ 83 ] = f083; fa_[ 84 ] = f084; fa_[ 85 ] = f085; fa_[ 86 ] = f086; fa_[ 87 ] = f087;
1029 fa_[ 88 ] = f088; fa_[ 89 ] = f089; fa_[ 90 ] = f090; fa_[ 91 ] = f091; fa_[ 92 ] = f092; fa_[ 93 ] = f093; fa_[ 94 ] = f094; fa_[ 95 ] = f095;
1030 fa_[ 96 ] = f096; fa_[ 97 ] = f097; fa_[ 98 ] = f098; fa_[ 99 ] = f099; fa_[ 100 ] = f100; fa_[ 101 ] = f101; fa_[ 102 ] = f102; fa_[ 103 ] = f103;
1031 fa_[ 104 ] = f104; fa_[ 105 ] = f105; fa_[ 106 ] = f106; fa_[ 107 ] = f107; fa_[ 108 ] = f108; fa_[ 109 ] = f109; fa_[ 110 ] = f110; fa_[ 111 ] = f111;
1032 fa_[ 112 ] = f112; fa_[ 113 ] = f113; fa_[ 114 ] = f114; fa_[ 115 ] = f115; fa_[ 116 ] = f116; fa_[ 117 ] = f117; fa_[ 118 ] = f118; fa_[ 119 ] = f119;
1033 fa_[ 120 ] = f120; fa_[ 121 ] = f121; fa_[ 122 ] = f122; fa_[ 123 ] = f123; fa_[ 124 ] = f124; fa_[ 125 ] = f125; fa_[ 126 ] = f126; fa_[ 127 ] = f127;
1034 fa_[ 128 ] = f128; fa_[ 129 ] = f129; fa_[ 130 ] = f130; fa_[ 131 ] = f131; fa_[ 132 ] = f132; fa_[ 133 ] = f133; fa_[ 134 ] = f134; fa_[ 135 ] = f135;
1035 fa_[ 136 ] = f136; fa_[ 137 ] = f137; fa_[ 138 ] = f138; fa_[ 139 ] = f139; fa_[ 140 ] = f140; fa_[ 141 ] = f141; fa_[ 142 ] = f142; fa_[ 143 ] = f143;
1036 fa_[ 144 ] = f144; fa_[ 145 ] = f145; fa_[ 146 ] = f146; fa_[ 147 ] = f147; fa_[ 148 ] = f148; fa_[ 149 ] = f149; fa_[ 150 ] = f150; fa_[ 151 ] = f151;
1037 fa_[ 152 ] = f152; fa_[ 153 ] = f153; fa_[ 154 ] = f154; fa_[ 155 ] = f155; fa_[ 156 ] = f156; fa_[ 157 ] = f157; fa_[ 158 ] = f158; fa_[ 159 ] = f159;
1038 fa_[ 160 ] = f160; fa_[ 161 ] = f161; fa_[ 162 ] = f162; fa_[ 163 ] = f163; fa_[ 164 ] = f164; fa_[ 165 ] = f165; fa_[ 166 ] = f166; fa_[ 167 ] = f167;
1039 fa_[ 168 ] = f168; fa_[ 169 ] = f169; fa_[ 170 ] = f170; fa_[ 171 ] = f171; fa_[ 172 ] = f172; fa_[ 173 ] = f173; fa_[ 174 ] = f174; fa_[ 175 ] = f175;
1040 fa_[ 176 ] = f176; fa_[ 177 ] = f177; fa_[ 178 ] = f178; fa_[ 179 ] = f179; fa_[ 180 ] = f180; fa_[ 181 ] = f181; fa_[ 182 ] = f182; fa_[ 183 ] = f183;
1041 fa_[ 184 ] = f184; fa_[ 185 ] = f185; fa_[ 186 ] = f186; fa_[ 187 ] = f187; fa_[ 188 ] = f188; fa_[ 189 ] = f189; fa_[ 190 ] = f190; fa_[ 191 ] = f191;
1042 fa_[ 192 ] = f192; fa_[ 193 ] = f193; fa_[ 194 ] = f194; fa_[ 195 ] = f195; fa_[ 196 ] = f196; fa_[ 197 ] = f197; fa_[ 198 ] = f198; fa_[ 199 ] = f199;
1043 fa_[ 200 ] = f200; fa_[ 201 ] = f201; fa_[ 202 ] = f202; fa_[ 203 ] = f203; fa_[ 204 ] = f204; fa_[ 205 ] = f205; fa_[ 206 ] = f206; fa_[ 207 ] = f207;
1044 fa_[ 208 ] = f208; fa_[ 209 ] = f209; fa_[ 210 ] = f210; fa_[ 211 ] = f211; fa_[ 212 ] = f212; fa_[ 213 ] = f213; fa_[ 214 ] = f214; fa_[ 215 ] = f215;
1045 fa_[ 216 ] = f216; fa_[ 217 ] = f217; fa_[ 218 ] = f218; fa_[ 219 ] = f219; fa_[ 220 ] = f220; fa_[ 221 ] = f221; fa_[ 222 ] = f222; fa_[ 223 ] = f223;
1046 fa_[ 224 ] = f224; fa_[ 225 ] = f225; fa_[ 226 ] = f226; fa_[ 227 ] = f227; fa_[ 228 ] = f228; fa_[ 229 ] = f229; fa_[ 230 ] = f230; fa_[ 231 ] = f231;
1047 fa_[ 232 ] = f232; fa_[ 233 ] = f233; fa_[ 234 ] = f234; fa_[ 235 ] = f235; fa_[ 236 ] = f236; fa_[ 237 ] = f237; fa_[ 238 ] = f238; fa_[ 239 ] = f239;
1048 fa_[ 240 ] = f240; fa_[ 241 ] = f241; fa_[ 242 ] = f242; fa_[ 243 ] = f243; fa_[ 244 ] = f244; fa_[ 245 ] = f245; fa_[ 246 ] = f246; fa_[ 247 ] = f247;
1049 fa_[ 248 ] = f248; fa_[ 249 ] = f249; fa_[ 250 ] = f250; fa_[ 251 ] = f251; fa_[ 252 ] = f252; fa_[ 253 ] = f253; fa_[ 254 ] = f254; fa_[ 255 ] = f255;
1052 __MCFUNC__( f000 ); __MCFUNC__( f001 ); __MCFUNC__( f002 ); __MCFUNC__( f003 ); __MCFUNC__( f004 ); __MCFUNC__( f005 ); __MCFUNC__( f006 ); __MCFUNC__( f007 ); __MCFUNC__( f008 ); __MCFUNC__( f009 );
1053 __MCFUNC__( f010 ); __MCFUNC__( f011 ); __MCFUNC__( f012 ); __MCFUNC__( f013 ); __MCFUNC__( f014 ); __MCFUNC__( f015 ); __MCFUNC__( f016 ); __MCFUNC__( f017 ); __MCFUNC__( f018 ); __MCFUNC__( f019 );
1054 __MCFUNC__( f020 ); __MCFUNC__( f021 ); __MCFUNC__( f022 ); __MCFUNC__( f023 ); __MCFUNC__( f024 ); __MCFUNC__( f025 ); __MCFUNC__( f026 ); __MCFUNC__( f027 ); __MCFUNC__( f028 ); __MCFUNC__( f029 );
1055 __MCFUNC__( f030 ); __MCFUNC__( f031 ); __MCFUNC__( f032 ); __MCFUNC__( f033 ); __MCFUNC__( f034 ); __MCFUNC__( f035 ); __MCFUNC__( f036 ); __MCFUNC__( f037 ); __MCFUNC__( f038 ); __MCFUNC__( f039 );
1056 __MCFUNC__( f040 ); __MCFUNC__( f041 ); __MCFUNC__( f042 ); __MCFUNC__( f043 ); __MCFUNC__( f044 ); __MCFUNC__( f045 ); __MCFUNC__( f046 ); __MCFUNC__( f047 ); __MCFUNC__( f048 ); __MCFUNC__( f049 );
1057 __MCFUNC__( f050 ); __MCFUNC__( f051 ); __MCFUNC__( f052 ); __MCFUNC__( f053 ); __MCFUNC__( f054 ); __MCFUNC__( f055 ); __MCFUNC__( f056 ); __MCFUNC__( f057 ); __MCFUNC__( f058 ); __MCFUNC__( f059 );
1058 __MCFUNC__( f060 ); __MCFUNC__( f061 ); __MCFUNC__( f062 ); __MCFUNC__( f063 ); __MCFUNC__( f064 ); __MCFUNC__( f065 ); __MCFUNC__( f066 ); __MCFUNC__( f067 ); __MCFUNC__( f068 ); __MCFUNC__( f069 );
1059 __MCFUNC__( f070 ); __MCFUNC__( f071 ); __MCFUNC__( f072 ); __MCFUNC__( f073 ); __MCFUNC__( f074 ); __MCFUNC__( f075 ); __MCFUNC__( f076 ); __MCFUNC__( f077 ); __MCFUNC__( f078 ); __MCFUNC__( f079 );
1060 __MCFUNC__( f080 ); __MCFUNC__( f081 ); __MCFUNC__( f082 ); __MCFUNC__( f083 ); __MCFUNC__( f084 ); __MCFUNC__( f085 ); __MCFUNC__( f086 ); __MCFUNC__( f087 ); __MCFUNC__( f088 ); __MCFUNC__( f089 );
1061 __MCFUNC__( f090 ); __MCFUNC__( f091 ); __MCFUNC__( f092 ); __MCFUNC__( f093 ); __MCFUNC__( f094 ); __MCFUNC__( f095 ); __MCFUNC__( f096 ); __MCFUNC__( f097 ); __MCFUNC__( f098 ); __MCFUNC__( f099 );
1063 __MCFUNC__( f100 ); __MCFUNC__( f101 ); __MCFUNC__( f102 ); __MCFUNC__( f103 ); __MCFUNC__( f104 ); __MCFUNC__( f105 ); __MCFUNC__( f106 ); __MCFUNC__( f107 ); __MCFUNC__( f108 ); __MCFUNC__( f109 );
1064 __MCFUNC__( f110 ); __MCFUNC__( f111 ); __MCFUNC__( f112 ); __MCFUNC__( f113 ); __MCFUNC__( f114 ); __MCFUNC__( f115 ); __MCFUNC__( f116 ); __MCFUNC__( f117 ); __MCFUNC__( f118 ); __MCFUNC__( f119 );
1065 __MCFUNC__( f120 ); __MCFUNC__( f121 ); __MCFUNC__( f122 ); __MCFUNC__( f123 ); __MCFUNC__( f124 ); __MCFUNC__( f125 ); __MCFUNC__( f126 ); __MCFUNC__( f127 ); __MCFUNC__( f128 ); __MCFUNC__( f129 );
1066 __MCFUNC__( f130 ); __MCFUNC__( f131 ); __MCFUNC__( f132 ); __MCFUNC__( f133 ); __MCFUNC__( f134 ); __MCFUNC__( f135 ); __MCFUNC__( f136 ); __MCFUNC__( f137 ); __MCFUNC__( f138 ); __MCFUNC__( f139 );
1067 __MCFUNC__( f140 ); __MCFUNC__( f141 ); __MCFUNC__( f142 ); __MCFUNC__( f143 ); __MCFUNC__( f144 ); __MCFUNC__( f145 ); __MCFUNC__( f146 ); __MCFUNC__( f147 ); __MCFUNC__( f148 ); __MCFUNC__( f149 );
1068 __MCFUNC__( f150 ); __MCFUNC__( f151 ); __MCFUNC__( f152 ); __MCFUNC__( f153 ); __MCFUNC__( f154 ); __MCFUNC__( f155 ); __MCFUNC__( f156 ); __MCFUNC__( f157 ); __MCFUNC__( f158 ); __MCFUNC__( f159 );
1069 __MCFUNC__( f160 ); __MCFUNC__( f161 ); __MCFUNC__( f162 ); __MCFUNC__( f163 ); __MCFUNC__( f164 ); __MCFUNC__( f165 ); __MCFUNC__( f166 ); __MCFUNC__( f167 ); __MCFUNC__( f168 ); __MCFUNC__( f169 );
1070 __MCFUNC__( f170 ); __MCFUNC__( f171 ); __MCFUNC__( f172 ); __MCFUNC__( f173 ); __MCFUNC__( f174 ); __MCFUNC__( f175 ); __MCFUNC__( f176 ); __MCFUNC__( f177 ); __MCFUNC__( f178 ); __MCFUNC__( f179 );
1071 __MCFUNC__( f180 ); __MCFUNC__( f181 ); __MCFUNC__( f182 ); __MCFUNC__( f183 ); __MCFUNC__( f184 ); __MCFUNC__( f185 ); __MCFUNC__( f186 ); __MCFUNC__( f187 ); __MCFUNC__( f188 ); __MCFUNC__( f189 );
1072 __MCFUNC__( f190 ); __MCFUNC__( f191 ); __MCFUNC__( f192 ); __MCFUNC__( f193 ); __MCFUNC__( f194 ); __MCFUNC__( f195 ); __MCFUNC__( f196 ); __MCFUNC__( f197 ); __MCFUNC__( f198 ); __MCFUNC__( f199 );
1074 __MCFUNC__( f200 ); __MCFUNC__( f201 ); __MCFUNC__( f202 ); __MCFUNC__( f203 ); __MCFUNC__( f204 ); __MCFUNC__( f205 ); __MCFUNC__( f206 ); __MCFUNC__( f207 ); __MCFUNC__( f208 ); __MCFUNC__( f209 );
1075 __MCFUNC__( f210 ); __MCFUNC__( f211 ); __MCFUNC__( f212 ); __MCFUNC__( f213 ); __MCFUNC__( f214 ); __MCFUNC__( f215 ); __MCFUNC__( f216 ); __MCFUNC__( f217 ); __MCFUNC__( f218 ); __MCFUNC__( f219 );
1076 __MCFUNC__( f220 ); __MCFUNC__( f221 ); __MCFUNC__( f222 ); __MCFUNC__( f223 ); __MCFUNC__( f224 ); __MCFUNC__( f225 ); __MCFUNC__( f226 ); __MCFUNC__( f227 ); __MCFUNC__( f228 ); __MCFUNC__( f229 );
1077 __MCFUNC__( f230 ); __MCFUNC__( f231 ); __MCFUNC__( f232 ); __MCFUNC__( f233 ); __MCFUNC__( f234 ); __MCFUNC__( f235 ); __MCFUNC__( f236 ); __MCFUNC__( f237 ); __MCFUNC__( f238 ); __MCFUNC__( f239 );
1078 __MCFUNC__( f240 ); __MCFUNC__( f241 ); __MCFUNC__( f242 ); __MCFUNC__( f243 ); __MCFUNC__( f244 ); __MCFUNC__( f245 ); __MCFUNC__( f246 ); __MCFUNC__( f247 ); __MCFUNC__( f248 ); __MCFUNC__( f249 );
1079 __MCFUNC__( f250 ); __MCFUNC__( f251 ); __MCFUNC__( f252 ); __MCFUNC__( f253 ); __MCFUNC__( f254 ); __MCFUNC__( f255 );
1083 __MCFUNC0__( f000 );
1084 __MCFUNC0__( f255 );
1087 __MCFUNC3__( f001, x, 0, 1, y, 0, 2, z, 0, 4 );
1088 __MCFUNC3__( f254, x, 0, 1, z, 0, 4, y, 0, 2 );
1089 __MCFUNC3__( f004, y, 2, 0, x, 2, 3, z, 2, 6 );
1090 __MCFUNC3__( f251, y, 2, 0, z, 2, 6, x, 2, 3 );
1091 __MCFUNC3__( f008, x, 3, 2, y, 3, 1, z, 3, 7 );
1092 __MCFUNC3__( f247, x, 3, 2, z, 3, 7, y, 3, 1 );
1093 __MCFUNC3__( f002, y, 1, 3, x, 1, 0, z, 1, 5 );
1094 __MCFUNC3__( f253, y, 1, 3, z, 1, 5, x, 1, 0 );
1095 __MCFUNC3__( f016, z, 4, 0, y, 4, 6, x, 4, 5 );
1096 __MCFUNC3__( f239, z, 4, 0, x, 4, 5, y, 4, 6 );
1097 __MCFUNC3__( f064, y, 6, 4, z, 6, 2, x, 6, 7 );
1098 __MCFUNC3__( f191, y, 6, 4, x, 6, 7, z, 6, 2 );
1099 __MCFUNC3__( f032, x, 5, 4, y, 5, 7, z, 5, 1 );
1100 __MCFUNC3__( f223, x, 5, 4, z, 5, 1, y, 5, 7 );
1101 __MCFUNC3__( f128, y, 7, 5, x, 7, 6, z, 7, 3 );
1102 __MCFUNC3__( f127, y, 7, 5, z, 7, 3, x, 7, 6 );
1106 __MCFUNC4__( f003, z, 0, 4, z, 1, 5, y, 1, 3, y, 0, 2 )
1107 __MCFUNC4__( f252, z, 0, 4, y, 0, 2, y, 1, 3, z, 1, 5 )
1108 __MCFUNC4__( f005, z, 2, 6, z, 0, 4, x, 0, 1, x, 2, 3 )
1109 __MCFUNC4__( f250, z, 2, 6, x, 2, 3, x, 0, 1, z, 0, 4 )
1110 __MCFUNC4__( f012, z, 3, 7, z, 2, 6, y, 2, 0, y, 3, 1 )
1111 __MCFUNC4__( f243, z, 3, 7, y, 3, 1, y, 2, 0, z, 2, 6 )
1112 __MCFUNC4__( f010, z, 1, 5, z, 3, 7, x, 3, 2, x, 1, 0 )
1113 __MCFUNC4__( f245, z, 1, 5, x, 1, 0, x, 3, 2, z, 3, 7 )
1114 __MCFUNC4__( f017, x, 4, 5, x, 0, 1, y, 0, 2, y, 4, 6 )
1115 __MCFUNC4__( f238, x, 4, 5, y, 4, 6, y, 0, 2, x, 0, 1 )
1116 __MCFUNC4__( f080, x, 6, 7, x, 4, 5, z, 4, 0, z, 6, 2 )
1117 __MCFUNC4__( f175, x, 6, 7, z, 6, 2, z, 4, 0, x, 4, 5 )
1118 __MCFUNC4__( f068, x, 2, 3, x, 6, 7, y, 6, 4, y, 2, 0 )
1119 __MCFUNC4__( f187, x, 2, 3, y, 2, 0, y, 6, 4, x, 6, 7 )
1120 __MCFUNC4__( f048, z, 5, 1, z, 4, 0, y, 4, 6, y, 5, 7 )
1121 __MCFUNC4__( f207, z, 5, 1, y, 5, 7, y, 4, 6, z, 4, 0 )
1122 __MCFUNC4__( f160, z, 7, 3, z, 5, 1, x, 5, 4, x, 7, 6 )
1123 __MCFUNC4__( f095, z, 7, 3, x, 7, 6, x, 5, 4, z, 5, 1 )
1124 __MCFUNC4__( f192, z, 6, 2, z, 7, 3, y, 7, 5, y, 6, 4 )
1125 __MCFUNC4__( f063, z, 6, 2, y, 6, 4, y, 7, 5, z, 7, 3 )
1126 __MCFUNC4__( f034, x, 1, 0, x, 5, 4, y, 5, 7, y, 1, 3 )
1127 __MCFUNC4__( f221, x, 1, 0, y, 1, 3, y, 5, 7, x, 5, 4 )
1128 __MCFUNC4__( f136, x, 7, 6, x, 3, 2, y, 3, 1, y, 7, 5 )
1129 __MCFUNC4__( f119, x, 7, 6, y, 7, 5, y, 3, 1, x, 3, 2 )
1133 __MCFUNC6_1__( f009, x, 0, 1, y, 0, 2, z, 0, 4, y, 3, 1, z, 3, 7, x, 3, 2 )
1134 __MCFUNC6_1__( f006, y, 2, 0, x, 2, 3, z, 2, 6, x, 1, 0, z, 1, 5, y, 1, 3 )
1135 __MCFUNC6_1__( f020, z, 4, 0, y, 4, 6, x, 4, 5, y, 2, 0, x, 2, 3, z, 2, 6 )
1136 __MCFUNC6_1__( f065, y, 6, 4, z, 6, 2, x, 6, 7, z, 0, 4, x, 0, 1, y, 0, 2 )
1137 __MCFUNC6_1__( f096, x, 5, 4, y, 5, 7, z, 5, 1, y, 6, 4, z, 6, 2, x, 6, 7 )
1138 __MCFUNC6_1__( f144, y, 7, 5, x, 7, 6, z, 7, 3, x, 4, 5, z, 4, 0, y, 4, 6 )
1139 __MCFUNC6_1__( f130, z, 1, 5, y, 1, 3, x, 1, 0, y, 7, 5, x, 7, 6, z, 7, 3 )
1140 __MCFUNC6_1__( f040, y, 3, 1, z, 3, 7, x, 3, 2, z, 5, 1, x, 5, 4, y, 5, 7 )
1141 __MCFUNC6_1__( f072, z, 3, 7, x, 3, 2, y, 3, 1, x, 6, 7, y, 6, 4, z, 6, 2 )
1142 __MCFUNC6_1__( f132, x, 2, 3, z, 2, 6, y, 2, 0, z, 7, 3, y, 7, 5, x, 7, 6 )
1143 __MCFUNC6_1__( f033, z, 0, 4, x, 0, 1, y, 0, 2, x, 5, 4, y, 5, 7, z, 5, 1 )
1144 __MCFUNC6_1__( f018, x, 1, 0, z, 1, 5, y, 1, 3, z, 4, 0, y, 4, 6, x, 4, 5 )
1145 __MCFUNC6_2__( f246, z, 0, 4, y, 0, 2, x, 3, 2, z, 3, 7, y, 3, 1, x, 0, 1 )
1146 __MCFUNC6_2__( f249, z, 2, 6, x, 2, 3, y, 1, 3, z, 1, 5, x, 1, 0, y, 2, 0 )
1147 __MCFUNC6_2__( f235, x, 4, 5, y, 4, 6, z, 2, 6, x, 2, 3, y, 2, 0, z, 4, 0 )
1148 __MCFUNC6_2__( f190, x, 6, 7, z, 6, 2, y, 0, 2, x, 0, 1, z, 0, 4, y, 6, 4 )
1149 __MCFUNC6_2__( f159, z, 5, 1, y, 5, 7, x, 6, 7, z, 6, 2, y, 6, 4, x, 5, 4 )
1150 __MCFUNC6_2__( f111, z, 7, 3, x, 7, 6, y, 4, 6, z, 4, 0, x, 4, 5, y, 7, 5 )
1151 __MCFUNC6_2__( f125, x, 1, 0, y, 1, 3, z, 7, 3, x, 7, 6, y, 7, 5, z, 1, 5 )
1152 __MCFUNC6_2__( f215, x, 3, 2, z, 3, 7, y, 5, 7, x, 5, 4, z, 5, 1, y, 3, 1 )
1153 __MCFUNC6_2__( f183, y, 3, 1, x, 3, 2, z, 6, 2, y, 6, 4, x, 6, 7, z, 3, 7 )
1154 __MCFUNC6_2__( f123, y, 2, 0, z, 2, 6, x, 7, 6, y, 7, 5, z, 7, 3, x, 2, 3 )
1155 __MCFUNC6_2__( f222, y, 0, 2, x, 0, 1, z, 5, 1, y, 5, 7, x, 5, 4, z, 0, 4 )
1156 __MCFUNC6_2__( f237, y, 1, 3, z, 1, 5, x, 4, 5, y, 4, 6, z, 4, 0, x, 1, 0 )
1160 __MCFUNC6_1__( f129, x, 0, 1, y, 0, 2, z, 0, 4, z, 7, 3, y, 7, 5, x, 7, 6 )
1161 __MCFUNC6_1__( f126, x, 0, 1, z, 0, 4, y, 0, 2, z, 7, 3, x, 7, 6, y, 7, 5 )
1162 __MCFUNC6_1__( f036, y, 2, 0, x, 2, 3, z, 2, 6, z, 5, 1, x, 5, 4, y, 5, 7 )
1163 __MCFUNC6_1__( f219, y, 2, 0, z, 2, 6, x, 2, 3, z, 5, 1, y, 5, 7, x, 5, 4 )
1164 __MCFUNC6_1__( f024, x, 3, 2, y, 3, 1, z, 3, 7, z, 4, 0, y, 4, 6, x, 4, 5 )
1165 __MCFUNC6_1__( f231, x, 3, 2, z, 3, 7, y, 3, 1, z, 4, 0, x, 4, 5, y, 4, 6 )
1166 __MCFUNC6_1__( f066, y, 1, 3, x, 1, 0, z, 1, 5, z, 6, 2, x, 6, 7, y, 6, 4 )
1167 __MCFUNC6_1__( f189, y, 1, 3, z, 1, 5, x, 1, 0, z, 6, 2, y, 6, 4, x, 6, 7 )
1172 __MCFUNC5__( f007, z, 0, 4, z, 1, 5, y, 1, 3, x, 2, 3, z, 2, 6 )
1173 __MCFUNC5__( f248, z, 0, 4, z, 2, 6, x, 2, 3, y, 1, 3, z, 1, 5 )
1174 __MCFUNC5__( f013, z, 2, 6, z, 0, 4, x, 0, 1, y, 3, 1, z, 3, 7 )
1175 __MCFUNC5__( f242, z, 2, 6, z, 3, 7, y, 3, 1, x, 0, 1, z, 0, 4 )
1176 __MCFUNC5__( f014, z, 3, 7, z, 2, 6, y, 2, 0, x, 1, 0, z, 1, 5 )
1177 __MCFUNC5__( f241, z, 3, 7, z, 1, 5, x, 1, 0, y, 2, 0, z, 2, 6 )
1178 __MCFUNC5__( f011, z, 1, 5, z, 3, 7, x, 3, 2, y, 0, 2, z, 0, 4 )
1179 __MCFUNC5__( f244, z, 1, 5, z, 0, 4, y, 0, 2, x, 3, 2, z, 3, 7 )
1180 __MCFUNC5__( f081, x, 4, 5, x, 0, 1, y, 0, 2, z, 6, 2, x, 6, 7 )
1181 __MCFUNC5__( f174, x, 4, 5, x, 6, 7, z, 6, 2, y, 0, 2, x, 0, 1 )
1182 __MCFUNC5__( f084, x, 6, 7, x, 4, 5, z, 4, 0, y, 2, 0, x, 2, 3 )
1183 __MCFUNC5__( f171, x, 6, 7, x, 2, 3, y, 2, 0, z, 4, 0, x, 4, 5 )
1184 __MCFUNC5__( f069, x, 2, 3, x, 6, 7, y, 6, 4, z, 0, 4, x, 0, 1 )
1185 __MCFUNC5__( f186, x, 2, 3, x, 0, 1, z, 0, 4, y, 6, 4, x, 6, 7 )
1186 __MCFUNC5__( f021, x, 0, 1, x, 2, 3, z, 2, 6, y, 4, 6, x, 4, 5 )
1187 __MCFUNC5__( f234, x, 0, 1, x, 4, 5, y, 4, 6, z, 2, 6, x, 2, 3 )
1188 __MCFUNC5__( f176, z, 5, 1, z, 4, 0, y, 4, 6, x, 7, 6, z, 7, 3 )
1189 __MCFUNC5__( f079, z, 5, 1, z, 7, 3, x, 7, 6, y, 4, 6, z, 4, 0 )
1190 __MCFUNC5__( f224, z, 7, 3, z, 5, 1, x, 5, 4, y, 6, 4, z, 6, 2 )
1191 __MCFUNC5__( f031, z, 7, 3, z, 6, 2, y, 6, 4, x, 5, 4, z, 5, 1 )
1192 __MCFUNC5__( f208, z, 6, 2, z, 7, 3, y, 7, 5, x, 4, 5, z, 4, 0 )
1193 __MCFUNC5__( f047, z, 6, 2, z, 4, 0, x, 4, 5, y, 7, 5, z, 7, 3 )
1194 __MCFUNC5__( f112, z, 4, 0, z, 6, 2, x, 6, 7, y, 5, 7, z, 5, 1 )
1195 __MCFUNC5__( f143, z, 4, 0, z, 5, 1, y, 5, 7, x, 6, 7, z, 6, 2 )
1196 __MCFUNC5__( f042, x, 1, 0, x, 5, 4, y, 5, 7, z, 3, 7, x, 3, 2 )
1197 __MCFUNC5__( f213, x, 1, 0, x, 3, 2, z, 3, 7, y, 5, 7, x, 5, 4 )
1198 __MCFUNC5__( f138, x, 3, 2, x, 1, 0, z, 1, 5, y, 7, 5, x, 7, 6 )
1199 __MCFUNC5__( f117, x, 3, 2, x, 7, 6, y, 7, 5, z, 1, 5, x, 1, 0 )
1200 __MCFUNC5__( f168, x, 7, 6, x, 3, 2, y, 3, 1, z, 5, 1, x, 5, 4 )
1201 __MCFUNC5__( f087, x, 7, 6, x, 5, 4, z, 5, 1, y, 3, 1, x, 3, 2 )
1202 __MCFUNC5__( f162, x, 5, 4, x, 7, 6, z, 7, 3, y, 1, 3, x, 1, 0 )
1203 __MCFUNC5__( f093, x, 5, 4, x, 1, 0, y, 1, 3, z, 7, 3, x, 7, 6 )
1204 __MCFUNC5__( f140, y, 3, 1, y, 7, 5, x, 7, 6, z, 2, 6, y, 2, 0 )
1205 __MCFUNC5__( f115, y, 3, 1, y, 2, 0, z, 2, 6, x, 7, 6, y, 7, 5 )
1206 __MCFUNC5__( f076, y, 2, 0, y, 3, 1, z, 3, 7, x, 6, 7, y, 6, 4 )
1207 __MCFUNC5__( f179, y, 2, 0, y, 6, 4, x, 6, 7, z, 3, 7, y, 3, 1 )
1208 __MCFUNC5__( f196, y, 6, 4, y, 2, 0, x, 2, 3, z, 7, 3, y, 7, 5 )
1209 __MCFUNC5__( f059, y, 6, 4, y, 7, 5, z, 7, 3, x, 2, 3, y, 2, 0 )
1210 __MCFUNC5__( f200, y, 7, 5, y, 6, 4, z, 6, 2, x, 3, 2, y, 3, 1 )
1211 __MCFUNC5__( f055, y, 7, 5, y, 3, 1, x, 3, 2, z, 6, 2, y, 6, 4 )
1212 __MCFUNC5__( f019, y, 0, 2, y, 4, 6, x, 4, 5, z, 1, 5, y, 1, 3 )
1213 __MCFUNC5__( f236, y, 0, 2, y, 1, 3, z, 1, 5, x, 4, 5, y, 4, 6 )
1214 __MCFUNC5__( f035, y, 1, 3, y, 0, 2, z, 0, 4, x, 5, 4, y, 5, 7 )
1215 __MCFUNC5__( f220, y, 1, 3, y, 5, 7, x, 5, 4, z, 0, 4, y, 0, 2 )
1216 __MCFUNC5__( f050, y, 5, 7, y, 1, 3, x, 1, 0, z, 4, 0, y, 4, 6 )
1217 __MCFUNC5__( f205, y, 5, 7, y, 4, 6, z, 4, 0, x, 1, 0, y, 1, 3 )
1218 __MCFUNC5__( f049, y, 4, 6, y, 5, 7, z, 5, 1, x, 0, 1, y, 0, 2 )
1219 __MCFUNC5__( f206, y, 4, 6, y, 0, 2, x, 0, 1, z, 5, 1, y, 5, 7 )
1223 __MCFUNC7_1__( f067, z, 0, 4, z, 1, 5, y, 1, 3, y, 0, 2, z, 6, 2, x, 6, 7, y, 6, 4 )
1224 __MCFUNC7_1__( f133, z, 2, 6, z, 0, 4, x, 0, 1, x, 2, 3, z, 7, 3, y, 7, 5, x, 7, 6 )
1225 __MCFUNC7_1__( f044, z, 3, 7, z, 2, 6, y, 2, 0, y, 3, 1, z, 5, 1, x, 5, 4, y, 5, 7 )
1226 __MCFUNC7_1__( f026, z, 1, 5, z, 3, 7, x, 3, 2, x, 1, 0, z, 4, 0, y, 4, 6, x, 4, 5 )
1227 __MCFUNC7_1__( f145, x, 4, 5, x, 0, 1, y, 0, 2, y, 4, 6, x, 7, 6, z, 7, 3, y, 7, 5 )
1228 __MCFUNC7_1__( f088, x, 6, 7, x, 4, 5, z, 4, 0, z, 6, 2, x, 3, 2, y, 3, 1, z, 3, 7 )
1229 __MCFUNC7_1__( f070, x, 2, 3, x, 6, 7, y, 6, 4, y, 2, 0, x, 1, 0, z, 1, 5, y, 1, 3 )
1230 __MCFUNC7_1__( f037, x, 0, 1, x, 2, 3, z, 2, 6, z, 0, 4, x, 5, 4, y, 5, 7, z, 5, 1 )
1231 __MCFUNC7_1__( f056, z, 5, 1, z, 4, 0, y, 4, 6, y, 5, 7, z, 3, 7, x, 3, 2, y, 3, 1 )
1232 __MCFUNC7_1__( f164, z, 7, 3, z, 5, 1, x, 5, 4, x, 7, 6, z, 2, 6, y, 2, 0, x, 2, 3 )
1233 __MCFUNC7_1__( f193, z, 6, 2, z, 7, 3, y, 7, 5, y, 6, 4, z, 0, 4, x, 0, 1, y, 0, 2 )
1234 __MCFUNC7_1__( f082, z, 4, 0, z, 6, 2, x, 6, 7, x, 4, 5, z, 1, 5, y, 1, 3, x, 1, 0 )
1235 __MCFUNC7_1__( f038, x, 1, 0, x, 5, 4, y, 5, 7, y, 1, 3, x, 2, 3, z, 2, 6, y, 2, 0 )
1236 __MCFUNC7_1__( f074, x, 3, 2, x, 1, 0, z, 1, 5, z, 3, 7, x, 6, 7, y, 6, 4, z, 6, 2 )
1237 __MCFUNC7_1__( f152, x, 7, 6, x, 3, 2, y, 3, 1, y, 7, 5, x, 4, 5, z, 4, 0, y, 4, 6 )
1238 __MCFUNC7_1__( f161, x, 5, 4, x, 7, 6, z, 7, 3, z, 5, 1, x, 0, 1, y, 0, 2, z, 0, 4 )
1239 __MCFUNC7_1__( f137, y, 3, 1, y, 7, 5, x, 7, 6, x, 3, 2, y, 0, 2, z, 0, 4, x, 0, 1 )
1240 __MCFUNC7_1__( f028, y, 2, 0, y, 3, 1, z, 3, 7, z, 2, 6, y, 4, 6, x, 4, 5, z, 4, 0 )
1241 __MCFUNC7_1__( f100, y, 6, 4, y, 2, 0, x, 2, 3, x, 6, 7, y, 5, 7, z, 5, 1, x, 5, 4 )
1242 __MCFUNC7_1__( f194, y, 7, 5, y, 6, 4, z, 6, 2, z, 7, 3, y, 1, 3, x, 1, 0, z, 1, 5 )
1243 __MCFUNC7_1__( f025, y, 0, 2, y, 4, 6, x, 4, 5, x, 0, 1, y, 3, 1, z, 3, 7, x, 3, 2 )
1244 __MCFUNC7_1__( f131, y, 1, 3, y, 0, 2, z, 0, 4, z, 1, 5, y, 7, 5, x, 7, 6, z, 7, 3 )
1245 __MCFUNC7_1__( f098, y, 5, 7, y, 1, 3, x, 1, 0, x, 5, 4, y, 6, 4, z, 6, 2, x, 6, 7 )
1246 __MCFUNC7_1__( f052, y, 4, 6, y, 5, 7, z, 5, 1, z, 4, 0, y, 2, 0, x, 2, 3, z, 2, 6 )
1247 __MCFUNC7_2__( f188, x, 6, 7, x, 6, 7, y, 0, 2, y, 1, 3, z, 1, 5, z, 0, 4, y, 6, 4 )
1248 __MCFUNC7_2__( f122, y, 7, 5, y, 7, 5, x, 2, 3, x, 0, 1, z, 0, 4, z, 2, 6, x, 7, 6 )
1249 __MCFUNC7_2__( f211, x, 5, 4, x, 5, 4, y, 3, 1, y, 2, 0, z, 2, 6, z, 3, 7, y, 5, 7 )
1250 __MCFUNC7_2__( f229, y, 4, 6, y, 4, 6, x, 1, 0, x, 3, 2, z, 3, 7, z, 1, 5, x, 4, 5 )
1251 __MCFUNC7_2__( f110, z, 7, 3, z, 7, 3, y, 4, 6, y, 0, 2, x, 0, 1, x, 4, 5, y, 7, 5 )
1252 __MCFUNC7_2__( f167, y, 3, 1, y, 3, 1, z, 6, 2, z, 4, 0, x, 4, 5, x, 6, 7, z, 3, 7 )
1253 __MCFUNC7_2__( f185, z, 1, 5, z, 1, 5, y, 2, 0, y, 6, 4, x, 6, 7, x, 2, 3, y, 1, 3 )
1254 __MCFUNC7_2__( f218, y, 5, 7, y, 5, 7, z, 0, 4, z, 2, 6, x, 2, 3, x, 0, 1, z, 5, 1 )
1255 __MCFUNC7_2__( f199, x, 3, 2, x, 3, 2, y, 5, 7, y, 4, 6, z, 4, 0, z, 5, 1, y, 3, 1 )
1256 __MCFUNC7_2__( f091, y, 2, 0, y, 2, 0, x, 7, 6, x, 5, 4, z, 5, 1, z, 7, 3, x, 2, 3 )
1257 __MCFUNC7_2__( f062, x, 0, 1, x, 0, 1, y, 6, 4, y, 7, 5, z, 7, 3, z, 6, 2, y, 0, 2 )
1258 __MCFUNC7_2__( f173, y, 1, 3, y, 1, 3, x, 4, 5, x, 6, 7, z, 6, 2, z, 4, 0, x, 1, 0 )
1259 __MCFUNC7_2__( f217, z, 2, 6, z, 2, 6, y, 1, 3, y, 5, 7, x, 5, 4, x, 1, 0, y, 2, 0 )
1260 __MCFUNC7_2__( f181, y, 6, 4, y, 6, 4, z, 3, 7, z, 1, 5, x, 1, 0, x, 3, 2, z, 6, 2 )
1261 __MCFUNC7_2__( f103, z, 4, 0, z, 4, 0, y, 7, 5, y, 3, 1, x, 3, 2, x, 7, 6, y, 4, 6 )
1262 __MCFUNC7_2__( f094, y, 0, 2, y, 0, 2, z, 5, 1, z, 7, 3, x, 7, 6, x, 5, 4, z, 0, 4 )
1263 __MCFUNC7_2__( f118, z, 0, 4, z, 0, 4, x, 3, 2, x, 7, 6, y, 7, 5, y, 3, 1, x, 0, 1 )
1264 __MCFUNC7_2__( f227, x, 4, 5, x, 4, 5, z, 2, 6, z, 3, 7, y, 3, 1, y, 2, 0, z, 4, 0 )
1265 __MCFUNC7_2__( f155, z, 5, 1, z, 5, 1, x, 6, 7, x, 2, 3, y, 2, 0, y, 6, 4, x, 5, 4 )
1266 __MCFUNC7_2__( f061, x, 1, 0, x, 1, 0, z, 7, 3, z, 6, 2, y, 6, 4, y, 7, 5, z, 1, 5 )
1267 __MCFUNC7_2__( f230, z, 3, 7, z, 3, 7, x, 0, 1, x, 4, 5, y, 4, 6, y, 0, 2, x, 3, 2 )
1268 __MCFUNC7_2__( f124, x, 7, 6, x, 7, 6, z, 1, 5, z, 0, 4, y, 0, 2, y, 1, 3, z, 7, 3 )
1269 __MCFUNC7_2__( f157, z, 6, 2, z, 6, 2, x, 5, 4, x, 1, 0, y, 1, 3, y, 5, 7, x, 6, 7 )
1270 __MCFUNC7_2__( f203, x, 2, 3, x, 2, 3, z, 4, 0, z, 5, 1, y, 5, 7, y, 4, 6, z, 2, 6 )
1274 __MCFUNC9_1__( f041, x, 0, 1, y, 0, 2, z, 0, 4, y, 3, 1, z, 3, 7, x, 3, 2, z, 5, 1, x, 5, 4, y, 5, 7 )
1275 __MCFUNC9_1__( f022, y, 2, 0, x, 2, 3, z, 2, 6, x, 1, 0, z, 1, 5, y, 1, 3, z, 4, 0, y, 4, 6, x, 4, 5 )
1276 __MCFUNC9_1__( f073, x, 3, 2, y, 3, 1, z, 3, 7, y, 0, 2, z, 0, 4, x, 0, 1, z, 6, 2, x, 6, 7, y, 6, 4 )
1277 __MCFUNC9_1__( f134, y, 1, 3, x, 1, 0, z, 1, 5, x, 2, 3, z, 2, 6, y, 2, 0, z, 7, 3, y, 7, 5, x, 7, 6 )
1278 __MCFUNC9_1__( f097, y, 6, 4, z, 6, 2, x, 6, 7, z, 0, 4, x, 0, 1, y, 0, 2, x, 5, 4, y, 5, 7, z, 5, 1 )
1279 __MCFUNC9_1__( f148, z, 2, 6, y, 2, 0, x, 2, 3, y, 4, 6, x, 4, 5, z, 4, 0, x, 7, 6, z, 7, 3, y, 7, 5 )
1280 __MCFUNC9_1__( f146, y, 7, 5, x, 7, 6, z, 7, 3, x, 4, 5, z, 4, 0, y, 4, 6, z, 1, 5, y, 1, 3, x, 1, 0 )
1281 __MCFUNC9_1__( f104, x, 6, 7, y, 6, 4, z, 6, 2, y, 5, 7, z, 5, 1, x, 5, 4, z, 3, 7, x, 3, 2, y, 3, 1 )
1282 __MCFUNC9_2__( f214, x, 1, 0, z, 1, 5, y, 1, 3, z, 0, 4, y, 2, 0, x, 3, 2, z, 7, 3, y, 5, 7, x, 4, 5 )
1283 __MCFUNC9_2__( f233, y, 0, 2, z, 0, 4, x, 0, 1, z, 2, 6, x, 3, 2, y, 1, 3, z, 5, 1, x, 4, 5, y, 6, 4 )
1284 __MCFUNC9_2__( f182, x, 2, 3, z, 2, 6, y, 2, 0, z, 3, 7, y, 1, 3, x, 0, 1, z, 4, 0, y, 6, 4, x, 7, 6 )
1285 __MCFUNC9_2__( f121, y, 3, 1, z, 3, 7, x, 3, 2, z, 1, 5, x, 0, 1, y, 2, 0, z, 6, 2, x, 7, 6, y, 5, 7 )
1286 __MCFUNC9_2__( f158, y, 4, 6, x, 4, 5, z, 4, 0, x, 6, 7, z, 2, 6, y, 0, 2, x, 1, 0, z, 5, 1, y, 7, 5 )
1287 __MCFUNC9_2__( f107, z, 6, 2, x, 6, 7, y, 6, 4, x, 2, 3, y, 0, 2, z, 4, 0, x, 5, 4, y, 7, 5, z, 3, 7 )
1288 __MCFUNC9_2__( f109, y, 5, 7, z, 5, 1, x, 5, 4, z, 7, 3, x, 6, 7, y, 4, 6, z, 0, 4, x, 1, 0, y, 3, 1 )
1289 __MCFUNC9_2__( f151, x, 7, 6, z, 7, 3, y, 7, 5, z, 6, 2, y, 4, 6, x, 5, 4, z, 1, 5, y, 3, 1, x, 2, 3 )
1293 __MCFUNC4__( f015, z, 0, 4, z, 1, 5, z, 3, 7, z, 2, 6 )
1294 __MCFUNC4__( f085, x, 4, 5, x, 0, 1, x, 2, 3, x, 6, 7 )
1295 __MCFUNC4__( f240, z, 5, 1, z, 4, 0, z, 6, 2, z, 7, 3 )
1296 __MCFUNC4__( f170, x, 1, 0, x, 5, 4, x, 7, 6, x, 3, 2 )
1297 __MCFUNC4__( f204, y, 3, 1, y, 7, 5, y, 6, 4, y, 2, 0 )
1298 __MCFUNC4__( f051, y, 0, 2, y, 4, 6, y, 5, 7, y, 1, 3 )
1302 __MCFUNC6_2__( f023, z, 1, 5, y, 3, 1, x, 2, 3, z, 6, 2, y, 4, 6, x, 5, 4 )
1303 __MCFUNC6_2__( f077, z, 0, 4, x, 1, 0, y, 3, 1, z, 7, 3, x, 6, 7, y, 4, 6 )
1304 __MCFUNC6_2__( f142, z, 2, 6, y, 0, 2, x, 1, 0, z, 5, 1, y, 7, 5, x, 6, 7 )
1305 __MCFUNC6_2__( f043, z, 3, 7, x, 2, 3, y, 0, 2, z, 4, 0, x, 5, 4, y, 7, 5 )
1306 __MCFUNC6_2__( f113, x, 0, 1, y, 2, 0, z, 6, 2, x, 7, 6, y, 5, 7, z, 1, 5 )
1307 __MCFUNC6_2__( f212, x, 4, 5, z, 0, 4, y, 2, 0, x, 3, 2, z, 7, 3, y, 5, 7 )
1308 __MCFUNC6_2__( f178, z, 4, 0, y, 6, 4, x, 7, 6, z, 3, 7, y, 1, 3, x, 0, 1 )
1309 __MCFUNC6_2__( f232, z, 5, 1, x, 4, 5, y, 6, 4, z, 2, 6, x, 3, 2, y, 1, 3 )
1313 __MCFUNC6_2__( f039, y, 1, 3, x, 2, 3, z, 2, 6, z, 0, 4, x, 5, 4, y, 5, 7 )
1314 __MCFUNC6_2__( f029, x, 0, 1, y, 3, 1, z, 3, 7, z, 2, 6, y, 4, 6, x, 4, 5 )
1315 __MCFUNC6_2__( f078, y, 2, 0, x, 1, 0, z, 1, 5, z, 3, 7, x, 6, 7, y, 6, 4 )
1316 __MCFUNC6_2__( f139, x, 3, 2, y, 0, 2, z, 0, 4, z, 1, 5, y, 7, 5, x, 7, 6 )
1317 __MCFUNC6_2__( f083, y, 0, 2, z, 6, 2, x, 6, 7, x, 4, 5, z, 1, 5, y, 1, 3 )
1318 __MCFUNC6_2__( f116, z, 4, 0, y, 2, 0, x, 2, 3, x, 6, 7, y, 5, 7, z, 5, 1 )
1319 __MCFUNC6_2__( f197, y, 6, 4, z, 0, 4, x, 0, 1, x, 2, 3, z, 7, 3, y, 7, 5 )
1320 __MCFUNC6_2__( f177, y, 4, 6, x, 7, 6, z, 7, 3, z, 5, 1, x, 0, 1, y, 0, 2 )
1321 __MCFUNC6_2__( f226, x, 5, 4, y, 6, 4, z, 6, 2, z, 7, 3, y, 1, 3, x, 1, 0 )
1322 __MCFUNC6_2__( f216, y, 7, 5, x, 4, 5, z, 4, 0, z, 6, 2, x, 3, 2, y, 3, 1 )
1323 __MCFUNC6_2__( f058, y, 5, 7, z, 3, 7, x, 3, 2, x, 1, 0, z, 4, 0, y, 4, 6 )
1324 __MCFUNC6_2__( f172, y, 3, 1, z, 5, 1, x, 5, 4, x, 7, 6, z, 2, 6, y, 2, 0 )
1328 __MCFUNC6_2__( f071, x, 2, 3, x, 6, 7, y, 6, 4, z, 0, 4, z, 1, 5, y, 1, 3 )
1329 __MCFUNC6_2__( f141, y, 3, 1, y, 7, 5, x, 7, 6, z, 2, 6, z, 0, 4, x, 0, 1 )
1330 __MCFUNC6_2__( f046, x, 1, 0, x, 5, 4, y, 5, 7, z, 3, 7, z, 2, 6, y, 2, 0 )
1331 __MCFUNC6_2__( f027, y, 0, 2, y, 4, 6, x, 4, 5, z, 1, 5, z, 3, 7, x, 3, 2 )
1332 __MCFUNC6_2__( f209, z, 6, 2, z, 7, 3, y, 7, 5, x, 4, 5, x, 0, 1, y, 0, 2 )
1333 __MCFUNC6_2__( f092, y, 2, 0, y, 3, 1, z, 3, 7, x, 6, 7, x, 4, 5, z, 4, 0 )
1334 __MCFUNC6_2__( f053, y, 4, 6, y, 5, 7, z, 5, 1, x, 0, 1, x, 2, 3, z, 2, 6 )
1335 __MCFUNC6_2__( f184, x, 7, 6, x, 3, 2, y, 3, 1, z, 5, 1, z, 4, 0, y, 4, 6 )
1336 __MCFUNC6_2__( f228, y, 6, 4, y, 2, 0, x, 2, 3, z, 7, 3, z, 5, 1, x, 5, 4 )
1337 __MCFUNC6_2__( f114, y, 5, 7, y, 1, 3, x, 1, 0, z, 4, 0, z, 6, 2, x, 6, 7 )
1338 __MCFUNC6_2__( f202, y, 7, 5, y, 6, 4, z, 6, 2, x, 3, 2, x, 1, 0, z, 1, 5 )
1339 __MCFUNC6_2__( f163, y, 1, 3, y, 0, 2, z, 0, 4, x, 5, 4, x, 7, 6, z, 7, 3 )
1343 __MCFUNC8_1__( f135, z, 0, 4, z, 1, 5, y, 1, 3, x, 2, 3, z, 2, 6, z, 7, 3, y, 7, 5, x, 7, 6 )
1344 __MCFUNC8_1__( f045, z, 2, 6, z, 0, 4, x, 0, 1, y, 3, 1, z, 3, 7, z, 5, 1, x, 5, 4, y, 5, 7 )
1345 __MCFUNC8_1__( f030, z, 3, 7, z, 2, 6, y, 2, 0, x, 1, 0, z, 1, 5, z, 4, 0, y, 4, 6, x, 4, 5 )
1346 __MCFUNC8_1__( f075, z, 1, 5, z, 3, 7, x, 3, 2, y, 0, 2, z, 0, 4, z, 6, 2, x, 6, 7, y, 6, 4 )
1347 __MCFUNC8_1__( f089, x, 4, 5, x, 0, 1, y, 0, 2, z, 6, 2, x, 6, 7, x, 3, 2, y, 3, 1, z, 3, 7 )
1348 __MCFUNC8_1__( f086, x, 6, 7, x, 4, 5, z, 4, 0, y, 2, 0, x, 2, 3, x, 1, 0, z, 1, 5, y, 1, 3 )
1349 __MCFUNC8_1__( f101, x, 2, 3, x, 6, 7, y, 6, 4, z, 0, 4, x, 0, 1, x, 5, 4, y, 5, 7, z, 5, 1 )
1350 __MCFUNC8_1__( f149, x, 0, 1, x, 2, 3, z, 2, 6, y, 4, 6, x, 4, 5, x, 7, 6, z, 7, 3, y, 7, 5 )
1351 __MCFUNC8_1__( f180, z, 5, 1, z, 4, 0, y, 4, 6, x, 7, 6, z, 7, 3, z, 2, 6, y, 2, 0, x, 2, 3 )
1352 __MCFUNC8_1__( f225, z, 7, 3, z, 5, 1, x, 5, 4, y, 6, 4, z, 6, 2, z, 0, 4, x, 0, 1, y, 0, 2 )
1353 __MCFUNC8_1__( f210, z, 6, 2, z, 7, 3, y, 7, 5, x, 4, 5, z, 4, 0, z, 1, 5, y, 1, 3, x, 1, 0 )
1354 __MCFUNC8_1__( f120, z, 4, 0, z, 6, 2, x, 6, 7, y, 5, 7, z, 5, 1, z, 3, 7, x, 3, 2, y, 3, 1 )
1355 __MCFUNC8_1__( f106, x, 1, 0, x, 5, 4, y, 5, 7, z, 3, 7, x, 3, 2, x, 6, 7, y, 6, 4, z, 6, 2 )
1356 __MCFUNC8_1__( f154, x, 3, 2, x, 1, 0, z, 1, 5, y, 7, 5, x, 7, 6, x, 4, 5, z, 4, 0, y, 4, 6 )
1357 __MCFUNC8_1__( f169, x, 7, 6, x, 3, 2, y, 3, 1, z, 5, 1, x, 5, 4, x, 0, 1, y, 0, 2, z, 0, 4 )
1358 __MCFUNC8_1__( f166, x, 5, 4, x, 7, 6, z, 7, 3, y, 1, 3, x, 1, 0, x, 2, 3, z, 2, 6, y, 2, 0 )
1359 __MCFUNC8_1__( f156, y, 3, 1, y, 7, 5, x, 7, 6, z, 2, 6, y, 2, 0, y, 4, 6, x, 4, 5, z, 4, 0 )
1360 __MCFUNC8_1__( f108, y, 2, 0, y, 3, 1, z, 3, 7, x, 6, 7, y, 6, 4, y, 5, 7, z, 5, 1, x, 5, 4 )
1361 __MCFUNC8_1__( f198, y, 6, 4, y, 2, 0, x, 2, 3, z, 7, 3, y, 7, 5, y, 1, 3, x, 1, 0, z, 1, 5 )
1362 __MCFUNC8_1__( f201, y, 7, 5, y, 6, 4, z, 6, 2, x, 3, 2, y, 3, 1, y, 0, 2, z, 0, 4, x, 0, 1 )
1363 __MCFUNC8_1__( f147, y, 0, 2, y, 4, 6, x, 4, 5, z, 1, 5, y, 1, 3, y, 7, 5, x, 7, 6, z, 7, 3 )
1364 __MCFUNC8_1__( f099, y, 1, 3, y, 0, 2, z, 0, 4, x, 5, 4, y, 5, 7, y, 6, 4, z, 6, 2, x, 6, 7 )
1365 __MCFUNC8_1__( f054, y, 5, 7, y, 1, 3, x, 1, 0, z, 4, 0, y, 4, 6, y, 2, 0, x, 2, 3, z, 2, 6 )
1366 __MCFUNC8_1__( f057, y, 4, 6, y, 5, 7, z, 5, 1, x, 0, 1, y, 0, 2, y, 3, 1, z, 3, 7, x, 3, 2 )
1370 __MCFUNC8_2__( f195, z, 0, 4, z, 1, 5, y, 1, 3, y, 0, 2, z, 6, 2, z, 7, 3, y, 7, 5, y, 6, 4 )
1371 __MCFUNC8_2__( f165, z, 2, 6, z, 0, 4, x, 0, 1, x, 2, 3, z, 7, 3, z, 5, 1, x, 5, 4, x, 7, 6 )
1372 __MCFUNC8_2__( f060, z, 3, 7, z, 2, 6, y, 2, 0, y, 3, 1, z, 5, 1, z, 4, 0, y, 4, 6, y, 5, 7 )
1373 __MCFUNC8_2__( f090, z, 1, 5, z, 3, 7, x, 3, 2, x, 1, 0, z, 4, 0, z, 6, 2, x, 6, 7, x, 4, 5 )
1374 __MCFUNC8_2__( f153, x, 4, 5, x, 0, 1, y, 0, 2, y, 4, 6, x, 7, 6, x, 3, 2, y, 3, 1, y, 7, 5 )
1375 __MCFUNC8_2__( f102, x, 2, 3, x, 6, 7, y, 6, 4, y, 2, 0, x, 1, 0, x, 5, 4, y, 5, 7, y, 1, 3 )
1379 __MCFUNC12__( f105, x, 0, 1, y, 0, 2, z, 0, 4, y, 3, 1, z, 3, 7, x, 3, 2, z, 5, 1, x, 5, 4, y, 5, 7, z, 6, 2, x, 6, 7, y, 6, 4 )
1380 __MCFUNC12__( f150, y, 2, 0, x, 2, 3, z, 2, 6, x, 1, 0, z, 1, 5, y, 1, 3, z, 4, 0, y, 4, 6, x, 4, 5, z, 7, 3, y, 7, 5, x, 7, 6 )
1389 #endif // #ifndef __INCLUDE_MARCHING_CUBES_H__