Struct ark_api::Ray3

source ·
pub struct Ray3 {
    pub origin: Vec3,
    pub dir: Vec3,
}
Expand description

A ray in 3-dimensional space: a line through space with a starting point and a direction.

Any point on the ray can be found through the formula origin + t * dir, where t is a non-negative floating point value, which represents the distance along the ray.

Fields§

§origin: Vec3

Start of the ray

§dir: Vec3

Direction of the ray, normalized

Implementations§

source§

impl Ray3

source

pub const ZERO: Ray3 = Self{ origin: Vec3::ZERO, dir: Vec3::ZERO,}

An invalid ray, starting at the origin and going nowhere.

source

pub fn from_origin_dir(origin: Vec3, dir: Vec3) -> Ray3

dir should be normalized

source

pub fn normalize(&self) -> Ray3

Get normalized ray (where dir.len() == 1).

source

pub fn offset_along_ray(&self, t: f32) -> Ray3

Returns a new ray that has had its origin moved a given distance forwards along the ray.

If the ray direction is normalized then the t parameter corresponds to the world space distance it moves.

source

pub fn is_finite(&self) -> bool

True if every value is finite

source

pub fn point_along(&self, t: f32) -> Vec3

source

pub fn closest_points(&self, other: &Ray3) -> (Vec3, Vec3)

Returns the line segment where self and other are the closest to each other. If the rays are parallel then non-finite points are returned.

source

pub fn closest_ts(&self, other: &Ray3) -> (f32, f32)

Returns the distance along both rays which together form line segment where self and other are the closest to each other. If the rays are parallel then non-finite values are returned.

source

pub fn intersects_plane(&self, plane: Plane3) -> Vec3

Returns the point where the ray intersects the plane. Returns non-finite result of the ray and plane are parallel.

source

pub fn closest_t_to_point(&self, point: Vec3) -> f32

source

pub fn closest_point_to_point(&self, point: Vec3) -> Vec3

Returns the point along the ray that is closest to the given point. The returned point may be “behind” the ray origin.

Trait Implementations§

source§

impl Clone for Ray3

source§

fn clone(&self) -> Ray3

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Ray3

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Default for Ray3

source§

fn default() -> Ray3

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for Ray3

source§

fn deserialize<__D>( __deserializer: __D ) -> Result<Ray3, <__D as Deserializer<'de>>::Error>where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Mul<Ray3> for Affine3A

§

type Output = Ray3

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Ray3) -> Ray3

Performs the * operation. Read more
source§

impl Mul<Ray3> for Conformal3

§

type Output = Ray3

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Ray3) -> Ray3

Performs the * operation. Read more
source§

impl Mul<Ray3> for IsoTransform

§

type Output = Ray3

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Ray3) -> Ray3

Performs the * operation. Read more
source§

impl Mul<Ray3> for Mat4

§

type Output = Ray3

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Ray3) -> Ray3

Performs the * operation. Read more
source§

impl PartialEq<Ray3> for Ray3

source§

fn eq(&self, other: &Ray3) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'a_, C_> Readable<'a_, C_> for Ray3where C_: Context,

source§

fn read_from<R_>(_reader_: &mut R_) -> Result<Ray3, <C_ as Context>::Error>where R_: Reader<'a_, C_>,

source§

fn minimum_bytes_needed() -> usize

source§

fn read_from_buffer_with_ctx( context: C, buffer: &'a [u8] ) -> Result<Self, <C as Context>::Error>

source§

fn read_with_length_from_buffer_with_ctx( context: C, buffer: &'a [u8] ) -> (Result<Self, <C as Context>::Error>, usize)

source§

fn read_from_buffer_copying_data_with_ctx( context: C, buffer: &[u8] ) -> Result<Self, <C as Context>::Error>

source§

fn read_with_length_from_buffer_copying_data_with_ctx( context: C, buffer: &[u8] ) -> (Result<Self, <C as Context>::Error>, usize)

source§

fn read_with_length_from_buffer_copying_data_with_ctx_mut( context: &mut C, buffer: &[u8] ) -> (Result<Self, <C as Context>::Error>, usize)

source§

fn read_from_stream_unbuffered_with_ctx<S>( context: C, stream: S ) -> Result<Self, <C as Context>::Error>where S: Read,

source§

fn read_from_stream_buffered_with_ctx<S>( context: C, stream: S ) -> Result<Self, <C as Context>::Error>where S: Read,

source§

fn read_from_file_with_ctx( context: C, path: impl AsRef<Path> ) -> Result<Self, <C as Context>::Error>

source§

impl Serialize for Ray3

source§

fn serialize<__S>( &self, __serializer: __S ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<C_> Writable<C_> for Ray3where C_: Context,

source§

fn write_to<T_>(&self, _writer_: &mut T_) -> Result<(), <C_ as Context>::Error>where T_: Writer<C_> + ?Sized,

source§

fn write_to_buffer_with_ctx( &self, context: C, buffer: &mut [u8] ) -> Result<(), <C as Context>::Error>

source§

fn write_to_buffer_with_ctx_mut( &self, context: &mut C, buffer: &mut [u8] ) -> Result<(), <C as Context>::Error>

source§

fn write_to_vec_with_ctx( &self, context: C ) -> Result<Vec<u8, Global>, <C as Context>::Error>

source§

fn write_to_vec_with_ctx_mut( &self, context: &mut C ) -> Result<Vec<u8, Global>, <C as Context>::Error>

source§

fn write_to_stream_with_ctx<S>( &self, context: C, stream: S ) -> Result<(), <C as Context>::Error>where S: Write,

source§

fn write_to_file_with_ctx( &self, context: C, path: impl AsRef<Path> ) -> Result<(), <C as Context>::Error>

source§

fn bytes_needed(&self) -> Result<usize, <C as Context>::Error>

source§

impl Copy for Ray3

source§

impl StructuralPartialEq for Ray3

Auto Trait Implementations§

§

impl RefUnwindSafe for Ray3

§

impl Send for Ray3

§

impl Sync for Ray3

§

impl Unpin for Ray3

§

impl UnwindSafe for Ray3

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> DeserializeOwned for Twhere T: for<'de> Deserialize<'de>,