Struct cgmath::Vector2

source ·
pub struct Vector2<S> {
    pub x: S,
    pub y: S,
}

Fields§

§x: S§y: S

Implementations§

source§

impl<S> Vector2<S>

source

pub fn new(x: S, y: S) -> Vector2<S>

Construct a new vector, using the provided values.

source§

impl<S: Copy + Neg<Output = S>> Vector2<S>

source

pub fn neg_self(&mut self)

Negate this vector in-place (multiply by -1).

source§

impl<S: NumCast + Copy> Vector2<S>

source

pub fn cast<T: NumCast>(&self) -> Vector2<T>

Component-wise casting to another type

source§

impl<S: BaseNum> Vector2<S>

Operations specific to numeric two-dimensional vectors.

source

pub fn unit_x() -> Vector2<S>

A unit vector in the x direction.

source

pub fn unit_y() -> Vector2<S>

A unit vector in the y direction.

source

pub fn perp_dot(self, other: Vector2<S>) -> S

The perpendicular dot product of the vector and other.

source

pub fn extend(self, z: S) -> Vector3<S>

Create a Vector3, using the x and y values from this vector, and the provided z.

Trait Implementations§

source§

impl<'a, 'b, S: BaseNum> Add<&'a Vector2<S>> for &'b Point2<S>

§

type Output = Point2<S>

The resulting type after applying the + operator.
source§

