#[repr(transparent)]pub struct Vec2(_);
Expand description
A 2-dimensional vector.
Implementations
sourceimpl Vec2
impl Vec2
sourcepub const fn unit_x() -> Vec2
👎 Deprecated: Use Vec2::X instead
pub const fn unit_x() -> Vec2
Use Vec2::X instead
Creates a vector with values [x: 1.0, y: 0.0]
.
sourcepub const fn unit_y() -> Vec2
👎 Deprecated: Use Vec2::Y instead
pub const fn unit_y() -> Vec2
Use Vec2::Y instead
Creates a vector with values [x: 0.0, y: 1.0]
.
sourcepub const fn zero() -> Vec2
👎 Deprecated: use ZERO constant instead
pub const fn zero() -> Vec2
use ZERO constant instead
Creates a vector with all elements set to 0.0
.
sourcepub const fn one() -> Vec2
👎 Deprecated: use ONE constant instead
pub const fn one() -> Vec2
use ONE constant instead
Creates a vector with all elements set to 1.0
.
sourcepub fn select(mask: BVec2, if_true: Vec2, if_false: Vec2) -> Vec2
pub fn select(mask: BVec2, if_true: Vec2, if_false: Vec2) -> Vec2
Creates a vector from the elements in if_true
and if_false
, selecting which to use
for each element of self
.
A true element in the mask uses the corresponding element from if_true
, and false
uses the element from if_false
.
sourcepub fn min(self, other: Vec2) -> Vec2
pub fn min(self, other: Vec2) -> Vec2
Returns a vector containing the mininum values for each element of self
and other
.
In other words this computes [self.x.max(other.x), self.y.max(other.y), ..]
.
sourcepub fn max(self, other: Vec2) -> Vec2
pub fn max(self, other: Vec2) -> Vec2
Returns a vector containing the maximum values for each element of self
and other
.
In other words this computes [self.x.max(other.x), self.y.max(other.y), ..]
.
sourcepub fn clamp(self, min: Vec2, max: Vec2) -> Vec2
pub fn clamp(self, min: Vec2, max: Vec2) -> Vec2
Component-wise clamping of values, similar to [std::f32::clamp
].
Each element in min
must be less-or-equal to the corresponing element in max
.
If the glam-assert
feature is enabled, the function will panic if the contract is not
met, otherwise the behavior is undefined.
sourcepub fn min_element(self) -> f32
pub fn min_element(self) -> f32
Returns the horizontal minimum of self
.
In other words this computes min(x, y, ..)
.
sourcepub fn max_element(self) -> f32
pub fn max_element(self) -> f32
Returns the horizontal maximum of self
.
In other words this computes max(x, y, ..)
.
sourcepub fn cmpeq(self, other: Vec2) -> BVec2
pub fn cmpeq(self, other: Vec2) -> BVec2
Returns a vector mask containing the result of a ==
comparison for each element of
self
and other
.
In other words, this computes [self.x == other.x, self.y == other.y, ..]
for all
elements.
sourcepub fn cmpne(self, other: Vec2) -> BVec2
pub fn cmpne(self, other: Vec2) -> BVec2
Returns a vector mask containing the result of a !=
comparison for each element of
self
and other
.
In other words this computes [self.x != other.x, self.y != other.y, ..]
for all
elements.
sourcepub fn cmpge(self, other: Vec2) -> BVec2
pub fn cmpge(self, other: Vec2) -> BVec2
Returns a vector mask containing the result of a >=
comparison for each element of
self
and other
.
In other words this computes [self.x >= other.x, self.y >= other.y, ..]
for all
elements.
sourcepub fn cmpgt(self, other: Vec2) -> BVec2
pub fn cmpgt(self, other: Vec2) -> BVec2
Returns a vector mask containing the result of a >
comparison for each element of
self
and other
.
In other words this computes [self.x > other.x, self.y > other.y, ..]
for all
elements.
sourcepub fn cmple(self, other: Vec2) -> BVec2
pub fn cmple(self, other: Vec2) -> BVec2
Returns a vector mask containing the result of a <=
comparison for each element of
self
and other
.
In other words this computes [self.x <= other.x, self.y <= other.y, ..]
for all
elements.
sourcepub fn cmplt(self, other: Vec2) -> BVec2
pub fn cmplt(self, other: Vec2) -> BVec2
Returns a vector mask containing the result of a <
comparison for each element of
self
and other
.
In other words this computes [self.x < other.x, self.y < other.y, ..]
for all
elements.
sourcepub fn from_slice_unaligned(slice: &[f32]) -> Vec2
pub fn from_slice_unaligned(slice: &[f32]) -> Vec2
Creates a vector from the first N values in slice
.
Panics
Panics if slice
is less than N 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 N elements in slice
.
Panics
Panics if slice
is less than N elements long.
sourcepub fn abs(self) -> Vec2
pub fn abs(self) -> Vec2
Returns a vector containing the absolute value of each element of self
.
sourcepub fn signum(self) -> Vec2
pub fn signum(self) -> Vec2
Returns a vector 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 is_finite(self) -> bool
pub fn is_finite(self) -> bool
Returns true
if, and only if, all elements are finite. If any element is either
NaN
, positive or negative infinity, this will return false
.
sourcepub fn is_nan_mask(self) -> BVec2
pub fn is_nan_mask(self) -> BVec2
Performs is_nan
on each element of self, returning a vector mask of the results.
In other words, this computes [x.is_nan(), y.is_nan(), z.is_nan(), w.is_nan()]
.
sourcepub fn length_squared(self) -> f32
pub fn length_squared(self) -> f32
Computes the squared length of self
.
This is faster than length()
as it avoids a square root operation.
sourcepub fn length_recip(self) -> f32
pub fn length_recip(self) -> f32
Computes 1.0 / length()
.
For valid results, self
must not be of length zero.
sourcepub fn distance(self, other: Vec2) -> f32
pub fn distance(self, other: Vec2) -> f32
Computes the Euclidean distance between two points in space.
sourcepub fn distance_squared(self, other: Vec2) -> f32
pub fn distance_squared(self, other: Vec2) -> f32
Compute the squared euclidean distance between two points in space.
sourcepub fn normalize(self) -> Vec2
pub fn normalize(self) -> Vec2
Returns self
normalized to length 1.0.
For valid results, self
must not be of length zero, nor very close to zero.
See also Self::try_normalize
and Self::normalize_or_zero
.
sourcepub fn try_normalize(self) -> Option<Vec2>
pub fn try_normalize(self) -> Option<Vec2>
Returns self
normalized to length 1.0 if possible, else returns None
.
In particular, if the input is zero (or very close to zero), or non-finite,
the result of this operation will be None
.
See also Self::normalize_or_zero
.
sourcepub fn normalize_or_zero(self) -> Vec2
pub fn normalize_or_zero(self) -> Vec2
Returns self
normalized to length 1.0 if possible, else returns zero.
In particular, if the input is zero (or very close to zero), or non-finite, the result of this operation will be zero.
See also Self::try_normalize
.
sourcepub fn is_normalized(self) -> bool
pub fn is_normalized(self) -> bool
Returns whether self
is length 1.0
or not.
Uses a precision threshold of 1e-6
.
sourcepub fn round(self) -> Vec2
pub fn round(self) -> Vec2
Returns a vector containing the nearest integer to a number for each element of self
.
Round half-way cases away from 0.0.
sourcepub fn floor(self) -> Vec2
pub fn floor(self) -> Vec2
Returns a vector containing the largest integer less than or equal to a number for each
element of self
.
sourcepub fn ceil(self) -> Vec2
pub fn ceil(self) -> Vec2
Returns a vector containing the smallest integer greater than or equal to a number for
each element of self
.
sourcepub fn exp(self) -> Vec2
pub fn exp(self) -> Vec2
Returns a vector containing e^self
(the exponential function) for each element of
self
.
sourcepub fn powf(self, n: f32) -> Vec2
pub fn powf(self, n: f32) -> Vec2
Returns a vector containing each element of self
raised to the power of n
.
sourcepub fn recip(self) -> Vec2
pub fn recip(self) -> Vec2
Returns a vector containing the reciprocal 1.0/n
of each element of self
.
sourcepub fn lerp(self, other: Vec2, s: f32) -> Vec2
pub fn lerp(self, other: Vec2, s: f32) -> Vec2
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 abs_diff_eq(self, other: Vec2, max_abs_diff: f32) -> bool
pub fn abs_diff_eq(self, other: Vec2, 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 vectors 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 see comparing floating point numbers.
sourcepub fn clamp_length(self, min: f32, max: f32) -> Vec2
pub fn clamp_length(self, min: f32, max: f32) -> Vec2
Returns a vector with a length no less than min
and no more than max
sourcepub fn clamp_length_max(self, max: f32) -> Vec2
pub fn clamp_length_max(self, max: f32) -> Vec2
Returns a vector with a length no more than max
sourcepub fn clamp_length_min(self, min: f32) -> Vec2
pub fn clamp_length_min(self, min: f32) -> Vec2
Returns a vector with a length no less than min
sourcepub fn angle_between(self, other: Vec2) -> f32
pub fn angle_between(self, other: Vec2) -> f32
Returns the angle (in radians) between self
and other
.
The input vectors do not need to be unit length however they must be non-zero.
Trait Implementations
sourceimpl AddAssign<Vec2> for Vec2
impl AddAssign<Vec2> for Vec2
sourcepub fn add_assign(&mut self, other: Vec2)
pub fn add_assign(&mut self, other: Vec2)
Performs the +=
operation. Read more
sourceimpl DivAssign<Vec2> for Vec2
impl DivAssign<Vec2> for Vec2
sourcepub fn div_assign(&mut self, other: Vec2)
pub fn div_assign(&mut self, other: Vec2)
Performs the /=
operation. Read more
sourceimpl DivAssign<f32> for Vec2
impl DivAssign<f32> for Vec2
sourcepub fn div_assign(&mut self, other: f32)
pub fn div_assign(&mut self, other: f32)
Performs the /=
operation. Read more
sourceimpl MulAssign<Vec2> for Vec2
impl MulAssign<Vec2> for Vec2
sourcepub fn mul_assign(&mut self, other: Vec2)
pub fn mul_assign(&mut self, other: Vec2)
Performs the *=
operation. Read more
sourceimpl MulAssign<f32> for Vec2
impl MulAssign<f32> for Vec2
sourcepub fn mul_assign(&mut self, other: f32)
pub fn mul_assign(&mut self, other: f32)
Performs the *=
operation. Read more
sourceimpl PartialOrd<Vec2> for Vec2
impl PartialOrd<Vec2> for Vec2
sourcepub fn partial_cmp(&self, other: &Vec2) -> Option<Ordering>
pub fn partial_cmp(&self, other: &Vec2) -> 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<Vec2> for Vec2
impl SubAssign<Vec2> for Vec2
sourcepub fn sub_assign(&mut self, other: Vec2)
pub fn sub_assign(&mut self, other: Vec2)
Performs the -=
operation. Read more
sourceimpl Vec2Swizzles for Vec2
impl Vec2Swizzles for Vec2
type Vec3 = Vec3
type Vec4 = Vec4
pub fn xxxx(self) -> Vec4
pub fn xxxy(self) -> Vec4
pub fn xxyx(self) -> Vec4
pub fn xxyy(self) -> Vec4
pub fn xyxx(self) -> Vec4
pub fn xyxy(self) -> Vec4
pub fn xyyx(self) -> Vec4
pub fn xyyy(self) -> Vec4
pub fn yxxx(self) -> Vec4
pub fn yxxy(self) -> Vec4
pub fn yxyx(self) -> Vec4
pub fn yxyy(self) -> Vec4
pub fn yyxx(self) -> Vec4
pub fn yyxy(self) -> Vec4
pub fn yyyx(self) -> Vec4
pub fn yyyy(self) -> Vec4
pub fn xxx(self) -> Vec3
pub fn xxy(self) -> Vec3
pub fn xyx(self) -> Vec3
pub fn xyy(self) -> Vec3
pub fn yxx(self) -> Vec3
pub fn yxy(self) -> Vec3
pub fn yyx(self) -> Vec3
pub fn yyy(self) -> Vec3
pub fn xx(self) -> Vec2
pub fn yx(self) -> Vec2
pub fn yy(self) -> Vec2
fn xy(self) -> Self
impl Copy for Vec2
Auto Trait Implementations
impl RefUnwindSafe for Vec2
impl Send for Vec2
impl Sync for Vec2
impl Unpin for Vec2
impl UnwindSafe for Vec2
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
pub fn from_sample_(s: S) -> S
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.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more