#[repr(C, packed(1))]pub struct Vector3 {
pub x: f32,
pub y: f32,
pub z: f32,
}
Fields§
§x: f32
§y: f32
§z: f32
Implementations§
Source§impl Vector3
impl Vector3
Sourcepub fn new() -> Vector3
pub fn new() -> Vector3
Creates a vector <0.0, 0.0, 0.0>
§Examples
use vex::Vector3;
let actual = Vector3::new();
let expected = Vector3 { x: 0.0, y: 0.0, z: 0.0 };
assert_eq!(actual, expected);
Sourcepub fn one() -> Vector3
pub fn one() -> Vector3
Creates a vector <1.0, 1.0, 1.0>
§Examples
use vex::Vector3;
let actual = Vector3::one();
let expected = Vector3 { x: 1.0, y: 1.0, z: 1.0 };
assert_eq!(actual, expected);
Sourcepub fn right() -> Vector3
pub fn right() -> Vector3
Creates a right vector
§Examples
use vex::Vector3;
let actual = Vector3::right();
let expected = Vector3 { x: 1.0, y: 0.0, z: 0.0 };
assert_eq!(actual, expected);
Sourcepub fn up() -> Vector3
pub fn up() -> Vector3
Creates an up vector
§Examples
use vex::Vector3;
let actual = Vector3::up();
let expected = Vector3 { x: 0.0, y: 1.0, z: 0.0 };
assert_eq!(actual, expected);
Sourcepub fn forward() -> Vector3
pub fn forward() -> Vector3
Creates a forward vector
§Examples
use vex::Vector3;
let actual = Vector3::forward();
let expected = Vector3 { x: 0.0, y: 0.0, z: -1.0 };
assert_eq!(actual, expected);
Sourcepub fn make(x: f32, y: f32, z: f32) -> Vector3
pub fn make(x: f32, y: f32, z: f32) -> Vector3
Creates a vector from the provided values
§Examples
use vex::Vector3;
let actual = Vector3::make(1.0, 2.0, 3.0);
let expected = Vector3 { x: 1.0, y: 2.0, z: 3.0 };
assert_eq!(actual, expected);
Sourcepub fn dot(a: &Vector3, b: &Vector3) -> f32
pub fn dot(a: &Vector3, b: &Vector3) -> f32
Find the dot product between two vectors
§Examples
use vex::Vector3;
let a = Vector3::make(1.0, 0.0, 0.0);
let b = Vector3::make(0.0, 0.0, 1.0);
let actual = Vector3::dot(&a, &b);
let expected = 0.0;
assert_eq!(actual, expected);
Sourcepub fn cross(a: &Vector3, b: &Vector3) -> Vector3
pub fn cross(a: &Vector3, b: &Vector3) -> Vector3
Find the cross product between two vectors
§Examples
use vex::Vector3;
let a = Vector3::make(0.0, 0.0, 1.0);
let b = Vector3::make(1.0, 0.0, 0.0);
let actual = Vector3::cross(&a, &b);
let expected = Vector3::make(0.0, 1.0, 0.0);
assert_eq!(actual, expected);
Sourcepub fn min(a: &Vector3, b: &Vector3) -> Vector3
pub fn min(a: &Vector3, b: &Vector3) -> Vector3
Find the minimum (component-wise) vector between two vectors
§Examples
use vex::Vector3;
let a = Vector3::make(1.0, 4.0, 5.0);
let b = Vector3::make(2.0, 3.0, 6.0);
let actual = Vector3::min(&a, &b);
let expected = Vector3::make(1.0, 3.0, 5.0);
assert_eq!(actual, expected);
Sourcepub fn max(a: &Vector3, b: &Vector3) -> Vector3
pub fn max(a: &Vector3, b: &Vector3) -> Vector3
Find the maximum (component-wise) vector between two vectors
§Examples
use vex::Vector3;
let a = Vector3::make(1.0, 4.0, 5.0);
let b = Vector3::make(2.0, 3.0, 6.0);
let actual = Vector3::max(&a, &b);
let expected = Vector3::make(2.0, 4.0, 6.0);
assert_eq!(actual, expected);
Sourcepub fn clamp(&mut self, a: &Vector3, b: &Vector3)
pub fn clamp(&mut self, a: &Vector3, b: &Vector3)
Find the clamped (component-wise) vector between two vectors
§Examples
use vex::Vector3;
let a = Vector3::make(1.0, 3.0, 5.0);
let b = Vector3::make(2.0, 4.0, 6.0);
let mut actual = Vector3::make(0.0, 5.0, 10.0);
actual.clamp(&a, &b);
let expected = Vector3::make(1.0, 4.0, 6.0);
assert_eq!(actual, expected);
Sourcepub fn set(&mut self, x: f32, y: f32, z: f32)
pub fn set(&mut self, x: f32, y: f32, z: f32)
Set the components of a vector
§Examples
use vex::Vector3;
let mut actual = Vector3::new();
actual.set(1.0, 2.0, 3.0);
let expected = Vector3::make(1.0, 2.0, 3.0);
assert_eq!(actual, expected);
Sourcepub fn mag(&self) -> f32
pub fn mag(&self) -> f32
Get the magnitude of the vector
§Examples
use vex::Vector3;
let actual = Vector3::make(1.0, 2.0, 3.0).mag();
let expected = 3.74165738677;
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::Vector3;
let actual = Vector3::make(1.0, 2.0, 3.0).mag_sq();
let expected = 14.0;
assert_eq!(actual, expected);
Sourcepub fn norm(&mut self) -> f32
pub fn norm(&mut self) -> f32
Normalize the vector
§Examples
use vex::Vector3;
let mut actual = Vector3::make(1.0, 2.0, 3.0);
actual.norm();
let expected = Vector3::make(0.26726124191, 0.53452248382, 0.8017837);
assert_eq!(actual, expected);
Trait Implementations§
Source§impl Add<f32> for Vector3
impl Add<f32> for Vector3
Source§impl Add for Vector3
impl Add for Vector3
Source§impl AddAssign<f32> for Vector3
impl AddAssign<f32> for Vector3
Source§fn add_assign(&mut self, _rhs: f32)
fn add_assign(&mut self, _rhs: f32)
Increment a vector by a scalar
§Examples
use vex::Vector3;
let mut actual = Vector3::make(1.0, 2.0, 3.0);
actual += 10.0;
let expected = Vector3::make(11.0, 12.0, 13.0);
assert_eq!(actual, expected);
Source§impl AddAssign for Vector3
impl AddAssign for Vector3
Source§fn add_assign(&mut self, _rhs: Vector3)
fn add_assign(&mut self, _rhs: Vector3)
Increment a vector by another vector
§Examples
use vex::Vector3;
let mut actual = Vector3::make(1.0, 2.0, 3.0);
actual += Vector3::make(1.0, 2.0, 3.0);
let expected = Vector3::make(2.0, 4.0, 6.0);
assert_eq!(actual, expected);
Source§impl Div<f32> for Vector3
impl Div<f32> for Vector3
Source§impl Div for Vector3
impl Div for Vector3
Source§impl DivAssign<f32> for Vector3
impl DivAssign<f32> for Vector3
Source§fn div_assign(&mut self, _rhs: f32)
fn div_assign(&mut self, _rhs: f32)
Divide a vector by a scalar
§Examples
use vex::Vector3;
let mut actual = Vector3::make(1.0, 2.0, 3.0);
actual /= 2.0;
let expected = Vector3::make(0.5, 1.0, 1.5);
assert_eq!(actual, expected);
Source§impl DivAssign for Vector3
impl DivAssign for Vector3
Source§fn div_assign(&mut self, _rhs: Vector3)
fn div_assign(&mut self, _rhs: Vector3)
Divide a vector by another vector
§Examples
use vex::Vector3;
let mut actual = Vector3::make(1.0, 2.0, 4.0);
actual /= Vector3::make(2.0, 8.0, 32.0);
let expected = Vector3::make(0.5, 0.25, 0.125);
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<Vector3> for Matrix3
impl Matrix<Vector3> for Matrix3
Source§fn transform_point(&self, point: &Vector3) -> Vector3
fn transform_point(&self, point: &Vector3) -> Vector3
Find the resulting vector given a vector and matrix
§Examples
use vex::Matrix;
use vex::Matrix3;
use vex::Vector3;
let m = Matrix3::make(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0);
let v = Vector3::make(1.0, 2.0, 3.0);
let actual = m.transform_point(&v);
let expected = Vector3::make(30.0, 36.0, 42.0);
assert_eq!(actual, expected);
Source§impl Matrix<Vector3> for Matrix4
impl Matrix<Vector3> for Matrix4
Source§fn transform_point(&self, point: &Vector3) -> Vector3
fn transform_point(&self, point: &Vector3) -> Vector3
Find the resulting vector given a vector and matrix
§Examples
use vex::Matrix;
use vex::Matrix4;
use vex::Vector3;
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 = Vector3::make(1.0, 2.0, 3.0);
let actual = m.transform_point(&v);
let expected = Vector3::make(51.0, 58.0, 65.0);
assert_eq!(actual, expected);
Source§impl Mul<f32> for Vector3
impl Mul<f32> for Vector3
Source§impl Mul for Vector3
impl Mul for Vector3
Source§impl MulAssign<f32> for Vector3
impl MulAssign<f32> for Vector3
Source§fn mul_assign(&mut self, _rhs: f32)
fn mul_assign(&mut self, _rhs: f32)
Multiply a vector by a scalar
§Examples
use vex::Vector3;
let mut actual = Vector3::make(1.0, 2.0, 3.0);
actual *= 2.0;
let expected = Vector3::make(2.0, 4.0, 6.0);
assert_eq!(actual, expected);
Source§impl MulAssign for Vector3
impl MulAssign for Vector3
Source§fn mul_assign(&mut self, _rhs: Vector3)
fn mul_assign(&mut self, _rhs: Vector3)
Multiply a vector by another vector
§Examples
use vex::Vector3;
let mut actual = Vector3::make(1.0, 2.0, 3.0);
actual *= Vector3::make(2.0, 3.0, 6.0);
let expected = Vector3::make(2.0, 6.0, 18.0);
assert_eq!(actual, expected);
Source§impl PartialEq for Vector3
impl PartialEq for Vector3
Source§impl Sub<f32> for Vector3
impl Sub<f32> for Vector3
Source§impl Sub for Vector3
impl Sub for Vector3
Source§impl SubAssign<f32> for Vector3
impl SubAssign<f32> for Vector3
Source§fn sub_assign(&mut self, _rhs: f32)
fn sub_assign(&mut self, _rhs: f32)
Decrement a vector by a scalar
§Examples
use vex::Vector3;
let mut actual = Vector3::make(1.0, 2.0, 3.0);
actual -= 1.0;
let expected = Vector3::make(0.0, 1.0, 2.0);
assert_eq!(actual, expected);
Source§impl SubAssign for Vector3
impl SubAssign for Vector3
Source§fn sub_assign(&mut self, _rhs: Vector3)
fn sub_assign(&mut self, _rhs: Vector3)
Decrement a vector by another vector
§Examples
use vex::Vector3;
let mut actual = Vector3::make(1.0, 2.0, 3.0);
actual -= Vector3::make(1.0, 2.0, 3.0);
assert_eq!(actual, Vector3::new());