Struct fixed_vectors::Vector2
source · pub struct Vector2<T> {
pub x: T,
pub y: T,
}
Expand description
Vector for holding two-dimensional values.
Example
use fixed_vectors::Vector2;
let mut vec2 = Vector2::new(1, 2);
vec2 += Vector2::new(1, 2);
assert_eq!(vec2.x, 2);
assert_eq!(vec2.y, 4);
Fields§
§x: T
§y: T
Implementations§
source§impl<T> Vector2<T>
impl<T> Vector2<T>
sourcepub const fn new(x: T, y: T) -> Self
pub const fn new(x: T, y: T) -> Self
Constructs a new vector with the specified values for each field.
Example
use fixed_vectors::Vector2;
let vec2 = Vector2::new(0, 0);
assert_eq!(vec2.x, 0);
assert_eq!(vec2.y, 0);
sourcepub fn to_array(self) -> [T; 2]
pub fn to_array(self) -> [T; 2]
Consumes the vector and returns its values as an array.
Example
use fixed_vectors::Vector2;
let vec2 = Vector2::new(0, 0);
let array = vec2.to_array();
assert_eq!(array, [0, 0]);
source§impl<T: Copy> Vector2<T>
impl<T: Copy> Vector2<T>
sourcepub const fn from_value(value: T) -> Self
pub const fn from_value(value: T) -> Self
Constructs a vector using the given value
as the value for all of its fields.
Example
use fixed_vectors::Vector2;
let vec2 = Vector2::from_value(0);
assert_eq!(vec2, Vector2::new(0, 0));
source§impl<T: FloatCore> Vector2<T>
impl<T: FloatCore> Vector2<T>
sourcepub fn dot(&self, other: &Self) -> T
pub fn dot(&self, other: &Self) -> T
Returns the dot product of two vectors.
Example
use fixed_vectors::Vector2;
let a = Vector2::new(1.0, 2.0);
let b = Vector2::new(2.0, 4.0);
let dot = a.dot(&b);
assert_eq!(dot, 10.0);
sourcepub fn length_squared(&self) -> T
pub fn length_squared(&self) -> T
Returns the squared magnitude of vector.
Example
use fixed_vectors::Vector3;
let vec3 = Vector3::new(3.33, 2.04, 1.337);
let lsq = vec3.length_squared();
assert!(lsq >= 17.0);
source§impl<T> Vector2<T>where
T: _FloatingPoint + FloatCore,
impl<T> Vector2<T>where T: _FloatingPoint + FloatCore,
sourcepub fn sqrt(self) -> Self
pub fn sqrt(self) -> Self
Consumes the vector and returns it with all of its fields converted to their square-root.
Example
use fixed_vectors::Vector2;
let vec2 = Vector2::new(64.0, 25.0).sqrt();
assert_eq!(vec2, Vector2::new(8.0, 5.0));
sourcepub fn length(&self) -> T
pub fn length(&self) -> T
Returns the magnitude of the vector.
Example
use fixed_vectors::Vector3;
let vec3 = Vector3::new(1.5, 2.0, 3.33);
let length = vec3.length();
assert!(length < 4.2);
sourcepub fn normalized(self) -> Self
pub fn normalized(self) -> Self
Consumes the vector and returns it as normalized vector.
Example
use fixed_vectors::Vector2;
let vec2 = Vector2::new(14.3, 7.9).normalized();
assert!(vec2.x < 1.0);
assert!(vec2.y < 1.0);
Trait Implementations§
source§impl<T: AddAssign + Copy> AddAssign<T> for Vector2<T>
impl<T: AddAssign + Copy> AddAssign<T> for Vector2<T>
source§fn add_assign(&mut self, other: T)
fn add_assign(&mut self, other: T)
Performs the
+=
operation. Read moresource§impl<T: AddAssign> AddAssign<Vector2<T>> for Vector2<T>
impl<T: AddAssign> AddAssign<Vector2<T>> for Vector2<T>
source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
Performs the
+=
operation. Read moresource§impl<T: BitAndAssign + Copy> BitAndAssign<T> for Vector2<T>
impl<T: BitAndAssign + Copy> BitAndAssign<T> for Vector2<T>
source§fn bitand_assign(&mut self, other: T)
fn bitand_assign(&mut self, other: T)
Performs the
&=
operation. Read moresource§impl<T: BitAndAssign> BitAndAssign<Vector2<T>> for Vector2<T>
impl<T: BitAndAssign> BitAndAssign<Vector2<T>> for Vector2<T>
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
Performs the
&=
operation. Read moresource§impl<T: BitOrAssign + Copy> BitOrAssign<T> for Vector2<T>
impl<T: BitOrAssign + Copy> BitOrAssign<T> for Vector2<T>
source§fn bitor_assign(&mut self, other: T)
fn bitor_assign(&mut self, other: T)
Performs the
|=
operation. Read moresource§impl<T: BitOrAssign> BitOrAssign<Vector2<T>> for Vector2<T>
impl<T: BitOrAssign> BitOrAssign<Vector2<T>> for Vector2<T>
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
Performs the
|=
operation. Read moresource§impl<T: BitXorAssign + Copy> BitXorAssign<T> for Vector2<T>
impl<T: BitXorAssign + Copy> BitXorAssign<T> for Vector2<T>
source§fn bitxor_assign(&mut self, other: T)
fn bitxor_assign(&mut self, other: T)
Performs the
^=
operation. Read moresource§impl<T: BitXorAssign> BitXorAssign<Vector2<T>> for Vector2<T>
impl<T: BitXorAssign> BitXorAssign<Vector2<T>> for Vector2<T>
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
Performs the
^=
operation. Read moresource§impl<T: DivAssign + Copy> DivAssign<T> for Vector2<T>
impl<T: DivAssign + Copy> DivAssign<T> for Vector2<T>
source§fn div_assign(&mut self, other: T)
fn div_assign(&mut self, other: T)
Performs the
/=
operation. Read moresource§impl<T: DivAssign> DivAssign<Vector2<T>> for Vector2<T>
impl<T: DivAssign> DivAssign<Vector2<T>> for Vector2<T>
source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
Performs the
/=
operation. Read moresource§impl<T: MulAssign + Copy> MulAssign<T> for Vector2<T>
impl<T: MulAssign + Copy> MulAssign<T> for Vector2<T>
source§fn mul_assign(&mut self, other: T)
fn mul_assign(&mut self, other: T)
Performs the
*=
operation. Read moresource§impl<T: MulAssign> MulAssign<Vector2<T>> for Vector2<T>
impl<T: MulAssign> MulAssign<Vector2<T>> for Vector2<T>
source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
Performs the
*=
operation. Read moresource§impl<T: PartialEq> PartialEq<Vector2<T>> for Vector2<T>
impl<T: PartialEq> PartialEq<Vector2<T>> for Vector2<T>
source§impl<T: RemAssign + Copy> RemAssign<T> for Vector2<T>
impl<T: RemAssign + Copy> RemAssign<T> for Vector2<T>
source§fn rem_assign(&mut self, other: T)
fn rem_assign(&mut self, other: T)
Performs the
%=
operation. Read moresource§impl<T: RemAssign> RemAssign<Vector2<T>> for Vector2<T>
impl<T: RemAssign> RemAssign<Vector2<T>> for Vector2<T>
source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
Performs the
%=
operation. Read moresource§impl<T: SubAssign + Copy> SubAssign<T> for Vector2<T>
impl<T: SubAssign + Copy> SubAssign<T> for Vector2<T>
source§fn sub_assign(&mut self, other: T)
fn sub_assign(&mut self, other: T)
Performs the
-=
operation. Read moresource§impl<T: SubAssign> SubAssign<Vector2<T>> for Vector2<T>
impl<T: SubAssign> SubAssign<Vector2<T>> for Vector2<T>
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
Performs the
-=
operation. Read moreimpl<T: Copy> Copy for Vector2<T>
impl<T: Eq> Eq for Vector2<T>
Auto Trait Implementations§
impl<T> RefUnwindSafe for Vector2<T>where T: RefUnwindSafe,
impl<T> Send for Vector2<T>where T: Send,
impl<T> Sync for Vector2<T>where T: Sync,
impl<T> Unpin for Vector2<T>where T: Unpin,
impl<T> UnwindSafe for Vector2<T>where T: UnwindSafe,
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