marching_cubes.h
説明を見る。
1 //
2 // Copyright (c) 2003-2011, MIST Project, Nagoya University
3 // All rights reserved.
4 //
5 // Redistribution and use in source and binary forms, with or without modification,
6 // are permitted provided that the following conditions are met:
7 //
8 // 1. Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer.
10 //
11 // 2. Redistributions in binary form must reproduce the above copyright notice,
12 // this list of conditions and the following disclaimer in the documentation
13 // and/or other materials provided with the distribution.
14 //
15 // 3. Neither the name of the Nagoya University nor the names of its contributors
16 // may be used to endorse or promote products derived from this software
17 // without specific prior written permission.
18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
20 // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
21 // FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
22 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
25 // IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
26 // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 //
28 
33 
34 #ifndef __INCLUDE_MARCHING_CUBES_H__
35 #define __INCLUDE_MARCHING_CUBES_H__
36 
37 
38 #include <iostream>
39 #include <cmath>
40 #include <vector>
41 
42 #ifndef __INCLUDE_MIST_H__
43 #include "mist.h"
44 #endif
45 
46 #ifndef __INCLUDE_MIST_FACET__
47 #include "facet.h"
48 #endif
49 
50 #ifndef __INCLUDE_MIST_VECTOR__
51 #include "vector.h"
52 #endif
53 
54 #ifndef __INCLUDE_INTERVAL_TREE_H__
55 #include "interval_tree.h"
56 #endif
57 
58 
59 // mist名前空間の始まり
61 
62 namespace __mc__
63 {
70  template< class V, class P >
71  struct node
72  {
73  typedef V value_type;
74  typedef P point_type;
75 
76  value_type v;
77  point_type p;
78  point_type n;
79 
80  node( ) { }
81  node( const value_type &vv, const point_type &pp, const point_type &nn ) : v( vv ), p( pp ), n( nn ) { }
82  };
83 
89  template< typename T >
90  inline size_t number_of_triangles( const std::vector< T > &sv )
91  {
92  size_t ret = 0;
93  for( size_t i = 0 ; i < sv.size( ) ; i ++ )
94  {
95  ret += ( sv[ i ] - 2 );
96  }
97  return ret;
98  }
99 }
100 
101 
102 #define __MCFUNC__( name ) \
103  static size_t name( const node_type nda[ 8 ], \
104  vector_type pv[ 12 ], \
105  vector_type nv[ 12 ], \
106  size_type sv[ 4 ], \
107  float_type th, \
108  const vector_type &o, \
109  const vector_type &s ) \
110 
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 ], \
116  size_type sv[ 4 ], \
117  float_type th, \
118  const vector_type &o, \
119  const vector_type &s ) \
120 
121 #define __MCFUNC0__( name ) \
122  __MCFUNC_DEF__( name ) \
123  { \
124  return( 0 ); \
125  } \
126 
127 #define __MCFUNC3__( name, AXIS1, NDA1, NDA2, AXIS2, NDA3, NDA4, AXIS3, NDA5, NDA6 ) \
128  __MCFUNC_DEF__( name ) \
129  { \
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 ); \
133  sv[ 0 ] = 3; \
134  return( 1 ); \
135  } \
136 
137 #define __MCFUNC4__( name, AXIS1, NDA1, NDA2, AXIS2, NDA3, NDA4, AXIS3, NDA5, NDA6, AXIS4, NDA7, NDA8 ) \
138  __MCFUNC_DEF__( name ) \
139  { \
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 ); \
144  sv[ 0 ] = 4; \
145  return( 1 ); \
146  } \
147 
148 #define __MCFUNC5__( name, AXIS1, NDA1, NDA2, AXIS2, NDA3, NDA4, AXIS3, NDA5, NDA6, AXIS4, NDA7, NDA8, AXIS5, NDA9, NDA10 ) \
149  __MCFUNC_DEF__( name ) \
150  { \
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 ); \
156  sv[ 0 ] = 5; \
157  return( 1 ); \
158  } \
159 
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 ) \
162  { \
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 ); \
169  sv[ 0 ] = 3; \
170  sv[ 1 ] = 3; \
171  return( 2 ); \
172  } \
173 
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 ) \
176  { \
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 ); \
183  sv[ 0 ] = 6; \
184  return( 1 ); \
185  } \
186 
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 ) \
189  { \
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 ); \
197  sv[ 0 ] = 4; \
198  sv[ 1 ] = 3; \
199  return( 2 ); \
200  } \
201 
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 ) \
204  { \
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 ); \
212  sv[ 0 ] = 7; \
213  return( 1 ); \
214  } \
215 
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 ) \
218  { \
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 ); \
227  sv[ 0 ] = 5; \
228  sv[ 1 ] = 3; \
229  return( 2 ); \
230  } \
231 
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 ) \
234  { \
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 ); \
243  sv[ 0 ] = 4; \
244  sv[ 1 ] = 4; \
245  return( 2 ); \
246  } \
247 
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 ) \
250  { \
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 ); \
260  sv[ 0 ] = 3; \
261  sv[ 1 ] = 3; \
262  sv[ 2 ] = 3; \
263  return( 3 ); \
264  } \
265 
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 ) \
268  { \
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 ); \
278  sv[ 0 ] = 3; \
279  sv[ 1 ] = 6; \
280  return( 2 ); \
281  } \
282 
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 ) \
285  { \
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 ); \
298  sv[ 0 ] = 3; \
299  sv[ 1 ] = 3; \
300  sv[ 2 ] = 3; \
301  sv[ 3 ] = 3; \
302  return( 4 ); \
303  } \
304 
305 
306 
307 
315 
354 template< typename ARRAY3, typename P = double >
356 {
357 public:
358  typedef ARRAY3 image_type;
359  typedef typename image_type::value_type value_type;
362  typedef typename vector_type::value_type float_type;
363  typedef size_t size_type;
364  typedef ptrdiff_t difference_type;
365 
366  typedef std::vector< vector_type > vector_list_type;
368  typedef size_t ( * func_type )( const node_type *, vector_type *, vector_type *,
369  size_type *, float_type, const vector_type &, const vector_type & );
370 
373  typedef typename section_type::tag_type tag_type;
374 
375 private:
376  func_type fa_[ 256 ];
377  vector_type __p__[ 12 ];
378  vector_type __n__[ 12 ];
379  size_type __s__[ 4 ];
380  bool is_preprocessed_;
381  size_type pda_[ 8 ];
385  std::vector< tag_type > active_cube_tags_;
386 
387  float_type th_;
388  vector_type o_;
389  vector_type s_;
390 
391 public: // コンストラクタとプロパティ関連
393  marching_cubes( ) : is_preprocessed_( false ), th_( 0 ), o_( 0, 0, 0 ), s_( 1, 1, 1 )
394  {
395  init_function_array( );
396  }
397 
400  {
401  }
402 
407  bool is_preprocessed( ) const { return is_preprocessed_; }
408 
413  void threshold( float_type th ) { th_ = th; }
414 
419  float_type threshold( ) const { return( th_ ); }
420 
427  void offset( float_type ox, float_type oy, float_type oz ) { o_.x = ox; o_.y = oy; o_.z = oz; }
428 
433  vector_type offset( ) const { return( o_ ); }
434 
441  void scale( float_type sx, float_type sy, float_type sz ) { s_.x = sx; s_.y = sy; s_.z = sz; }
442 
447  vector_type scale( ) const { return( s_ ); }
448 
449 
450 public: // 操作関数
451 
459  void isosurfacing( const image_type &va, vector_list_type &pv, vector_list_type &nv, std::vector< size_type > &sv )
460  {
461  if( is_preprocessed_ )
462  {
463  isosurfacing_with_preprocess( va, pv, nv, sv );
464  }
465  else
466  {
467  isosurfacing_without_preprocess( va, pv, nv, sv );
468  }
469  }
470 
476  template < class T >
477  void isosurfacing( const image_type &va, facet_list< T > &facets )
478  {
479  if( is_preprocessed_ )
480  {
481  isosurfacing_with_preprocess( va, facets );
482  }
483  else
484  {
485  isosurfacing_without_preprocess( va, facets );
486  }
487  }
488 
496  void isosurfacing_with_preprocess( const image_type &va, vector_list_type &pv, vector_list_type &nv, std::vector< size_type > &sv )
497  {
498  construct_pointer_difference_array( va );
499  pv.resize( 0 );
500  nv.resize( 0 );
501  sv.resize( 0 );
502  it_.find( th_, active_cube_tags_ );
503  std::sort( active_cube_tags_.begin( ), active_cube_tags_.end( ) );
504 
505  node_type nda[ 8 ];
506  const size_type begin = 0;
507  const size_type end = active_cube_tags_.size( );
508  for( size_type i = begin ; i < end ; i ++ )
509  {
510  size_type ptn = construct_cube( va, active_cube_tags_[ i ], nda );
511  if( 0 < ptn )
512  {
513  isosurfacing_in_cube( nda, pv, nv, sv, ptn );
514  }
515  }
516  }
517 
525  void isosurfacing_without_preprocess( const image_type &va, vector_list_type &pv, vector_list_type &nv, std::vector< size_type > &sv )
526  {
527  construct_pointer_difference_array( va );
528  pv.resize( 0 );
529  nv.resize( 0 );
530  sv.resize( 0 );
531 
532  node_type nda[ 8 ];
533  for( size_t k = 0 ; k < va.depth( ) - 1 ; k ++ )
534  {
535  for( size_t j = 0 ; j < va.height( ) - 1 ; j ++ )
536  {
537  for( size_t i = 0 ; i < va.width( ) - 1 ; i ++ )
538  {
539  size_type ptn = construct_cube_without_preprocessing( va, i, j, k, nda );
540  if( 0 < ptn )
541  {
542  isosurfacing_in_cube( nda, pv, nv, sv, ptn );
543  }
544  }
545  }
546  }
547  }
548 
549 
555  template < class T >
556  void isosurfacing_with_preprocess( const image_type &va, facet_list< T > &facets )
557  {
558  facets.resize( 0 );
559  construct_pointer_difference_array( va );
560 
561  it_.find( th_, active_cube_tags_ );
562  std::sort( active_cube_tags_.begin( ), active_cube_tags_.end( ) );
563 
564  node_type nda[ 8 ];
565  const size_type begin = 0;
566  const size_type end = active_cube_tags_.size( );
567  for( size_type i = begin ; i < end ; i ++ )
568  {
569  size_type ptn = construct_cube( va, active_cube_tags_[ i ], nda );
570  if( 0 < ptn )
571  {
572  isosurfacing_in_cube( nda, facets, ptn );
573  }
574  }
575  }
576 
582  template < class T >
583  void isosurfacing_without_preprocess( const image_type &va, facet_list< T > &facets )
584  {
585  facets.resize( 0 );
586  construct_pointer_difference_array( va );
587 
588  node_type nda[ 8 ];
589 
590  for( size_type k = 0 ; k < va.depth( ) - 1 ; k++ )
591  {
592  for( size_type j = 0 ; j < va.height( ) - 1 ; j ++ )
593  {
594  for( size_type i = 0 ; i < va.width( ) - 1 ; i ++ )
595  {
596  size_type ptn = construct_cube_without_preprocessing( va, i, j, k, nda );
597  if( 0 < ptn )
598  {
599  isosurfacing_in_cube( nda, facets, ptn );
600  }
601  }
602  }
603  }
604  }
605 
610  bool preprocess( const image_type &va )
611  {
612  if( is_preprocessed_ )
613  {
614  de_preprocess( );
615  }
616 
617  construct_pointer_difference_array( va );
618  is_preprocessed_ = construct_point_array( va ) && construct_normal_array( va ) && construct_interval_tree( va );
619 
620  if( !is_preprocessed_ )
621  {
622  std::cout << "can't construct preprocessing data for lack of memory, use non-preprocessing version of marching cubes." << std::endl;
623  de_preprocess( );
624  }
625 
626  return( is_preprocessed_ );
627  }
628 
630  void de_preprocess( )
631  {
632  destruct_point_array( );
633  destruct_normal_array( );
634  destruct_interval_tree( );
635  is_preprocessed_ = false;
636  }
637 
638 
639 private:
640  size_type construct_cube( const image_type &va, const size_t i, node_type nda[ 8 ] ) const
641  {
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 ] ];
650 
651  size_type ptn = pattern( nda );
652 
653  if( 0 < ptn && ptn < 255 )
654  {
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 ] ];
663 
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 ] ];
672 
673  return( ptn );
674  }
675  else
676  {
677  return( 0 );
678  }
679  }
680 
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
682  {
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 ];
692 
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 ];
701 
702  size_type ptn = pattern( nda );
703 
704  if( 0 < ptn && ptn < 255 )
705  {
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 );
714 
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 );
723 
724  return( ptn );
725  }
726  else
727  {
728  return( 0 );
729  }
730  }
731 
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 )
733  {
734  size_type num = fa_[ ptn ]( nda, __p__, __n__, __s__, th_, o_, s_ );
735 
736  vector_type *PP = __p__;
737  vector_type *NN = __n__;
738  for( size_type i = 0 ; i < num ; i++ )
739  {
740  size_type s = __s__[ i ];
741  for( size_type j = 0 ; j < s ; j++ )
742  {
743  pv.push_back( *PP++ );
744  nv.push_back( *NN++ );
745  }
746  sv.push_back( s );
747  }
748  }
749 
750  template < class T >
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 )
752  {
753  vector_type N = n1 + n2 + n3;
754 
755  if( N.length( ) > 0.0 )
756  {
757  N = N.unit( );
758  // 点の並びが反時計回りになるようにする.
759  if( N.inner( ( p2 - p1 ).outer( p3 - p1 ) ) < 0 )
760  {
761  facets.push_back( typename facet_list< T >::facet_type( N, p1, p3, p2 ) );
762  }
763  else
764  {
765  facets.push_back( typename facet_list< T >::facet_type( N, p1, p2, p3 ) );
766  }
767  }
768  else
769  {
770  facets.push_back( typename facet_list< T >::facet_type( p1, p2, p3 ) );
771  }
772  }
773 
774  template < class T >
775  void isosurfacing_in_cube( const node_type nda[ 8 ], facet_list< T > &facets, size_type ptn )
776  {
777  size_type num = fa_[ ptn ]( nda, __p__, __n__, __s__, th_, o_, s_ );
778 
779  vector_type *P = __p__;
780  vector_type *N = __n__;
781  for( size_type i = 0 ; i < num ; i++ )
782  {
783  switch( __s__[ i ] )
784  {
785  case 3:
786  add_facet( facets, P[ 0 ], P[ 1 ], P[ 2 ], N[ 0 ], N[ 1 ], N[ 2 ] );
787  break;
788 
789  case 4:
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 ] );
792  break;
793 
794  case 5:
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 ] );
798  break;
799 
800  case 6:
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 ] );
805  break;
806 
807  case 7:
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 ] );
813  break;
814 
815  default:
816  break;
817  }
818 
819  P += __s__[ i ];
820  N += __s__[ i ];
821  }
822  }
823 
824  ivector_type _point( const size_type i, const size_type j, const size_type k ) const
825  {
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 ) ) );
827  }
828 
829  ivector_type _normal( const image_type &va, const size_type i, const size_type j, const size_type k ) const
830  {
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 ) );
836  }
837 
838  vector_type __normal( const image_type &va, const size_type i, const size_type j, const size_type k ) const
839  {
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 ) );
844  }
845 
846  value_type _value( const image_type &va, const size_t i , const size_t j, const size_t k ) const
847  {
848  return ( i < va.width( ) && j < va.height( ) && k < va.depth( ) ) ? va( i, j, k ) : value_type( );
849  }
850 
851  void construct_pointer_difference_array( const image_type &va )
852  {
853  size_type w = va.width( );
854  size_type h = va.height( );
855 
856  pda_[ 0 ] = 0;
857  pda_[ 1 ] = 1;
858  pda_[ 2 ] = w;
859  pda_[ 3 ] = w + 1;
860  pda_[ 4 ] = w * h;
861  pda_[ 5 ] = w * h + 1;
862  pda_[ 6 ] = w * h + w;
863  pda_[ 7 ] = w * h + w + 1;
864  }
865 
866  bool construct_point_array( const image_type &va )
867  {
868  bool ret = pa_.resize( va.width( ), va.height( ), va.depth( ) );
869 
870  for( size_t k = 0 ; k < pa_.depth( ) ; k ++ )
871  {
872  for( size_t j = 0 ; j < pa_.height( ) ; j ++ )
873  {
874  for( size_t i = 0 ; i < pa_.width( ) ; i ++ )
875  {
876  pa_( i, j, k ) = _point( i, j, k );
877  }
878  }
879  }
880 
881  return( ret );
882  }
883 
884  bool construct_normal_array( const image_type &va )
885  {
886  bool ret = na_.resize( va.width( ), va.height( ), va.depth( ) );
887 
888  for( size_t k = 0 ; k < na_.depth( ) ; k ++ )
889  {
890  for( size_t j = 0 ; j < na_.height( ) ; j ++ )
891  {
892  for( size_t i = 0 ; i < na_.width( ) ; i ++ )
893  {
894  na_( i, j, k ) = _normal( va, i, j, k );
895  }
896  }
897  }
898 
899  return( ret );
900  }
901 
902  bool construct_interval_tree( const image_type &va )
903  {
904  std::vector< section_type > secs;
905  min_max_type minimum, maximum;
906  tag_type tag;
907  for( size_t k = 0 ; k < va.depth( ) - 1 ; k ++ )
908  {
909  for( size_t j = 0 ; j < va.height( ) - 1 ; j ++ )
910  {
911  for( size_t i = 0 ; i < va.width( ) - 1 ; i ++ )
912  {
913  tag = i + va.width( ) * j + va.width( ) * va.height( ) * k;
914  get_section( va, tag, minimum, maximum );
915  if( minimum != maximum )
916  {
917  secs.push_back( section_type( minimum, maximum, tag ) );
918  }
919  }
920  }
921  }
922  active_cube_tags_.clear( );
923  active_cube_tags_.reserve( secs.size( ) );
924  return ( it_.construct( secs ) && active_cube_tags_.capacity( ) >= secs.size( ) );
925  }
926 
927  void destruct_point_array( )
928  {
929  pa_.clear( );
930  }
931 
932  void destruct_normal_array( )
933  {
934  na_.clear( );
935  }
936 
937  void destruct_interval_tree( )
938  {
939  it_.destruct( );
940  active_cube_tags_.clear( );
941  }
942 
943  void get_section( const image_type &va, const tag_type &tag, min_max_type &minimum, min_max_type &maximum ) const
944  {
945  minimum = va[ tag + pda_[ 0 ] ];
946  maximum = va[ tag + pda_[ 0 ] ];
947  for( size_t i = 1 ; i < 8 ; i ++ )
948  {
949  if( va[ tag + pda_[ i ] ] < minimum )
950  {
951  minimum = va[ tag + pda_[ i ] ];
952  }
953  else if( va[ tag + pda_[ i ] ] > maximum )
954  {
955  maximum = va[ tag + pda_[ i ] ];
956  }
957  }
958  }
959 
960  size_type pattern( const node_type nda[ 8 ] ) const
961  {
962  size_type v = 0;
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;
971  return ( v );
972  }
973 
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 )
975  {
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 );
978  p.y = nd0.p.y;
979  p.z = nd0.p.z;
980 
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;
986  }
987 
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 )
989  {
990  float_type tp = static_cast< float_type >( ( nd1.v - th ) / ( static_cast< float_type >( nd1.v ) - nd0.v ) );
991  p.x = nd0.p.x;
992  p.y = nd0.p.y * tp + nd1.p.y * ( 1 - tp );
993  p.z = nd0.p.z;
994 
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;
1000  }
1001 
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 )
1003  {
1004  float_type tp = static_cast< float_type >( ( nd1.v - th ) / ( static_cast< float_type >( nd1.v ) - nd0.v ) );
1005  p.x = nd0.p.x;
1006  p.y = nd0.p.y;
1007  p.z = nd0.p.z * tp + nd1.p.z * ( 1 - tp );
1008 
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;
1014  }
1015 
1016  void init_function_array( )
1017  {
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;
1050  }
1051 
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 );
1062 
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 );
1073 
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 );
1080 };
1081 
1082 // 0, 0, 0, 0, 0, 0, 0, 0
1083 __MCFUNC0__( f000 );
1084 __MCFUNC0__( f255 );
1085 
1086 // 1, 0, 0, 0, 0, 0, 0, 0
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 );
1103 
1104 
1105 // 1, 1, 0, 0, 0, 0, 0, 0
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 )
1130 
1131 
1132 // 1, 0, 0, 1, 0, 0, 0, 0
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 )
1157 
1158 
1159 // 1, 0, 0, 0, 0, 0, 0, 1
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 )
1168 
1169 
1170 // 1, 1, 1, 0, 0, 0, 0, 0
1171 
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 )
1220 
1221 
1222 // 1, 1, 0, 0, 0, 0, 1, 0
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 )
1271 
1272 
1273 // 1, 0, 0, 1, 0, 1, 0, 0
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 )
1290 
1291 
1292 // 1, 1, 1, 1, 0, 0, 0, 0
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 )
1299 
1300 
1301 // 1, 1, 1, 0, 1, 0, 0, 0
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 )
1310 
1311 
1312 // 1, 1, 1, 0, 0, 1, 0, 0
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 )
1325 
1326 
1327 // 1, 1, 1, 0, 0, 0, 1, 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 )
1340 
1341 
1342 // 1, 1, 1, 0, 0, 0, 0, 1
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 )
1367 
1368 
1369 // 1, 1, 0, 0, 0, 0, 1, 1
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 )
1376 
1377 
1378 // 1, 0, 0, 1, 0, 1, 1, 0
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 )
1381 
1382 
1384 // Marching Cubesグループの終わり
1385 
1386 // mist名前空間の終わり
1387 _MIST_END
1388 
1389 #endif // #ifndef __INCLUDE_MARCHING_CUBES_H__
1390 

Generated on Wed Nov 12 2014 19:44:18 for MIST by doxygen 1.8.1.2