pub struct Particle<P> { /* private fields */ }
Expand description
Represents a particle in space.
Only have implementations of intersection tests for movement,
using (Particle, Range<P>)
where P
is the positional Point
of the particle at the start
and end of movement.
These intersection tests can be used with any primitive that has Ray
intersection tests
implemented.
Implementations§
Trait Implementations§
Source§impl<P> Continuous<Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>> for Particle<P>
impl<P> Continuous<Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>> for Particle<P>
Source§impl<P> Discrete<Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>> for Particle<P>
impl<P> Discrete<Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>> for Particle<P>
Source§impl<S> From<Particle<Point2<S>>> for Primitive2<S>
impl<S> From<Particle<Point2<S>>> for Primitive2<S>
Source§fn from(particle: Particle2<S>) -> Primitive2<S>
fn from(particle: Particle2<S>) -> Primitive2<S>
Converts to this type from the input type.
Source§impl<S> From<Particle<Point3<S>>> for Primitive3<S>where
S: BaseFloat,
impl<S> From<Particle<Point3<S>>> for Primitive3<S>where
S: BaseFloat,
Source§fn from(particle: Particle3<S>) -> Primitive3<S>
fn from(particle: Particle3<S>) -> Primitive3<S>
Converts to this type from the input type.
impl<P> StructuralPartialEq for Particle<P>
Auto Trait Implementations§
impl<P> Freeze for Particle<P>
impl<P> RefUnwindSafe for Particle<P>where
P: RefUnwindSafe,
impl<P> Send for Particle<P>where
P: Send,
impl<P> Sync for Particle<P>where
P: Sync,
impl<P> Unpin for Particle<P>where
P: Unpin,
impl<P> UnwindSafe for Particle<P>where
P: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<P, C> Continuous<(Particle<P>, Range<P>)> for Cwhere
C: Continuous<Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>, Result = P>,
P: EuclideanSpace,
<P as EuclideanSpace>::Diff: InnerSpace,
<P as EuclideanSpace>::Scalar: BaseFloat,
impl<P, C> Continuous<(Particle<P>, Range<P>)> for Cwhere
C: Continuous<Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>, Result = P>,
P: EuclideanSpace,
<P as EuclideanSpace>::Diff: InnerSpace,
<P as EuclideanSpace>::Scalar: BaseFloat,
Source§impl<P, C> ContinuousTransformed<(Particle<P>, Range<P>)> for Cwhere
C: ContinuousTransformed<Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>, Result = P, Point = P>,
P: EuclideanSpace,
<P as EuclideanSpace>::Diff: InnerSpace,
<P as EuclideanSpace>::Scalar: BaseFloat,
impl<P, C> ContinuousTransformed<(Particle<P>, Range<P>)> for Cwhere
C: ContinuousTransformed<Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>, Result = P, Point = P>,
P: EuclideanSpace,
<P as EuclideanSpace>::Diff: InnerSpace,
<P as EuclideanSpace>::Scalar: BaseFloat,
Source§impl<P, C> ContinuousTransformed<Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>> for Cwhere
C: Continuous<Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>, Result = P>,
P: EuclideanSpace,
<P as EuclideanSpace>::Scalar: BaseFloat,
impl<P, C> ContinuousTransformed<Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>> for Cwhere
C: Continuous<Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>, Result = P>,
P: EuclideanSpace,
<P as EuclideanSpace>::Scalar: BaseFloat,
Source§fn intersection_transformed<T>(
&self,
ray: &Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>,
transform: &T,
) -> Option<P>where
T: Transform<P>,
fn intersection_transformed<T>(
&self,
ray: &Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>,
transform: &T,
) -> Option<P>where
T: Transform<P>,
Intersection test for transformed self
Source§impl<P, C> Discrete<(Particle<P>, Range<P>)> for Cwhere
C: Continuous<Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>, Result = P>,
P: EuclideanSpace,
<P as EuclideanSpace>::Diff: InnerSpace,
<P as EuclideanSpace>::Scalar: BaseFloat,
impl<P, C> Discrete<(Particle<P>, Range<P>)> for Cwhere
C: Continuous<Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>, Result = P>,
P: EuclideanSpace,
<P as EuclideanSpace>::Diff: InnerSpace,
<P as EuclideanSpace>::Scalar: BaseFloat,
Source§impl<P, C> DiscreteTransformed<(Particle<P>, Range<P>)> for Cwhere
C: ContinuousTransformed<Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>, Result = P, Point = P>,
P: EuclideanSpace,
<P as EuclideanSpace>::Diff: InnerSpace,
<P as EuclideanSpace>::Scalar: BaseFloat,
impl<P, C> DiscreteTransformed<(Particle<P>, Range<P>)> for Cwhere
C: ContinuousTransformed<Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>, Result = P, Point = P>,
P: EuclideanSpace,
<P as EuclideanSpace>::Diff: InnerSpace,
<P as EuclideanSpace>::Scalar: BaseFloat,
Source§impl<P, C> DiscreteTransformed<Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>> for Cwhere
C: Discrete<Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>>,
P: EuclideanSpace,
<P as EuclideanSpace>::Scalar: BaseFloat,
impl<P, C> DiscreteTransformed<Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>> for Cwhere
C: Discrete<Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>>,
P: EuclideanSpace,
<P as EuclideanSpace>::Scalar: BaseFloat,
Source§fn intersects_transformed<T>(
&self,
ray: &Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>,
transform: &T,
) -> boolwhere
T: Transform<P>,
fn intersects_transformed<T>(
&self,
ray: &Ray<<P as EuclideanSpace>::Scalar, P, <P as EuclideanSpace>::Diff>,
transform: &T,
) -> boolwhere
T: Transform<P>,
Intersection test for transformed self