Expand description
3D ray, represented by a starting point and a normalized direction vector.
Fields
origin: Vec3<T>
The ray’s starting point.
direction: Vec3<T>
The ray’s direction. Methods expect it to be normalized.
Implementations
sourceimpl<T: Real + Add<T, Output = T>> Ray<T>
impl<T: Real + Add<T, Output = T>> Ray<T>
sourcepub fn new(origin: Vec3<T>, direction: Vec3<T>) -> Self
pub fn new(origin: Vec3<T>, direction: Vec3<T>) -> Self
Creates a Ray
from a starting point and direction.
This doesn’t check if direction
is normalized, because either you know it is, or
it isn’t and maybe it doesn’t matter for your use case.
sourcepub fn triangle_intersection(&self, tri: [Vec3<T>; 3]) -> Option<T>
pub fn triangle_intersection(&self, tri: [Vec3<T>; 3]) -> Option<T>
Tests if this ray intersects the given triangle, returning the distance from the ray’s origin along its direction where the intersection lies.
If the returned value is Some(x)
where x < EPSILON
, then you should
assume there was a line intersection, NOT a ray intersection.
This uses the Möller–Trumbore intersection algorithm.
Trait Implementations
sourceimpl<'de, T> Deserialize<'de> for Ray<T> where
T: Deserialize<'de>,
impl<'de, T> Deserialize<'de> for Ray<T> where
T: Deserialize<'de>,
sourcefn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl<T: Copy> Copy for Ray<T>
impl<T: Eq> Eq for Ray<T>
impl<T> StructuralEq for Ray<T>
impl<T> StructuralPartialEq for Ray<T>
Auto Trait Implementations
impl<T> RefUnwindSafe for Ray<T> where
T: RefUnwindSafe,
impl<T> Send for Ray<T> where
T: Send,
impl<T> Sync for Ray<T> where
T: Sync,
impl<T> Unpin for Ray<T> where
T: Unpin,
impl<T> UnwindSafe for Ray<T> where
T: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more