fn add(self, v: &'a Vector2<S>) -> Point2<S>

Performs the + operation. Read more
source§

impl<'a, 'b, S: BaseNum> Add<&'a Vector2<S>> for &'b Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the + operator.
source§

fn add(self, other: &'a Vector2<S>) -> Vector2<S>

Performs the + operation. Read more
source§

impl<'a, S: BaseNum> Add<&'a Vector2<S>> for Point2<S>

§

type Output = Point2<S>

The resulting type after applying the + operator.
source§

fn add(self, v: &'a Vector2<S>) -> Point2<S>

Performs the + operation. Read more
source§

impl<'a, S: BaseNum> Add<&'a Vector2<S>> for Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the + operator.
source§

fn add(self, other: &'a Vector2<S>) -> Vector2<S>

Performs the + operation. Read more
source§

impl<'a, S: BaseNum> Add<S> for &'a Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the + operator.
source§

fn add(self, scalar: S) -> Vector2<S>

Performs the + operation. Read more
source§

impl<S: BaseNum> Add<S> for Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the + operator.
source§

fn add(self, scalar: S) -> Vector2<S>

Performs the + operation. Read more
source§

impl<'a, S: BaseNum> Add<Vector2<S>> for &'a Point2<S>

§

type Output = Point2<S>

The resulting type after applying the + operator.
source§

fn add(self, v: Vector2<S>) -> Point2<S>

Performs the + operation. Read more
source§

impl<'a, S: BaseNum> Add<Vector2<S>> for &'a Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the + operator.
source§

fn add(self, other: Vector2<S>) -> Vector2<S>

Performs the + operation. Read more
source§

impl<S: BaseNum> Add<Vector2<S>> for Point2<S>

§

type Output = Point2<S>

The resulting type after applying the + operator.
source§

fn add(self, v: Vector2<S>) -> Point2<S>

Performs the + operation. Read more
source§

impl<S: BaseNum> Add<Vector2<S>> for Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the + operator.
source§

fn add(self, other: Vector2<S>) -> Vector2<S>

Performs the + operation. Read more
source§

impl<S: BaseFloat> ApproxEq for Vector2<S>

§

type Epsilon = S

source§

fn approx_eq_eps(&self, other: &Vector2<S>, epsilon: &S) -> bool

source§

fn approx_epsilon() -> Self::Epsilon

source§

fn approx_eq(&self, other: &Self) -> bool

source§

impl<S: Copy> Array for Vector2<S>

§

type Element = S

source§

fn sum(self) -> Swhere S: Add<Output = S>,

The sum of the elements of the array.
source§

fn product(self) -> Swhere S: Mul<Output = S>,

The product of the elements of the array.
source§

fn min(self) -> Swhere S: PartialOrd,

The minimum element of the array.
source§

fn max(self) -> Swhere S: PartialOrd,

The maximum element of the array.
source§

fn as_ptr(&self) -> *const Self::Element

Get the pointer to the first element of the array.
source§

fn as_mut_ptr(&mut self) -> *mut Self::Element

Get a mutable pointer to the first element of the array.
source§

fn swap_elements(&mut self, i: usize, j: usize)

Swap the elements at indices i and j in-place.
source§

impl<S> AsMut<[S; 2]> for Vector2<S>

source§

fn as_mut(&mut self) -> &mut [S; 2]

Converts this type into a mutable reference of the (usually inferred) input type.
source§

impl<S> AsMut<(S, S)> for Vector2<S>

source§

fn as_mut(&mut self) -> &mut (S, S)

Converts this type into a mutable reference of the (usually inferred) input type.
source§

impl<S> AsRef<[S; 2]> for Vector2<S>

source§

fn as_ref(&self) -> &[S; 2]

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<S> AsRef<(S, S)> for Vector2<S>

source§

fn as_ref(&self) -> &(S, S)

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<S: Clone> Clone for Vector2<S>

source§

fn clone(&self) -> Vector2<S>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<S: BaseNum> Debug for Vector2<S>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<S: Decodable> Decodable for Vector2<S>

source§

fn decode<__D: Decoder>(d: &mut __D) -> Result<Vector2<S>, __D::Error>

Deserialize a value using a Decoder.
source§

impl<'a, 'b, S: BaseNum> Div<&'a Vector2<S>> for &'b Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the / operator.
source§

fn div(self, other: &'a Vector2<S>) -> Vector2<S>

Performs the / operation. Read more
source§

impl<'a, S: BaseNum> Div<&'a Vector2<S>> for Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the / operator.
source§

fn div(self, other: &'a Vector2<S>) -> Vector2<S>

Performs the / operation. Read more
source§

impl<'a, S: BaseNum> Div<S> for &'a Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the / operator.
source§

fn div(self, scalar: S) -> Vector2<S>

Performs the / operation. Read more
source§

impl<S: BaseNum> Div<S> for Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the / operator.
source§

fn div(self, scalar: S) -> Vector2<S>

Performs the / operation. Read more
source§

impl<'a, S: BaseNum> Div<Vector2<S>> for &'a Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the / operator.
source§

fn div(self, other: Vector2<S>) -> Vector2<S>

Performs the / operation. Read more
source§

impl<S: BaseNum> Div<Vector2<S>> for Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the / operator.
source§

fn div(self, other: Vector2<S>) -> Vector2<S>

Performs the / operation. Read more
source§

impl<S: Encodable> Encodable for Vector2<S>

source§

fn encode<__S: Encoder>(&self, s: &mut __S) -> Result<(), __S::Error>

Serialize a value using an Encoder.
source§

impl<S: BaseFloat> EuclideanVector for Vector2<S>

source§

fn angle(self, other: Vector2<S>) -> Rad<S>

The angle between the vector and other, in radians.
source§

fn is_perpendicular(self, other: Self) -> bool

Returns true if the vector is perpendicular (at right angles) to the other vector.
source§

fn length2(self) -> Self::Scalar

Returns the squared length of the vector. This does not perform an expensive square root operation like in the length method and can therefore be more efficient for comparing the lengths of two vectors.
source§

fn length(self) -> Self::Scalar

The norm of the vector.
source§

fn normalize(self) -> Self

Returns a vector with the same direction, but with a length (or norm) of 1.
source§

fn normalize_to(self, length: Self::Scalar) -> Self

Returns a vector with the same direction and a given length.
source§

fn lerp(self, other: Self, amount: Self::Scalar) -> Self

Returns the result of linarly interpolating the length of the vector towards the length of other by the specified amount.
source§

fn normalize_self(&mut self)

Normalises the vector to a length of 1.
source§

fn normalize_self_to(&mut self, length: Self::Scalar)

Normalizes the vector to length.
source§

fn lerp_self(&mut self, other: Self, amount: Self::Scalar)

Linearly interpolates the length of the vector towards the length of other by the specified amount.
source§

impl<'a, S> From<&'a [S; 2]> for &'a Vector2<S>

source§

fn from(v: &'a [S; 2]) -> &'a Vector2<S>

Converts to this type from the input type.
source§

impl<'a, S> From<&'a (S, S)> for &'a Vector2<S>

source§

fn from(v: &'a (S, S)) -> &'a Vector2<S>

Converts to this type from the input type.
source§

impl<'a, S> From<&'a mut [S; 2]> for &'a mut Vector2<S>

source§

fn from(v: &'a mut [S; 2]) -> &'a mut Vector2<S>

Converts to this type from the input type.
source§

impl<'a, S> From<&'a mut (S, S)> for &'a mut Vector2<S>

source§

fn from(v: &'a mut (S, S)) -> &'a mut Vector2<S>

Converts to this type from the input type.
source§

impl<S: Clone> From<[S; 2]> for Vector2<S>

source§

fn from(v: [S; 2]) -> Vector2<S>

Converts to this type from the input type.
source§

impl<S> From<(S, S)> for Vector2<S>

source§

fn from(v: (S, S)) -> Vector2<S>

Converts to this type from the input type.
source§

impl<S: Hash> Hash for Vector2<S>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<S> Index<Range<usize>> for Vector2<S>

§

type Output = [S]

The returned type after indexing.
source§

fn index<'a>(&'a self, i: Range<usize>) -> &'a [S]

Performs the indexing (container[index]) operation. Read more
source§

impl<S> Index<RangeFrom<usize>> for Vector2<S>

§

type Output = [S]

The returned type after indexing.
source§

fn index<'a>(&'a self, i: RangeFrom<usize>) -> &'a [S]

Performs the indexing (container[index]) operation. Read more
source§

impl<S> Index<RangeFull> for Vector2<S>

§

type Output = [S]

The returned type after indexing.
source§

fn index<'a>(&'a self, i: RangeFull) -> &'a [S]

Performs the indexing (container[index]) operation. Read more
source§

impl<S> Index<RangeTo<usize>> for Vector2<S>

§

type Output = [S]

The returned type after indexing.
source§

fn index<'a>(&'a self, i: RangeTo<usize>) -> &'a [S]

Performs the indexing (container[index]) operation. Read more
source§

impl<S> Index<usize> for Vector2<S>

§

type Output = S

The returned type after indexing.
source§

fn index<'a>(&'a self, i: usize) -> &'a S

Performs the indexing (container[index]) operation. Read more
source§

impl<S> IndexMut<Range<usize>> for Vector2<S>

source§

fn index_mut<'a>(&'a mut self, i: Range<usize>) -> &'a mut [S]

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<S> IndexMut<RangeFrom<usize>> for Vector2<S>

source§

fn index_mut<'a>(&'a mut self, i: RangeFrom<usize>) -> &'a mut [S]

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<S> IndexMut<RangeFull> for Vector2<S>

source§

fn index_mut<'a>(&'a mut self, i: RangeFull) -> &'a mut [S]

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<S> IndexMut<RangeTo<usize>> for Vector2<S>

source§

fn index_mut<'a>(&'a mut self, i: RangeTo<usize>) -> &'a mut [S]

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<S> IndexMut<usize> for Vector2<S>

source§

fn index_mut<'a>(&'a mut self, i: usize) -> &'a mut S

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<S> Into<[S; 2]> for Vector2<S>

