Expand description
A 3-dimensional vector without SIMD support.
Fields
x: f32
y: f32
z: f32
Implementations
sourceimpl Vec3
impl Vec3
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 Vec3::length()
as it avoids a square
root operation.
sourcepub fn length_recip(self) -> f32
pub fn length_recip(self) -> f32
Computes 1.0 / Vec3::length()
.
For valid results, self
must not be of length zero.
sourcepub fn distance(self, other: Vec3) -> f32
pub fn distance(self, other: Vec3) -> f32
Computes the Euclidean distance between two points in space.
sourcepub fn distance_squared(self, other: Vec3) -> f32
pub fn distance_squared(self, other: Vec3) -> f32
Compute the squared Euclidean distance between two points in space.
sourcepub fn normalize(self) -> Vec3
pub fn normalize(self) -> Vec3
Returns self
normalized to length 1.0.
For valid results, self
must not be of length zero.
sourcepub fn min(self, other: Vec3) -> Vec3
pub fn min(self, other: Vec3) -> Vec3
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: Vec3) -> Vec3
pub fn max(self, other: Vec3) -> Vec3
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: Vec3) -> Vec3Mask
pub fn cmpeq(self, other: Vec3) -> Vec3Mask
Performs a vertical ==
comparison between self
and other
,
returning a Vec3Mask
of the results.
In other words, this computes [x1 == x2, y1 == y2, z1 == z2]
.
sourcepub fn cmpne(self, other: Vec3) -> Vec3Mask
pub fn cmpne(self, other: Vec3) -> Vec3Mask
Performs a vertical !=
comparison between self
and other
,
returning a Vec3Mask
of the results.
In other words, this computes [x1 != x2, y1 != y2, z1 != z2]
.
sourcepub fn cmpge(self, other: Vec3) -> Vec3Mask
pub fn cmpge(self, other: Vec3) -> Vec3Mask
Performs a vertical >=
comparison between self
and other
,
returning a Vec3Mask
of the results.
In other words, this computes [x1 >= x2, y1 >= y2, z1 >= z2]
.
sourcepub fn cmpgt(self, other: Vec3) -> Vec3Mask
pub fn cmpgt(self, other: Vec3) -> Vec3Mask
Performs a vertical >
comparison between self
and other
,
returning a Vec3Mask
of the results.
In other words, this computes [x1 > x2, y1 > y2, z1 > z2]
.
sourcepub fn cmple(self, other: Vec3) -> Vec3Mask
pub fn cmple(self, other: Vec3) -> Vec3Mask
Performs a vertical <=
comparison between self
and other
,
returning a Vec3Mask
of the results.
In other words, this computes [x1 <= x2, y1 <= y2, z1 <= z2]
.
sourcepub fn cmplt(self, other: Vec3) -> Vec3Mask
pub fn cmplt(self, other: Vec3) -> Vec3Mask
Performs a vertical <
comparison between self
and other
,
returning a Vec3Mask
of the results.
In other words, this computes [x1 < x2, y1 < y2, z1 < z2]
.
sourcepub fn from_slice_unaligned(slice: &[f32]) -> Vec3
pub fn from_slice_unaligned(slice: &[f32]) -> Vec3
Creates a Vec3
from the first three 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 round(self) -> Vec3
pub fn round(self) -> Vec3
Returns a Vec3
containing the nearest integer to a number for each element of self
.
Round half-way cases away from 0.0.
sourcepub fn floor(self) -> Vec3
pub fn floor(self) -> Vec3
Returns a Vec3
containing the largest integer less than or equal to a number for each
element of self
.
sourcepub fn ceil(self) -> Vec3
pub fn ceil(self) -> Vec3
Returns a Vec3
containing the smallest integer greater than or equal to a number for each
element of self
.
sourcepub fn is_nan(self) -> Vec3Mask
pub fn is_nan(self) -> Vec3Mask
Performs is_nan()
on each element of self, returning a Vec3Mask
of the results.
In other words, this computes [x.is_nan(), y.is_nan(), z.is_nan()]
.
sourcepub fn signum(self) -> Vec3
pub fn signum(self) -> Vec3
Returns a Vec3
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) -> Vec3
pub fn recip(self) -> Vec3
Returns a Vec3
containing the reciprocal 1.0/n
of each element of self
.
sourcepub fn lerp(self, other: Vec3, s: f32) -> Vec3
pub fn lerp(self, other: Vec3, s: f32) -> Vec3
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: Vec3, max_abs_diff: f32) -> bool
pub fn abs_diff_eq(self, other: Vec3, 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 Vec3
’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: Vec3) -> f32
pub fn angle_between(self, other: Vec3) -> 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<Vec3> for Vec3
impl AddAssign<Vec3> for Vec3
sourcefn add_assign(&mut self, other: Vec3)
fn add_assign(&mut self, other: Vec3)
Performs the +=
operation. Read more
sourceimpl DivAssign<Vec3> for Vec3
impl DivAssign<Vec3> for Vec3
sourcefn div_assign(&mut self, other: Vec3)
fn div_assign(&mut self, other: Vec3)
Performs the /=
operation. Read more
sourceimpl DivAssign<f32> for Vec3
impl DivAssign<f32> for Vec3
sourcefn div_assign(&mut self, other: f32)
fn div_assign(&mut self, other: f32)
Performs the /=
operation. Read more
sourceimpl MulAssign<Vec3> for Vec3
impl MulAssign<Vec3> for Vec3
sourcefn mul_assign(&mut self, other: Vec3)
fn mul_assign(&mut self, other: Vec3)
Performs the *=
operation. Read more
sourceimpl MulAssign<f32> for Vec3
impl MulAssign<f32> for Vec3
sourcefn mul_assign(&mut self, other: f32)
fn mul_assign(&mut self, other: f32)
Performs the *=
operation. Read more
sourceimpl PartialEq<Vec3> for Vec3
impl PartialEq<Vec3> for Vec3
sourceimpl PartialOrd<Vec3> for Vec3
impl PartialOrd<Vec3> for Vec3
sourcefn partial_cmp(&self, other: &Vec3) -> Option<Ordering>
fn partial_cmp(&self, other: &Vec3) -> 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<Vec3> for Vec3
impl SubAssign<Vec3> for Vec3
sourcefn sub_assign(&mut self, other: Vec3)
fn sub_assign(&mut self, other: Vec3)
Performs the -=
operation. Read more
sourceimpl Vec3Swizzles for Vec3
impl Vec3Swizzles for Vec3
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) -> Vec3
fn xxy(self) -> Vec3
fn xxz(self) -> Vec3
fn xyx(self) -> Vec3
fn xyy(self) -> Vec3
fn xzx(self) -> Vec3
fn xzy(self) -> Vec3
fn xzz(self) -> Vec3
fn yxx(self) -> Vec3
fn yxy(self) -> Vec3
fn yxz(self) -> Vec3
fn yyx(self) -> Vec3
fn yyy(self) -> Vec3
fn yyz(self) -> Vec3
fn yzx(self) -> Vec3
fn yzy(self) -> Vec3
fn yzz(self) -> Vec3
fn zxx(self) -> Vec3
fn zxy(self) -> Vec3
fn zxz(self) -> Vec3
fn zyx(self) -> Vec3
fn zyy(self) -> Vec3
fn zyz(self) -> Vec3
fn zzx(self) -> Vec3
fn zzy(self) -> Vec3
fn zzz(self) -> Vec3
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 Vec3
impl StructuralPartialEq for Vec3
Auto Trait Implementations
impl RefUnwindSafe for Vec3
impl Send for Vec3
impl Sync for Vec3
impl Unpin for Vec3
impl UnwindSafe for Vec3
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