#[repr(C, packed(1))]pub struct Vector4 {
pub x: f32,
pub y: f32,
pub z: f32,
pub w: f32,
}
Fields§
§x: f32
§y: f32
§z: f32
§w: f32
Implementations§
Source§impl Vector4
impl Vector4
Sourcepub fn new() -> Vector4
pub fn new() -> Vector4
Creates a vector <0.0, 0.0, 0.0, 0.0>
§Examples
use vex::Vector4;
let actual = Vector4::new();
let expected = Vector4 { x: 0.0, y: 0.0, z: 0.0, w: 0.0 };
assert_eq!(actual, expected);
Sourcepub fn one() -> Vector4
pub fn one() -> Vector4
Creates a vector <0.0, 0.0, 0.0, 0.0>
§Examples
use vex::Vector4;
let actual = Vector4::one();
let expected = Vector4 { x: 1.0, y: 1.0, z: 1.0, w: 1.0 };
assert_eq!(actual, expected);
Sourcepub fn make(x: f32, y: f32, z: f32, w: f32) -> Vector4
pub fn make(x: f32, y: f32, z: f32, w: f32) -> Vector4
Creates a vector from the provided values
§Examples
use vex::Vector4;
let actual = Vector4::make(1.0, 2.0, 3.0, 4.0);
let expected = Vector4 { x: 1.0, y: 2.0, z: 3.0, w: 4.0 };
assert_eq!(actual, expected);
Sourcepub fn dot(a: &Vector4, b: &Vector4) -> f32
pub fn dot(a: &Vector4, b: &Vector4) -> f32
Find the dot product between two vectors
§Examples
use vex::Vector4;
let a = Vector4::make(1.0, 0.0, 0.0, 0.0);
let b = Vector4::make(0.0, 0.0, 1.0, 0.0);
let actual = Vector4::dot(&a, &b);
let expected = 0.0;
assert_eq!(actual, expected);
Sourcepub fn min(a: &Vector4, b: &Vector4) -> Vector4
pub fn min(a: &Vector4, b: &Vector4) -> Vector4
Find the minimum (component-wise) vector between two vectors
§Examples
use vex::Vector4;
let a = Vector4::make(1.0, 4.0, 5.0, 7.0);
let b = Vector4::make(2.0, 3.0, 6.0, 8.0);
let actual = Vector4::min(&a, &b);
let expected = Vector4::make(1.0, 3.0, 5.0, 7.0);
assert_eq!(actual, expected);
Sourcepub fn max(a: &Vector4, b: &Vector4) -> Vector4
pub fn max(a: &Vector4, b: &Vector4) -> Vector4
Find the maximum (component-wise) vector between two vectors
§Examples
use vex::Vector4;
let a = Vector4::make(1.0, 4.0, 5.0, 7.0);
let b = Vector4::make(2.0, 3.0, 6.0, 8.0);
let actual = Vector4::max(&a, &b);
let expected = Vector4::make(2.0, 4.0, 6.0, 8.0);
assert_eq!(actual, expected);
Sourcepub fn clamp(&mut self, a: &Vector4, b: &Vector4)
pub fn clamp(&mut self, a: &Vector4, b: &Vector4)
Find the clamped (component-wise) vector between two vectors
§Examples
use vex::Vector4;
let a = Vector4::make(1.0, 3.0, 5.0, 7.0);
let b = Vector4::make(2.0, 4.0, 6.0, 8.0);
let mut actual = Vector4::make(0.0, 5.0, 10.0, 20.0);
actual.clamp(&a, &b);
let expected = Vector4::make(1.0, 4.0, 6.0, 8.0);
assert_eq!(actual, expected);
Sourcepub fn set(&mut self, x: f32, y: f32, z: f32, w: f32)
pub fn set(&mut self, x: f32, y: f32, z: f32, w: f32)
Set the components of a vector
§Examples
use vex::Vector4;
let mut actual = Vector4::new();
actual.set(1.0, 2.0, 3.0, 4.0);
let expected = Vector4::make(1.0, 2.0, 3.0, 4.0);
assert_eq!(actual, expected);
Sourcepub fn mag(&self) -> f32
pub fn mag(&self) -> f32
Get the magnitude of the vector
§Examples
use vex::Vector4;
let actual = Vector4::make(1.0, 2.0, 3.0, 4.0).mag();
let expected = 5.47722557505;
assert_eq!(actual, expected);
Sourcepub fn mag_sq(&self) -> f32
pub fn mag_sq(&self) -> f32
Get the squared magnitude of the vector
§Examples
use vex::Vector4;
let actual = Vector4::make(1.0, 2.0, 3.0, 4.0).mag_sq();
let expected = 30.0;
assert_eq!(actual, expected);
Sourcepub fn norm(&mut self) -> f32
pub fn norm(&mut self) -> f32
Normalize the vector
§Examples
use vex::Vector4;
let mut actual = Vector4::make(1.0, 2.0, 3.0, 4.0);
actual.norm();
let expected = Vector4::make(0.18257418, 0.36514837, 0.5477225, 0.73029673);
assert_eq!(actual, expected);
Trait Implementations§
Source§impl Add<f32> for Vector4
impl Add<f32> for Vector4
Source§impl Add for Vector4
impl Add for Vector4
Source§impl AddAssign<f32> for Vector4
impl AddAssign<f32> for Vector4
Source§fn add_assign(&mut self, _rhs: f32)
fn add_assign(&mut self, _rhs: f32)
Increment a vector by a scalar
§Examples
use vex::Vector4;
let mut actual = Vector4::make(1.0, 2.0, 3.0, 4.0);
actual += 10.0;
let expected = Vector4::make(11.0, 12.0, 13.0, 14.0);
assert_eq!(actual, expected);
Source§impl AddAssign for Vector4
impl AddAssign for Vector4
Source§fn add_assign(&mut self, _rhs: Vector4)
fn add_assign(&mut self, _rhs: Vector4)
Increment a vector by another vector
§Examples
use vex::Vector4;
let mut actual = Vector4::make(1.0, 2.0, 3.0, 4.0);
actual += Vector4::make(1.0, 2.0, 3.0, 4.0);
let expected = Vector4::make(2.0, 4.0, 6.0, 8.0);
assert_eq!(actual, expected);
Source§impl Div<f32> for Vector4
impl Div<f32> for Vector4
Source§impl Div for Vector4
impl Div for Vector4
Source§impl DivAssign<f32> for Vector4
impl DivAssign<f32> for Vector4
Source§fn div_assign(&mut self, _rhs: f32)
fn div_assign(&mut self, _rhs: f32)
Divide a vector by a scalar
§Examples
use vex::Vector4;
let mut actual = Vector4::make(1.0, 2.0, 3.0, 4.0);
actual /= 2.0;
let expected = Vector4::make(0.5, 1.0, 1.5, 2.0);
assert_eq!(actual, expected);
Source§impl DivAssign for Vector4
impl DivAssign for Vector4
Source§fn div_assign(&mut self, _rhs: Vector4)
fn div_assign(&mut self, _rhs: Vector4)
Divide a vector by another vector
§Examples
use vex::Vector4;
let mut actual = Vector4::make(2.0, 4.0, 6.0, 8.0);
actual /= Vector4::make(1.0, 4.0, 12.0, 32.0);
let expected = Vector4::make(2.0, 1.0, 0.5, 0.25);
assert_eq!(actual, expected);
Source§impl From<Vector3> for Vector4
impl From<Vector3> for Vector4
Source§fn from(item: Vector3) -> Vector4
fn from(item: Vector3) -> Vector4
Creates a Vector4 from the components of a Vector3
§Examples
use vex::Vector3;
use vex::Vector4;
let input = Vector3::make(1.0, 2.0, 3.0);
let actual = Vector4::from(input);
let expected = Vector4 { x: 1.0, y: 2.0, z: 3.0, w: 0.0 };
assert_eq!(actual, expected);
Source§impl Matrix<Vector4> for Matrix4
impl Matrix<Vector4> for Matrix4
Source§fn transform_point(&self, point: &Vector4) -> Vector4
fn transform_point(&self, point: &Vector4) -> Vector4
Find the resulting vector given a vector and matrix
§Examples
use vex::Matrix;
use vex::Matrix4;
use vex::Vector4;
let m = Matrix4::make(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0);
let v = Vector4::make(1.0, 2.0, 3.0, 4.0);
let actual = m.transform_point(&v);
let expected = Vector4::make(90.0, 100.0, 110.0, 120.0);
assert_eq!(actual, expected);
Source§impl Mul<f32> for Vector4
impl Mul<f32> for Vector4
Source§impl Mul for Vector4
impl Mul for Vector4
Source§impl MulAssign<f32> for Vector4
impl MulAssign<f32> for Vector4
Source§fn mul_assign(&mut self, _rhs: f32)
fn mul_assign(&mut self, _rhs: f32)
Multiply a vector by a scalar
§Examples
use vex::Vector4;
let mut actual = Vector4::make(1.0, 2.0, 3.0, 4.0);
actual *= 2.0;
let expected = Vector4::make(2.0, 4.0, 6.0, 8.0);
assert_eq!(actual, expected);
Source§impl MulAssign for Vector4
impl MulAssign for Vector4
Source§fn mul_assign(&mut self, _rhs: Vector4)
fn mul_assign(&mut self, _rhs: Vector4)
Multiply a vector by another vector
§Examples
use vex::Vector4;
let mut actual = Vector4::make(1.0, 2.0, 3.0, 4.0);
actual *= Vector4::make(2.0, 3.0, 6.0, 8.0);
let expected = Vector4::make(2.0, 6.0, 18.0, 32.0);
assert_eq!(actual, expected);
Source§impl Neg for Vector4
impl Neg for Vector4
Source§impl PartialEq for Vector4
impl PartialEq for Vector4
Source§impl Sub<f32> for Vector4
impl Sub<f32> for Vector4
Source§impl Sub for Vector4
impl Sub for Vector4
Source§impl SubAssign<f32> for Vector4
impl SubAssign<f32> for Vector4
Source§fn sub_assign(&mut self, _rhs: f32)
fn sub_assign(&mut self, _rhs: f32)
Decrement a vector by a scalar
§Examples
use vex::Vector4;
let mut actual = Vector4::make(1.0, 2.0, 3.0, 4.0);
actual -= 1.0;
let expected = Vector4::make(0.0, 1.0, 2.0, 3.0);
assert_eq!(actual, expected);
Source§impl SubAssign for Vector4
impl SubAssign for Vector4
Source§fn sub_assign(&mut self, _rhs: Vector4)
fn sub_assign(&mut self, _rhs: Vector4)
Decrement a vector by another vector
§Examples
use vex::Vector4;
let mut actual = Vector4::make(1.0, 2.0, 3.0, 4.0);
actual -= Vector4::make(1.0, 2.0, 3.0, 4.0);
assert_eq!(actual, Vector4::new());