Struct ncollide3d::partitioning::BVT [−][src]
pub struct BVT<T, BV> { /* fields omitted */ }A Bounding Volume Tree.
Implementations
impl<T, BV> BVT<T, BV>[src]
impl<T, BV> BVT<T, BV>[src]pub fn new_with_partitioning<F: FnMut(usize, Vec<(T, BV)>) -> (BV, BinaryPartition<T, BV>)>(
elements: Vec<(T, BV)>,
partitioning: &mut F
) -> BVT<T, BV>[src]
elements: Vec<(T, BV)>,
partitioning: &mut F
) -> BVT<T, BV>
please use from_partitioning instead
Builds a bounding volume tree using the specified partitioning function.
pub fn from_partitioning(
elements: Vec<(T, BV)>,
partitioning: &mut impl FnMut(usize, Vec<(T, BV)>) -> (BV, BinaryPartition<T, BV>)
) -> BVT<T, BV>[src]
elements: Vec<(T, BV)>,
partitioning: &mut impl FnMut(usize, Vec<(T, BV)>) -> (BV, BinaryPartition<T, BV>)
) -> BVT<T, BV>
Builds a bounding volume tree using the specified partitioning function.
pub fn leaves(&self) -> &[BVTLeaf<T, BV>][src]
The set of leaves on this BVT.
pub fn leaf(&self, i: usize) -> &BVTLeaf<T, BV>[src]
Referenceto the i-th leaf of this BVT.
pub fn root_bounding_volume(&self) -> Option<&BV>[src]
Reference to the bounding volume of the tree root.
pub fn set_leaf_bounding_volume<N: RealField>(
&mut self,
i: usize,
bv: BV,
refit_now: bool
) where
BV: BoundingVolume<N>, [src]
&mut self,
i: usize,
bv: BV,
refit_now: bool
) where
BV: BoundingVolume<N>,
Set the bounding volume of the i-th leaf.
If refit_now is true, the bounding volumes of all the ancestors of the
modifiad leaf will be updated as well to enclose the new leaf bounding volume.
If refit_now is false, no ancestor update will be performed until the
.refit() method is called. This is useful to refit the tree only once after
several leaf bounding volume modifications.
pub fn refit<N: RealField>(&mut self, margin: N) where
BV: BoundingVolume<N>, [src]
BV: BoundingVolume<N>,
Refits the bounding volumes so that all node of the BVT have boundin volumes that enclose their children.
This must be called to ensure the BVT is in a valid state after several calls to
.set_leaf_bounding_volume(_, _, false).
Every bounding volume created during this update will be enlarged by a margin of margin.
The larger this margin here, the looser will the resulting AABB will be, but the less frequent
future updates will be necessary.
Setting a margin equal to 0.0 is allowed.
impl<T, BV> BVT<T, BV>[src]
impl<T, BV> BVT<T, BV>[src]pub fn new_balanced<N>(leaves: Vec<(T, BV)>) -> BVT<T, BV> where
N: RealField,
BV: BoundingVolume<N> + Clone, [src]
N: RealField,
BV: BoundingVolume<N> + Clone,
Creates a balanced BVT.
pub fn median_partitioning_with_centers<N, F: FnMut(&T, &BV) -> Point<N>>(
depth: usize,
leaves: Vec<(T, BV)>,
center: &mut F
) -> (BV, BinaryPartition<T, BV>) where
N: RealField,
BV: BoundingVolume<N> + Clone, [src]
depth: usize,
leaves: Vec<(T, BV)>,
center: &mut F
) -> (BV, BinaryPartition<T, BV>) where
N: RealField,
BV: BoundingVolume<N> + Clone,
Construction function for a kdree to be used with BVT::from_partitioning.
pub fn median_partitioning<N>(
depth: usize,
leaves: Vec<(T, BV)>
) -> (BV, BinaryPartition<T, BV>) where
N: RealField,
BV: BoundingVolume<N> + Clone, [src]
depth: usize,
leaves: Vec<(T, BV)>
) -> (BV, BinaryPartition<T, BV>) where
N: RealField,
BV: BoundingVolume<N> + Clone,
Construction function for a kdree to be used with BVT::from_partitioning.
Trait Implementations
impl<'a, T, BV> BVH<T, BV> for BVT<T, BV>[src]
impl<'a, T, BV> BVH<T, BV> for BVT<T, BV>[src]type Node = BVTNodeId
Type of a node identifiers on this BVH.
fn root(&self) -> Option<Self::Node>[src]
fn num_children(&self, node: Self::Node) -> usize[src]
fn child(&self, i: usize, node: Self::Node) -> Self::Node[src]
fn content(&self, node: Self::Node) -> (&BV, Option<&T>)[src]
fn visit(&self, visitor: &mut impl Visitor<T, BV>)[src]
fn visit_bvtt(
&self,
other: &impl BVH<T, BV>,
visitor: &mut impl SimultaneousVisitor<T, BV>
)[src]
&self,
other: &impl BVH<T, BV>,
visitor: &mut impl SimultaneousVisitor<T, BV>
)
fn best_first_search<N, BFS>(
&self,
visitor: &mut BFS
) -> Option<(Self::Node, BFS::Result)> where
N: RealField,
BFS: BestFirstVisitor<N, T, BV>, [src]
&self,
visitor: &mut BFS
) -> Option<(Self::Node, BFS::Result)> where
N: RealField,
BFS: BestFirstVisitor<N, T, BV>,
Auto Trait Implementations
impl<T, BV> RefUnwindSafe for BVT<T, BV> where
BV: RefUnwindSafe,
T: RefUnwindSafe,
BV: RefUnwindSafe,
T: RefUnwindSafe,
impl<T, BV> Send for BVT<T, BV> where
BV: Send,
T: Send,
BV: Send,
T: Send,
impl<T, BV> Sync for BVT<T, BV> where
BV: Sync,
T: Sync,
BV: Sync,
T: Sync,
impl<T, BV> Unpin for BVT<T, BV> where
BV: Unpin,
T: Unpin,
BV: Unpin,
T: Unpin,
impl<T, BV> UnwindSafe for BVT<T, BV> where
BV: UnwindSafe,
T: UnwindSafe,
BV: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
impl<T> DowncastSync for T where
T: Any + Send + Sync, [src]
impl<T> DowncastSync for T where
T: Any + Send + Sync, [src]impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>, [src]
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>, [src]