source§

fn into(self) -> [S; 2]

Converts this type into the (usually inferred) input type.
source§

impl<S> Into<(S, S)> for Vector2<S>

source§

fn into(self) -> (S, S)

Converts this type into the (usually inferred) input type.
source§

impl<'a, 'b, S: BaseFloat> Mul<&'a Vector2<S>> for &'b Matrix2<S>

§

type Output = Vector2<S>

The resulting type after applying the * operator.
source§

fn mul(self, v: &'a Vector2<S>) -> Vector2<S>

Performs the * operation. Read more
source§

impl<'a, 'b, S: BaseNum> Mul<&'a Vector2<S>> for &'b Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the * operator.
source§

fn mul(self, other: &'a Vector2<S>) -> Vector2<S>

Performs the * operation. Read more
source§

impl<'a, S: BaseNum> Mul<&'a Vector2<S>> for Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the * operator.
source§

fn mul(self, other: &'a Vector2<S>) -> Vector2<S>

Performs the * operation. Read more
source§

impl<'a, S: BaseNum> Mul<S> for &'a Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the * operator.
source§

fn mul(self, scalar: S) -> Vector2<S>

Performs the * operation. Read more
source§

impl<S: BaseNum> Mul<S> for Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the * operator.
source§

fn mul(self, scalar: S) -> Vector2<S>

Performs the * operation. Read more
source§

impl<'a, S: BaseFloat> Mul<Vector2<S>> for &'a Matrix2<S>

§

type Output = Vector2<S>

The resulting type after applying the * operator.
source§

fn mul(self, v: Vector2<S>) -> Vector2<S>

Performs the * operation. Read more
source§

impl<'a, S: BaseNum> Mul<Vector2<S>> for &'a Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the * operator.
source§

fn mul(self, other: Vector2<S>) -> Vector2<S>

Performs the * operation. Read more
source§

impl<S: BaseNum> Mul<Vector2<S>> for Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the * operator.
source§

fn mul(self, other: Vector2<S>) -> Vector2<S>

Performs the * operation. Read more
source§

impl<S: Neg<Output = S>> Neg for Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the - operator.
source§

fn neg(self) -> Vector2<S>

Performs the unary - operation. Read more
source§

impl<S: PartialEq> PartialEq<Vector2<S>> for Vector2<S>

source§

fn eq(&self, other: &Vector2<S>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<S: BaseFloat + Rand> Rand for Vector2<S>

source§

fn rand<R: Rng>(rng: &mut R) -> Vector2<S>

Generates a random instance of this type using the specified source of randomness.
source§

impl<'a, 'b, S: BaseNum> Rem<&'a Vector2<S>> for &'b Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the % operator.
source§

fn rem(self, other: &'a Vector2<S>) -> Vector2<S>

Performs the % operation. Read more
source§

impl<'a, S: BaseNum> Rem<&'a Vector2<S>> for Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the % operator.
source§

fn rem(self, other: &'a Vector2<S>) -> Vector2<S>

Performs the % operation. Read more
source§

impl<'a, S: BaseNum> Rem<S> for &'a Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the % operator.
source§

fn rem(self, scalar: S) -> Vector2<S>

Performs the % operation. Read more
source§

impl<S: BaseNum> Rem<S> for Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the % operator.
source§

fn rem(self, scalar: S) -> Vector2<S>

Performs the % operation. Read more
source§

impl<'a, S: BaseNum> Rem<Vector2<S>> for &'a Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the % operator.
source§

fn rem(self, other: Vector2<S>) -> Vector2<S>

Performs the % operation. Read more
source§

impl<S: BaseNum> Rem<Vector2<S>> for Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the % operator.
source§

fn rem(self, other: Vector2<S>) -> Vector2<S>

Performs the % operation. Read more
source§

impl<'a, 'b, S: BaseNum> Sub<&'a Vector2<S>> for &'b Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the - operator.
source§

fn sub(self, other: &'a Vector2<S>) -> Vector2<S>

Performs the - operation. Read more
source§

impl<'a, S: BaseNum> Sub<&'a Vector2<S>> for Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the - operator.
source§

fn sub(self, other: &'a Vector2<S>) -> Vector2<S>

Performs the - operation. Read more
source§

impl<'a, S: BaseNum> Sub<S> for &'a Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the - operator.
source§

fn sub(self, scalar: S) -> Vector2<S>

Performs the - operation. Read more
source§

impl<S: BaseNum> Sub<S> for Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the - operator.
source§

fn sub(self, scalar: S) -> Vector2<S>

Performs the - operation. Read more
source§

impl<'a, S: BaseNum> Sub<Vector2<S>> for &'a Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the - operator.
source§

fn sub(self, other: Vector2<S>) -> Vector2<S>

Performs the - operation. Read more
source§

impl<S: BaseNum> Sub<Vector2<S>> for Vector2<S>

§

type Output = Vector2<S>

The resulting type after applying the - operator.
source§

fn sub(self, other: Vector2<S>) -> Vector2<S>

Performs the - operation. Read more
source§

impl<S: BaseNum> Vector for Vector2<S>

§

type Scalar = S

The associated scalar.
source§

fn from_value(scalar: S) -> Vector2<S>

Construct a vector from a single value, replicating it.
source§

fn add_s(self, scalar: S) -> Vector2<S>

Add a scalar to this vector, returning a new vector.
source§

fn sub_s(self, scalar: S) -> Vector2<S>

Subtract a scalar from this vector, returning a new vector.
source§

fn mul_s(self, scalar: S) -> Vector2<S>

Multiply this vector by a scalar, returning a new vector.
source§

fn div_s(self, scalar: S) -> Vector2<S>

Divide this vector by a scalar, returning a new vector.
source§

fn rem_s(self, scalar: S) -> Vector2<S>

Take the remainder of this vector by a scalar, returning a new vector.
source§

fn add_v(self, v: Vector2<S>) -> Vector2<S>

Add this vector to another, returning a new vector.
source§

fn sub_v(self, v: Vector2<S>) -> Vector2<S>

Subtract another vector from this one, returning a new vector.
source§

fn mul_v(self, v: Vector2<S>) -> Vector2<S>

Multiply this vector by another, returning a new vector.
source§

fn div_v(self, v: Vector2<S>) -> Vector2<S>

Divide this vector by another, returning a new vector.
source§

fn rem_v(self, v: Vector2<S>) -> Vector2<S>

Take the remainder of this vector by another, returning a new scalar.
source§

fn add_self_s(&mut self, scalar: S)

Add a scalar to this vector in-place.
source§

fn sub_self_s(&mut self, scalar: S)

Subtract a scalar from this vector, in-place.
source§

fn mul_self_s(&mut self, scalar: S)

Multiply this vector by a scalar, in-place.
source§

fn div_self_s(&mut self, scalar: S)

Divide this vector by a scalar, in-place.
source§

fn rem_self_s(&mut self, scalar: S)

Take the remainder of this vector by a scalar, in-place.
source§

fn add_self_v(&mut self, v: Vector2<S>)

Add another vector to this one, in-place.
source§

fn sub_self_v(&mut self, v: Vector2<S>)

Subtract another vector from this one, in-place.
source§

fn mul_self_v(&mut self, v: Vector2<S>)

Multiply this matrix by another, in-place.
source§

fn div_self_v(&mut self, v: Vector2<S>)

Divide this matrix by anothor, in-place.
source§

fn rem_self_v(&mut self, v: Vector2<S>)

Take the remainder of this vector by another, in-place.
source§

fn dot(self, other: Vector2<S>) -> S

Vector dot product
source§

fn zero() -> Self

The zero vector (with all components set to zero)
source§

fn one() -> Self

The identity vector (with all components set to one)
source§

impl<S: Copy> Copy for Vector2<S>

source§

impl<S: Eq> Eq for Vector2<S>

source§

impl<S> StructuralEq for Vector2<S>

source§

impl<S> StructuralPartialEq for Vector2<S>

Auto Trait Implementations§

§

impl<S> RefUnwindSafe for Vector2<S>where S: RefUnwindSafe,

§

impl<S> Send for Vector2<S>where S: Send,

§

impl<S> Sync for Vector2<S>where S: Sync,

§

impl<S> Unpin for Vector2<S>where S: Unpin,

§

impl<S> UnwindSafe for Vector2<S>where S: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T, Rhs, Output> NumOps<Rhs, Output> for Twhere T: Sub<Rhs, Output = Output> + Mul<Rhs, Output = Output> + Div<Rhs, Output = Output> + Add<Rhs, Output = Output> + Rem<Rhs, Output = Output>,

source§

impl<T, Base> RefNum<Base> for Twhere T: NumOps<Base, Base> + for<'r> NumOps<&'r Base, Base>,