pub struct QVec3<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8>(/* private fields */);Expand description
Three components of one dimension, stored in SI base units.
Implementations§
Source§impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> QVec3<L, M, T, I, K, N, J>
impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> QVec3<L, M, T, I, K, N, J>
Sourcepub fn new(
x: Qty<L, M, T, I, K, N, J>,
y: Qty<L, M, T, I, K, N, J>,
z: Qty<L, M, T, I, K, N, J>,
) -> QVec3<L, M, T, I, K, N, J>
pub fn new( x: Qty<L, M, T, I, K, N, J>, y: Qty<L, M, T, I, K, N, J>, z: Qty<L, M, T, I, K, N, J>, ) -> QVec3<L, M, T, I, K, N, J>
From three quantities of the same dimension.
Sourcepub fn splat(v: Qty<L, M, T, I, K, N, J>) -> QVec3<L, M, T, I, K, N, J>
pub fn splat(v: Qty<L, M, T, I, K, N, J>) -> QVec3<L, M, T, I, K, N, J>
The same quantity in all three components.
Sourcepub fn normalize(self) -> DVec3
pub fn normalize(self) -> DVec3
Which way it points — a pure number, because a direction is a length over a length. Zero-length vectors give zero rather than a NaN.
Sourcepub fn along(self, direction: DVec3) -> Qty<L, M, T, I, K, N, J>
pub fn along(self, direction: DVec3) -> Qty<L, M, T, I, K, N, J>
The component along a unit direction. Projection does not change the
dimension, which is why this one is expressible and dot is not.
Sourcepub fn perpendicular_to(self, direction: DVec3) -> QVec3<L, M, T, I, K, N, J>
pub fn perpendicular_to(self, direction: DVec3) -> QVec3<L, M, T, I, K, N, J>
The part of this vector perpendicular to a unit direction.
Sourcepub fn lerp(
self,
other: QVec3<L, M, T, I, K, N, J>,
t: f64,
) -> QVec3<L, M, T, I, K, N, J>
pub fn lerp( self, other: QVec3<L, M, T, I, K, N, J>, t: f64, ) -> QVec3<L, M, T, I, K, N, J>
Straight-line interpolation, t = 0 here and t = 1 there.
Not clamped, so t outside the unit interval extrapolates. Useful for a strobe
sampling between two recorded states, and wrong for anything that should not leave
the segment.
Trait Implementations§
Source§impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Add for QVec3<L, M, T, I, K, N, J>
impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Add for QVec3<L, M, T, I, K, N, J>
Source§impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> AddAssign for QVec3<L, M, T, I, K, N, J>
impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> AddAssign for QVec3<L, M, T, I, K, N, J>
Source§fn add_assign(&mut self, rhs: QVec3<L, M, T, I, K, N, J>)
fn add_assign(&mut self, rhs: QVec3<L, M, T, I, K, N, J>)
Performs the
+= operation. Read moreSource§impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Clone for QVec3<L, M, T, I, K, N, J>
impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Clone for QVec3<L, M, T, I, K, N, J>
impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Copy for QVec3<L, M, T, I, K, N, J>
Source§impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Debug for QVec3<L, M, T, I, K, N, J>
impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Debug for QVec3<L, M, T, I, K, N, J>
Source§impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Default for QVec3<L, M, T, I, K, N, J>
impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Default for QVec3<L, M, T, I, K, N, J>
Source§impl<'de, const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Deserialize<'de> for QVec3<L, M, T, I, K, N, J>
impl<'de, const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Deserialize<'de> for QVec3<L, M, T, I, K, N, J>
Source§fn deserialize<D>(
d: D,
) -> Result<QVec3<L, M, T, I, K, N, J>, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>(
d: D,
) -> Result<QVec3<L, M, T, I, K, N, J>, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Div<f64> for QVec3<L, M, T, I, K, N, J>
impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Div<f64> for QVec3<L, M, T, I, K, N, J>
Source§impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Mul<f64> for QVec3<L, M, T, I, K, N, J>
impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Mul<f64> for QVec3<L, M, T, I, K, N, J>
Source§impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Neg for QVec3<L, M, T, I, K, N, J>
impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Neg for QVec3<L, M, T, I, K, N, J>
Source§impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> PartialEq for QVec3<L, M, T, I, K, N, J>
impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> PartialEq for QVec3<L, M, T, I, K, N, J>
Source§impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Serialize for QVec3<L, M, T, I, K, N, J>
impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Serialize for QVec3<L, M, T, I, K, N, J>
Source§fn serialize<S>(
&self,
s: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
fn serialize<S>(
&self,
s: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
Serialize this value into the given Serde serializer. Read more
impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> StructuralPartialEq for QVec3<L, M, T, I, K, N, J>
Auto Trait Implementations§
impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Freeze for QVec3<L, M, T, I, K, N, J>
impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> RefUnwindSafe for QVec3<L, M, T, I, K, N, J>
impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Send for QVec3<L, M, T, I, K, N, J>
impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Sync for QVec3<L, M, T, I, K, N, J>
impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> Unpin for QVec3<L, M, T, I, K, N, J>
impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> UnsafeUnpin for QVec3<L, M, T, I, K, N, J>
impl<const L: i8, const M: i8, const T: i8, const I: i8, const K: i8, const N: i8, const J: i8> UnwindSafe for QVec3<L, M, T, I, K, N, J>
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