------------------------------------------------------------------------------ Internal function to get bucket neighbors at specified level
| 243 | // Internal function to get bucket neighbors at specified level |
| 244 | // |
| 245 | void vtkBucketList::GetBucketNeighbors( |
| 246 | NeighborBuckets* buckets, const int ijk[3], const int ndivs[3], int level) |
| 247 | { |
| 248 | int i, j, k, min, max, minLevel[3], maxLevel[3]; |
| 249 | int nei[3]; |
| 250 | |
| 251 | // Initialize |
| 252 | // |
| 253 | buckets->Reset(); |
| 254 | |
| 255 | // If at this bucket, just place into list |
| 256 | // |
| 257 | if (level == 0) |
| 258 | { |
| 259 | buckets->InsertNextBucket(ijk); |
| 260 | return; |
| 261 | } |
| 262 | |
| 263 | // Create permutations of the ijk indices that are at the level |
| 264 | // required. If these are legal buckets, add to list for searching. |
| 265 | // |
| 266 | for (i = 0; i < 3; i++) |
| 267 | { |
| 268 | min = ijk[i] - level; |
| 269 | max = ijk[i] + level; |
| 270 | minLevel[i] = (min > 0 ? min : 0); |
| 271 | maxLevel[i] = (max < (ndivs[i] - 1) ? max : (ndivs[i] - 1)); |
| 272 | } |
| 273 | |
| 274 | for (i = minLevel[0]; i <= maxLevel[0]; i++) |
| 275 | { |
| 276 | for (j = minLevel[1]; j <= maxLevel[1]; j++) |
| 277 | { |
| 278 | for (k = minLevel[2]; k <= maxLevel[2]; k++) |
| 279 | { |
| 280 | if (i == (ijk[0] + level) || i == (ijk[0] - level) || j == (ijk[1] + level) || |
| 281 | j == (ijk[1] - level) || k == (ijk[2] + level) || k == (ijk[2] - level)) |
| 282 | { |
| 283 | nei[0] = i; |
| 284 | nei[1] = j; |
| 285 | nei[2] = k; |
| 286 | buckets->InsertNextBucket(nei); |
| 287 | } |
| 288 | } |
| 289 | } |
| 290 | } |
| 291 | } |
| 292 | |
| 293 | //------------------------------------------------------------------------------ |
| 294 | // Given a position x, return the id of the point closest to it. |
no test coverage detected