#[repr(align(16), C)]pub struct Vec3A(_);
Implementations
sourceimpl Vec3A
impl Vec3A
sourcepub fn truncate(self) -> Vec2
pub fn truncate(self) -> Vec2
Creates a Vec2
from the x
and y
elements of self
, discarding z
.
Truncation may also be performed by using self.xy()
or Vec2::from()
.
pub fn x(self) -> f32
please use .x
instead
pub fn y(self) -> f32
please use .y
instead
pub fn z(self) -> f32
please use .z
instead
pub fn x_mut(&mut self) -> &mut f32
please use .x
instead
pub fn y_mut(&mut self) -> &mut f32
please use .y
instead
pub fn z_mut(&mut self) -> &mut f32
please use .z
instead
pub fn set_x(&mut self, x: f32)
please use .x
instead
pub fn set_y(&mut self, y: f32)
please use .y
instead
pub fn set_z(&mut self, z: f32)
please use .z
instead
sourcepub fn length_squared(self) -> f32
pub fn length_squared(self) -> f32
Computes the squared length of self
.
This is generally faster than Vec3A::length()
as it avoids a square
root operation.
sourcepub fn length_recip(self) -> f32
pub fn length_recip(self) -> f32
Computes 1.0 / Vec3A::length()
.
For valid results, self
must not be of length zero.
sourcepub fn distance(self, other: Vec3A) -> f32
pub fn distance(self, other: Vec3A) -> f32
Computes the Euclidean distance between two points in space.
sourcepub fn distance_squared(self, other: Vec3A) -> f32
pub fn distance_squared(self, other: Vec3A) -> f32
Compute the squared euclidean distance between two points in space.
sourcepub fn normalize(self) -> Vec3A
pub fn normalize(self) -> Vec3A
Returns self
normalized to length 1.0.
For valid results, self
must not be of length zero.
sourcepub fn min(self, other: Vec3A) -> Vec3A
pub fn min(self, other: Vec3A) -> Vec3A
Returns the vertical minimum of self
and other
.
In other words, this computes
[x: min(x1, x2), y: min(y1, y2), z: min(z1, z2)]
,
taking the minimum of each element individually.
sourcepub fn max(self, other: Vec3A) -> Vec3A
pub fn max(self, other: Vec3A) -> Vec3A
Returns the vertical maximum of self
and other
.
In other words, this computes
[x: max(x1, x2), y: max(y1, y2), z: max(z1, z2)]
,
taking the maximum of each element individually.
sourcepub fn min_element(self) -> f32
pub fn min_element(self) -> f32
Returns the horizontal minimum of self
’s elements.
In other words, this computes min(x, y, z)
.
sourcepub fn max_element(self) -> f32
pub fn max_element(self) -> f32
Returns the horizontal maximum of self
’s elements.
In other words, this computes max(x, y, z)
.
sourcepub fn cmpeq(self, other: Vec3A) -> Vec3AMask
pub fn cmpeq(self, other: Vec3A) -> Vec3AMask
Performs a vertical ==
comparison between self
and other
,
returning a Vec3AMask
of the results.
In other words, this computes [x1 == x2, y1 == y2, z1 == z2, w1 == w2]
.
sourcepub fn cmpne(self, other: Vec3A) -> Vec3AMask
pub fn cmpne(self, other: Vec3A) -> Vec3AMask
Performs a vertical !=
comparison between self
and other
,
returning a Vec3AMask
of the results.
In other words, this computes [x1 != x2, y1 != y2, z1 != z2, w1 != w2]
.
sourcepub fn cmpge(self, other: Vec3A) -> Vec3AMask
pub fn cmpge(self, other: Vec3A) -> Vec3AMask
Performs a vertical >=
comparison between self
and other
,
returning a Vec3AMask
of the results.
In other words, this computes [x1 >= x2, y1 >= y2, z1 >= z2, w1 >= w2]
.
sourcepub fn cmpgt(self, other: Vec3A) -> Vec3AMask
pub fn cmpgt(self, other: Vec3A) -> Vec3AMask
Performs a vertical >
comparison between self
and other
,
returning a Vec3AMask
of the results.
In other words, this computes [x1 > x2, y1 > y2, z1 > z2, w1 > w2]
.
sourcepub fn cmple(self, other: Vec3A) -> Vec3AMask
pub fn cmple(self, other: Vec3A) -> Vec3AMask
Performs a vertical <=
comparison between self
and other
,
returning a Vec3AMask
of the results.
In other words, this computes [x1 <= x2, y1 <= y2, z1 <= z2, w1 <= w2]
.
sourcepub fn cmplt(self, other: Vec3A) -> Vec3AMask
pub fn cmplt(self, other: Vec3A) -> Vec3AMask
Performs a vertical <
comparison between self
and other
,
returning a Vec3AMask
of the results.
In other words, this computes [x1 < x2, y1 < y2, z1 < z2, w1 < w2]
.
sourcepub fn from_slice_unaligned(slice: &[f32]) -> Vec3A
pub fn from_slice_unaligned(slice: &[f32]) -> Vec3A
Creates a Vec3A
from the first four values in slice
.
Panics
Panics if slice
is less than three elements long.
sourcepub fn write_to_slice_unaligned(self, slice: &mut [f32])
pub fn write_to_slice_unaligned(self, slice: &mut [f32])
Writes the elements of self
to the first three elements in slice
.
Panics
Panics if slice
is less than three elements long.
sourcepub fn abs(self) -> Vec3A
pub fn abs(self) -> Vec3A
Returns a Vec3A
containing the absolute value of each element of self
.
sourcepub fn round(self) -> Vec3A
pub fn round(self) -> Vec3A
Returns a Vec3A
containing the nearest integer to a number for each element of self
.
Round half-way cases away from 0.0.
sourcepub fn floor(self) -> Vec3A
pub fn floor(self) -> Vec3A
Returns a Vec3A
containing the largest integer less than or equal to a number for each
element of self
.
sourcepub fn ceil(self) -> Vec3A
pub fn ceil(self) -> Vec3A
Returns a Vec3A
containing the smallest integer greater than or equal to a number for each
element of self
.
sourcepub fn is_nan(self) -> Vec3AMask
pub fn is_nan(self) -> Vec3AMask
Performs is_nan()
on each element of self, returning a Vec3AMask
of the results.
In other words, this computes [x.is_nan(), y.is_nan(), z.is_nan()]
.
sourcepub fn signum(self) -> Vec3A
pub fn signum(self) -> Vec3A
Returns a Vec3A
with elements representing the sign of self
.
1.0
if the number is positive,+0.0
orINFINITY
-1.0
if the number is negative,-0.0
orNEG_INFINITY
NAN
if the number isNAN
sourcepub fn recip(self) -> Vec3A
pub fn recip(self) -> Vec3A
Returns a Vec3A
containing the reciprocal 1.0/n
of each element of self
.
sourcepub fn lerp(self, other: Vec3A, s: f32) -> Vec3A
pub fn lerp(self, other: Vec3A, s: f32) -> Vec3A
Performs a linear interpolation between self
and other
based on
the value s
.
When s
is 0.0
, the result will be equal to self
. When s
is 1.0
, the result will be equal to other
.
sourcepub fn is_normalized(self) -> bool
pub fn is_normalized(self) -> bool
Returns whether self
of length 1.0
or not.
Uses a precision threshold of 1e-6
.
sourcepub fn abs_diff_eq(self, other: Vec3A, max_abs_diff: f32) -> bool
pub fn abs_diff_eq(self, other: Vec3A, max_abs_diff: f32) -> bool
Returns true if the absolute difference of all elements between self
and other
is less than or equal to max_abs_diff
.
This can be used to compare if two Vec3A
’s contain similar elements. It
works best when comparing with a known value. The max_abs_diff
that
should be used used depends on the values being compared against.
For more on floating point comparisons see https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
sourcepub fn angle_between(self, other: Vec3A) -> f32
pub fn angle_between(self, other: Vec3A) -> f32
Returns the angle between two vectors, in radians.
The vectors do not need to be unit length, but this function does
perform a sqrt
.
Trait Implementations
sourceimpl AddAssign<Vec3A> for Vec3A
impl AddAssign<Vec3A> for Vec3A
sourcefn add_assign(&mut self, other: Vec3A)
fn add_assign(&mut self, other: Vec3A)
Performs the +=
operation. Read more
sourceimpl DivAssign<Vec3A> for Vec3A
impl DivAssign<Vec3A> for Vec3A
sourcefn div_assign(&mut self, other: Vec3A)
fn div_assign(&mut self, other: Vec3A)
Performs the /=
operation. Read more
sourceimpl DivAssign<f32> for Vec3A
impl DivAssign<f32> for Vec3A
sourcefn div_assign(&mut self, other: f32)
fn div_assign(&mut self, other: f32)
Performs the /=
operation. Read more
sourceimpl MulAssign<Vec3A> for Vec3A
impl MulAssign<Vec3A> for Vec3A
sourcefn mul_assign(&mut self, other: Vec3A)
fn mul_assign(&mut self, other: Vec3A)
Performs the *=
operation. Read more
sourceimpl MulAssign<f32> for Vec3A
impl MulAssign<f32> for Vec3A
sourcefn mul_assign(&mut self, other: f32)
fn mul_assign(&mut self, other: f32)
Performs the *=
operation. Read more
sourceimpl PartialEq<Vec3A> for Vec3A
impl PartialEq<Vec3A> for Vec3A
sourceimpl PartialOrd<Vec3A> for Vec3A
impl PartialOrd<Vec3A> for Vec3A
sourcefn partial_cmp(&self, other: &Vec3A) -> Option<Ordering>
fn partial_cmp(&self, other: &Vec3A) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
sourceimpl SubAssign<Vec3A> for Vec3A
impl SubAssign<Vec3A> for Vec3A
sourcefn sub_assign(&mut self, other: Vec3A)
fn sub_assign(&mut self, other: Vec3A)
Performs the -=
operation. Read more
sourceimpl Vec3ASwizzles for Vec3A
impl Vec3ASwizzles for Vec3A
fn xxxx(self) -> Vec4
fn xxxy(self) -> Vec4
fn xxxz(self) -> Vec4
fn xxyx(self) -> Vec4
fn xxyy(self) -> Vec4
fn xxyz(self) -> Vec4
fn xxzx(self) -> Vec4
fn xxzy(self) -> Vec4
fn xxzz(self) -> Vec4
fn xyxx(self) -> Vec4
fn xyxy(self) -> Vec4
fn xyxz(self) -> Vec4
fn xyyx(self) -> Vec4
fn xyyy(self) -> Vec4
fn xyyz(self) -> Vec4
fn xyzx(self) -> Vec4
fn xyzy(self) -> Vec4
fn xyzz(self) -> Vec4
fn xzxx(self) -> Vec4
fn xzxy(self) -> Vec4
fn xzxz(self) -> Vec4
fn xzyx(self) -> Vec4
fn xzyy(self) -> Vec4
fn xzyz(self) -> Vec4
fn xzzx(self) -> Vec4
fn xzzy(self) -> Vec4
fn xzzz(self) -> Vec4
fn yxxx(self) -> Vec4
fn yxxy(self) -> Vec4
fn yxxz(self) -> Vec4
fn yxyx(self) -> Vec4
fn yxyy(self) -> Vec4
fn yxyz(self) -> Vec4
fn yxzx(self) -> Vec4
fn yxzy(self) -> Vec4
fn yxzz(self) -> Vec4
fn yyxx(self) -> Vec4
fn yyxy(self) -> Vec4
fn yyxz(self) -> Vec4
fn yyyx(self) -> Vec4
fn yyyy(self) -> Vec4
fn yyyz(self) -> Vec4
fn yyzx(self) -> Vec4
fn yyzy(self) -> Vec4
fn yyzz(self) -> Vec4
fn yzxx(self) -> Vec4
fn yzxy(self) -> Vec4
fn yzxz(self) -> Vec4
fn yzyx(self) -> Vec4
fn yzyy(self) -> Vec4
fn yzyz(self) -> Vec4
fn yzzx(self) -> Vec4
fn yzzy(self) -> Vec4
fn yzzz(self) -> Vec4
fn zxxx(self) -> Vec4
fn zxxy(self) -> Vec4
fn zxxz(self) -> Vec4
fn zxyx(self) -> Vec4
fn zxyy(self) -> Vec4
fn zxyz(self) -> Vec4
fn zxzx(self) -> Vec4
fn zxzy(self) -> Vec4
fn zxzz(self) -> Vec4
fn zyxx(self) -> Vec4
fn zyxy(self) -> Vec4
fn zyxz(self) -> Vec4
fn zyyx(self) -> Vec4
fn zyyy(self) -> Vec4
fn zyyz(self) -> Vec4
fn zyzx(self) -> Vec4
fn zyzy(self) -> Vec4
fn zyzz(self) -> Vec4
fn zzxx(self) -> Vec4
fn zzxy(self) -> Vec4
fn zzxz(self) -> Vec4
fn zzyx(self) -> Vec4
fn zzyy(self) -> Vec4
fn zzyz(self) -> Vec4
fn zzzx(self) -> Vec4
fn zzzy(self) -> Vec4
fn zzzz(self) -> Vec4
fn xxx(self) -> Vec3A
fn xxy(self) -> Vec3A
fn xxz(self) -> Vec3A
fn xyx(self) -> Vec3A
fn xyy(self) -> Vec3A
fn xzx(self) -> Vec3A
fn xzy(self) -> Vec3A
fn xzz(self) -> Vec3A
fn yxx(self) -> Vec3A
fn yxy(self) -> Vec3A
fn yxz(self) -> Vec3A
fn yyx(self) -> Vec3A
fn yyy(self) -> Vec3A
fn yyz(self) -> Vec3A
fn yzx(self) -> Vec3A
fn yzy(self) -> Vec3A
fn yzz(self) -> Vec3A
fn zxx(self) -> Vec3A
fn zxy(self) -> Vec3A
fn zxz(self) -> Vec3A
fn zyx(self) -> Vec3A
fn zyy(self) -> Vec3A
fn zyz(self) -> Vec3A
fn zzx(self) -> Vec3A
fn zzy(self) -> Vec3A
fn zzz(self) -> Vec3A
fn xx(self) -> Vec2
fn xy(self) -> Vec2
fn xz(self) -> Vec2
fn yx(self) -> Vec2
fn yy(self) -> Vec2
fn yz(self) -> Vec2
fn zx(self) -> Vec2
fn zy(self) -> Vec2
fn zz(self) -> Vec2
impl Copy for Vec3A
impl StructuralPartialEq for Vec3A
Auto Trait Implementations
impl RefUnwindSafe for Vec3A
impl Send for Vec3A
impl Sync for Vec3A
impl Unpin for Vec3A
impl UnwindSafe for Vec3A
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
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