29 #ifndef TOOLS_SIMPLE_POINT3D_LUT_HH
30 # define TOOLS_SIMPLE_POINT3D_LUT_HH
32 #include "connectivity_numbers_3d.hh"
36 typedef std::vector<bool> simple_point_lut_t;
53 template <
typename FG,
typename BG>
55 simple_point3d_lut(FG fg_fun, BG bg_fun)
61 typedef mln_domain(I) B;
62 typedef mln_psite(I) P;
64 B b = make::
box3d(-1,-1,-1, 1,1,1);
69 const
unsigned dim = 3;
70 const
unsigned max_nneighbs = mlc_pow_int(3, dim) - 1;
71 const
unsigned nconfigs = mlc_pow_int(2, max_nneighbs);
73 simple_point_lut_t simple_point_lut(nconfigs, false);
87 mln_fwd_niter_(N) n(nbh, p);
96 simple_point_lut[i] = ( fg_fun(fg_ima) == 1
97 && bg_fun(bg_ima) == 1);
99 return simple_point_lut;
109 simple_point3d_lut__6_26()
111 return simple_point3d_lut(connectivity_number_3d__6_26_one,
112 connectivity_number_3d__26_6_one);
122 simple_point3d_lut__26_6()
124 return simple_point3d_lut(connectivity_number_3d__26_6_one,
125 connectivity_number_3d__6_26_one);
135 simple_point3d_lut__6p_18()
137 return simple_point3d_lut(connectivity_number_3d__6p_18_one,
138 connectivity_number_3d__18_6p_one);
148 simple_point3d_lut__18_6p()
150 return simple_point3d_lut(connectivity_number_3d__18_6p_one,
151 connectivity_number_3d__6p_18_one);
159 display_simple_point_lut(
const simple_point_lut_t& simple_point_lut)
161 const unsigned bits_per_byte = 8;
164 std::cout << std::hex << std::setfill (
'0');
165 std::string prefix =
"0x";
168 while (i < simple_point_lut.size())
172 for (
unsigned j = 0; i < simple_point_lut.size() && j < bits_per_byte;
175 if (simple_point_lut[i])
184 std::cout << prefix << std::setw(2) << pack <<
", ";
185 if (i % 64 == 0) std::cout << std::endl;
186 if (i % 256 == 0) std::cout << std::endl;
190 #endif // ! TOOLS_SIMPLE_POINT3D_LUT_HH