[][src]Struct collision::primitive::ConvexPolyhedron

pub struct ConvexPolyhedron<S> where
    S: BaseFloat
{ /* fields omitted */ }

Convex polyhedron primitive.

Can contain any number of vertices, but a high number of vertices will affect performance of course. It is recommended for high vertex counts, to also provide the faces, this will cause the support function to use hill climbing on a half edge structure, resulting in better performance. The breakpoint is around 250 vertices, but the face version is only marginally slower on lower vertex counts (about 1-2%), while for higher vertex counts it's about 2-5 times faster.

Methods

impl<S> ConvexPolyhedron<S> where
    S: BaseFloat
[src]

pub fn new(vertices: Vec<Point3<S>>) -> Self[src]

Create a new convex polyhedron from the given vertices.

pub fn new_with_faces(
    vertices: Vec<Point3<S>>,
    faces: Vec<(usize, usize, usize)>
) -> Self
[src]

Create a new convex polyhedron from the given vertices and faces.

pub fn new_with_faces_dedup(
    vertices: Vec<Point3<S>>,
    faces: Vec<(usize, usize, usize)>
) -> Self
[src]

Create a new convex polyhedron from the given vertices and faces. Will remove any duplicate vertices.

pub fn faces_iter(&self) -> FaceIterator<S>[src]

Return an iterator that will yield tuples of the 3 vertices of each face

Trait Implementations

impl<S> Continuous<Ray<S, Point3<S>, Vector3<S>>> for ConvexPolyhedron<S> where
    S: BaseFloat
[src]

type Result = Point3<S>

Result returned by the intersection test

fn intersection(&self, ray: &Ray3<S>) -> Option<Point3<S>>[src]

Ray must be in object space

impl<S> Discrete<Ray<S, Point3<S>, Vector3<S>>> for ConvexPolyhedron<S> where
    S: BaseFloat
[src]

TODO: better algorithm for finding faces to intersect with?

fn intersects(&self, ray: &Ray3<S>) -> bool[src]

Ray must be in object space

impl<S> ComputeBound<Aabb3<S>> for ConvexPolyhedron<S> where
    S: BaseFloat
[src]

impl<S> ComputeBound<Sphere<S>> for ConvexPolyhedron<S> where
    S: BaseFloat
[src]

impl<S> Primitive for ConvexPolyhedron<S> where
    S: BaseFloat
[src]

type Point = Point3<S>

Point type

impl<S: PartialEq> PartialEq<ConvexPolyhedron<S>> for ConvexPolyhedron<S> where
    S: BaseFloat
[src]

impl<S: Clone> Clone for ConvexPolyhedron<S> where
    S: BaseFloat
[src]

default fn clone_from(&mut self, source: &Self)
1.0.0
[src]

Performs copy-assignment from source. Read more

impl<S> From<ConvexPolyhedron<S>> for Primitive3<S> where
    S: BaseFloat
[src]

impl<S: Debug> Debug for ConvexPolyhedron<S> where
    S: BaseFloat
[src]

Auto Trait Implementations

impl<S> Send for ConvexPolyhedron<S> where
    S: Send

impl<S> Sync for ConvexPolyhedron<S> where
    S: Sync

Blanket Implementations

impl<T> From for T[src]

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.