warp.hash_grid_query_next#
- warp.hash_grid_query_next(
- query: HashGridQuery,
- index: int32,
Kernel
Advance a hash grid query to the next candidate neighbor and report whether one was found.
Writes the candidate’s index to
indexand returnsTrue; returnsFalseonce no candidates remain (indexis then left unchanged). The index refers to the points the grid was built from, in their original order. Candidates share a nearby grid cell and may lie farther than the query radius, so test the actual distance yourself (seehash_grid_query()). Supports query objects returned bywp.hash_grid_query()for all coordinate precisions.- Parameters:
query – The query to advance, from
hash_grid_query()index – Output; receives the index of the current candidate neighbor
- Returns:
Trueif another candidate was found (its index written toindex),Falseif the query is exhausted.
Example
@wp.kernel def count_neighbors(grid_id: wp.uint64, pts: wp.array[wp.vec3], radius: wp.float32, out_count: wp.array[wp.int32]): i = wp.tid() p = pts[i] query = wp.hash_grid_query(grid_id, p, radius) index = int(0) n = int(0) while wp.hash_grid_query_next(query, index): if wp.length(p - pts[index]) <= radius: n += 1 out_count[i] = n points = wp.array([[0,0,0],[0.1,0,0],[0.5,0,0],[2.0,0,0]], dtype=wp.vec3) grid = wp.HashGrid(dim_x=8, dim_y=8, dim_z=8) grid.build(points=points, radius=0.3) out_count = wp.zeros(4, dtype=wp.int32) wp.launch(count_neighbors, dim=4, inputs=[grid.id, points, 0.3], outputs=[out_count]) print(out_count.numpy())
[2 2 1 1]
- warp.hash_grid_query_next(
- query: HashGridQuery,
- index: int32,
Kernel
Advance a hash grid query to the next candidate neighbor and report whether one was found (float16 precision).
The
float16overload ofhash_grid_query_next(), taking the query returned by thefloat16hash_grid_query(). Behavior and usage match the defaultfloat32overload; see it for details and a usage example.- Parameters:
query – The query to advance, from
hash_grid_query()index – Output; receives the index of the current candidate neighbor
- Returns:
Trueif another candidate was found (its index written toindex),Falseif the query is exhausted.
- warp.hash_grid_query_next(
- query: HashGridQuery,
- index: int32,
Kernel
Advance a hash grid query to the next candidate neighbor and report whether one was found (float64 precision).
The
float64overload ofhash_grid_query_next(), taking the query returned by thefloat64hash_grid_query(). Behavior and usage match the defaultfloat32overload; see it for details and a usage example.- Parameters:
query – The query to advance, from
hash_grid_query()index – Output; receives the index of the current candidate neighbor
- Returns:
Trueif another candidate was found (its index written toindex),Falseif the query is exhausted.