Expand description
A vector has a direction and length.
A Vec2
is often used to represent a size.
emath represents positions using crate::Pos2
.
Normally the units are points (logical pixels).
Fields
x: f32
Rightwards. Width.
y: f32
Downwards. Height.
Implementations
sourceimpl Vec2
impl Vec2
pub const X: Vec2 = Vec2{ x: 1.0, y: 0.0,}
pub const Y: Vec2 = Vec2{ x: 0.0, y: 1.0,}
pub const RIGHT: Vec2 = Vec2{ x: 1.0, y: 0.0,}
pub const LEFT: Vec2 = Vec2{ x: -1.0, y: 0.0,}
pub const UP: Vec2 = Vec2{ x: 0.0, y: -1.0,}
pub const DOWN: Vec2 = Vec2{ x: 0.0, y: 1.0,}
pub const ZERO: Vec2 = Self{ x: 0.0, y: 0.0,}
pub const INFINITY: Vec2 = Self::splat(f32::INFINITY)
pub const fn new(x: f32, y: f32) -> Vec2
sourcepub fn to_pos2(self) -> Pos2
pub fn to_pos2(self) -> Pos2
Treat this vector as a position.
v.to_pos2()
is equivalent to Pos2::default() + v
.
sourcepub fn normalized(self) -> Vec2
pub fn normalized(self) -> Vec2
Safe normalize: returns zero if input is zero.
sourcepub fn rot90(self) -> Vec2
pub fn rot90(self) -> Vec2
Rotates the vector by 90°, i.e positive X to positive Y (clockwise in egui coordinates).
pub fn length(self) -> f32
pub fn length_sq(self) -> f32
sourcepub fn angle(self) -> f32
pub fn angle(self) -> f32
Measures the angle of the vector.
use std::f32::consts::TAU;
assert_eq!(Vec2::ZERO.angle(), 0.0);
assert_eq!(Vec2::angled(0.0).angle(), 0.0);
assert_eq!(Vec2::angled(1.0).angle(), 1.0);
assert_eq!(Vec2::X.angle(), 0.0);
assert_eq!(Vec2::Y.angle(), 0.25 * TAU);
assert_eq!(Vec2::RIGHT.angle(), 0.0);
assert_eq!(Vec2::DOWN.angle(), 0.25 * TAU);
assert_eq!(Vec2::UP.angle(), -0.25 * TAU);
sourcepub fn angled(angle: f32) -> Vec2
pub fn angled(angle: f32) -> Vec2
Create a unit vector with the given CW angle (in radians).
- An angle of zero gives the unit X axis.
- An angle of 𝞃/4 = 90° gives the unit Y axis.
use std::f32::consts::TAU;
assert_eq!(Vec2::angled(0.0), Vec2::X);
assert!((Vec2::angled(0.25 * TAU) - Vec2::Y).length() < 1e-5);
pub fn floor(self) -> Vec2
pub fn round(self) -> Vec2
pub fn ceil(self) -> Vec2
pub fn abs(self) -> Vec2
pub fn min(self, other: Vec2) -> Vec2
pub fn max(self, other: Vec2) -> Vec2
pub fn clamp(self, min: Vec2, max: Vec2) -> Vec2
Trait Implementations
sourceimpl AddAssign<Vec2> for Pos2
impl AddAssign<Vec2> for Pos2
sourcefn add_assign(&mut self, rhs: Vec2)
fn add_assign(&mut self, rhs: Vec2)
Performs the +=
operation. Read more
sourceimpl AddAssign<Vec2> for Vec2
impl AddAssign<Vec2> for Vec2
sourcefn add_assign(&mut self, rhs: Vec2)
fn add_assign(&mut self, rhs: Vec2)
Performs the +=
operation. Read more
sourceimpl<'de> Deserialize<'de> for Vec2
impl<'de> Deserialize<'de> for Vec2
sourcefn deserialize<__D>(
__deserializer: __D
) -> Result<Vec2, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D
) -> Result<Vec2, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl MulAssign<f32> for Vec2
impl MulAssign<f32> for Vec2
sourcefn mul_assign(&mut self, rhs: f32)
fn mul_assign(&mut self, rhs: f32)
Performs the *=
operation. Read more
sourceimpl PartialEq<Vec2> for Vec2
impl PartialEq<Vec2> for Vec2
sourceimpl Serialize for Vec2
impl Serialize for Vec2
sourcefn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
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
sourceimpl SubAssign<Vec2> for Pos2
impl SubAssign<Vec2> for Pos2
sourcefn sub_assign(&mut self, rhs: Vec2)
fn sub_assign(&mut self, rhs: Vec2)
Performs the -=
operation. Read more
sourceimpl SubAssign<Vec2> for Vec2
impl SubAssign<Vec2> for Vec2
sourcefn sub_assign(&mut self, rhs: Vec2)
fn sub_assign(&mut self, rhs: Vec2)
Performs the -=
operation. Read more
impl Copy for Vec2
impl Eq for Vec2
impl Pod for Vec2
impl StructuralPartialEq 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 · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> CheckedBitPattern for T where
T: AnyBitPattern,
impl<T> CheckedBitPattern for T where
T: AnyBitPattern,
type Bits = T
type Bits = T
Self
must have the same layout as the specified Bits
except for
the possible invalid bit patterns being checked during
is_valid_bit_pattern
. Read more
sourcefn is_valid_bit_pattern(_bits: &T) -> bool
fn is_valid_bit_pattern(_bits: &T) -> bool
If this function returns true, then it must be valid to reinterpret bits
as &Self
. Read more