Struct mgf::BVH
[−]
[src]
pub struct BVH<B: Bound, V> { /* fields omitted */ }
A Bounding Volume Hierarchy.
Methods
impl<B: Bound, V> BVH<B, V>
[src]
pub fn new() -> Self
[src]
Creates an empty BVH.
pub fn with_capacity(cap: usize) -> Self
[src]
Creates a BVH with a preallocated array of cap.
pub fn empty(&self) -> bool
[src]
Determines if the BVH is empty.
pub fn clear(&mut self)
[src]
Removes all entries from the BVH.
pub fn insert<K: BoundedBy<B>>(&mut self, key: &K, val: V) -> usize
[src]
Inserts an item into the BVH, rebalancing if necessary. All IDs returned prior to insert remain valid afterward.
pub fn remove(&mut self, leaf: usize)
[src]
Removes a leaf node from the BVH.
pub fn root(&self) -> usize
[src]
Returns the index of the root node.
pub fn get_leaf(&self, i: usize) -> &V
[src]
pub fn query<Arg, F>(&self, arg: &Arg, callback: F) where
Arg: BoundedBy<B>,
F: FnMut(&V),
[src]
Arg: BoundedBy<B>,
F: FnMut(&V),
Finds each entry in the BVH that has a bound that overlaps the bound of the passed object. Performs a depth first search for all objects.
callback is called for each entry that overlaps arg. A reference to the value stored at the leaf is passed.
pub fn query_mut<Arg, F>(&mut self, arg: &Arg, callback: F) where
Arg: BoundedBy<B>,
F: FnMut(&mut V),
[src]
Arg: BoundedBy<B>,
F: FnMut(&mut V),
Finds each entry in the BVH that has a bound that overlaps the bound of the passed object. Performs a depth first search for all objects.
callback is called for each entry that overlaps arg. A mutable reference to the value stored at the leaf is passed.
pub fn raytrace<Arg, F>(&self, arg: &Arg, callback: F) where
Arg: Intersects<B>,
F: FnMut(&V, Intersection),
[src]
Arg: Intersects<B>,
F: FnMut(&V, Intersection),
Finds all entries that intersect a ray or segment.
Trait Implementations
impl<B, V> Clone for BVH<B, V> where
B: Bound,
V: Clone,
[src]
B: Bound,
V: Clone,
fn clone(&self) -> Self
[src]
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl<B, V> Index<usize> for BVH<B, V> where
B: Bound,
[src]
B: Bound,
type Output = B
The returned type after indexing.
fn index(&self, i: usize) -> &B
[src]
Performs the indexing (container[index]
) operation.
impl<B, V> BoundedBy<B> for BVH<B, V> where
B: Bound,
[src]
B: Bound,