33 template<
class Container,
class Type>
46 for (
direction cmpt = 0; cmpt < 3; cmpt++)
48 if (maxIds[cmpt] < 0 || minIds[cmpt] >=
nDivs[cmpt])
53 maxIds[cmpt] =
min(maxIds[cmpt],
nDivs[cmpt]-1);
54 minIds[cmpt] =
max(minIds[cmpt], 0);
59 for (label
k = minIds[2];
k <= maxIds[2];
k++)
61 const label start1 = voxeli;
62 for (label j = minIds[1]; j <= maxIds[1]; j++)
64 const label start0 = voxeli;
65 for (label i = minIds[0]; i <= maxIds[0]; i++)
70 voxeli = start0 + off[1];
72 voxeli = start1 + off[2];
77 template<
class Container,
class Type,
class CombineOp>
83 const boundBox& subBb,
91 for (
direction cmpt = 0; cmpt < 3; cmpt++)
93 if (maxIds[cmpt] < 0 || minIds[cmpt] >= nDivs[cmpt])
98 maxIds[cmpt] =
min(maxIds[cmpt], nDivs[cmpt]-1);
99 minIds[cmpt] =
max(minIds[cmpt], 0);
103 label voxeli = index(nDivs, minIds);
104 for (label
k = minIds[2];
k <= maxIds[2];
k++)
106 const label start1 = voxeli;
107 for (label j = minIds[1]; j <= maxIds[1]; j++)
109 const label start0 = voxeli;
110 for (label i = minIds[0]; i <= maxIds[0]; i++)
112 cop(elems[voxeli], val);
115 voxeli = start0 + off[1];
117 voxeli = start1 + off[2];
122 template<
class Container,
class Type>
127 const boundBox& subBb,
128 const Container& elems,
135 labelVector minIds(index3(bb, nDivs, subBb.min()));
136 labelVector maxIds(index3(bb, nDivs, subBb.max()));
138 for (
direction cmpt = 0; cmpt < 3; cmpt++)
140 if (maxIds[cmpt] < 0 || minIds[cmpt] >= nDivs[cmpt])
145 maxIds[cmpt] =
min(maxIds[cmpt], nDivs[cmpt]-1);
146 minIds[cmpt] =
max(minIds[cmpt], 0);
152 <<
"sizes:" << elems.size() <<
" and " << nDivs
158 label voxeli = index(nDivs, minIds);
159 for (label
k = minIds[2];
k <= maxIds[2];
k++)
161 const label start1 = voxeli;
162 for (label j = minIds[1]; j <= maxIds[1]; j++)
164 const label start0 = voxeli;
165 for (label i = minIds[0]; i <= maxIds[0]; i++)
167 const Type elemVal = elems[voxeli];
168 if (isNot != (elemVal == val))
174 voxeli = start0 + off[1];
176 voxeli = start1 + off[2];
182 template<
class Container,
class Type>
188 const Container& elems,
196 <<
"sizes:" << elems.size() <<
" and " << nDivs
202 for (label
k = 0;
k < nDivs[2];
k++)
204 const label start1 = voxeli;
205 for (label j = 0; j < nDivs[1]; j++)
207 const label start0 = voxeli;
208 for (label i = 0; i < nDivs[0]; i++)
210 const Type& elemVal = elems[voxeli];
211 if (isNot != (elemVal == val))
217 voxeli = start0 + off[1];
219 voxeli = start1 + off[2];