pub struct Vector4D {
pub x: f64,
pub y: f64,
pub z: f64,
pub t: f64,
}Fields§
§x: f64§y: f64§z: f64§t: f64Implementations§
Source§impl Vector4D
impl Vector4D
Sourcepub fn new(x: f64, y: f64, z: f64, t: f64) -> Vector4D
pub fn new(x: f64, y: f64, z: f64, t: f64) -> Vector4D
This creates a new 4d vector with the four given entries.
Sourcepub fn length_l1(&self) -> f64
pub fn length_l1(&self) -> f64
This gives back the l1 length of a 4d vector, i.e. the maximum of absolute values of its components.
§Example:
use bb_geometry::vector4d::Vector4D;
let length = Vector4D::new(-5.0, 4.3, -2.2, 0.0).length_l1();
assert_eq!(length, 5.0);Sourcepub fn is_close_to_zero(self: &Vector4D) -> bool
pub fn is_close_to_zero(self: &Vector4D) -> bool
This checks whether a 4d vector is close to the zero vector, up to crate::ALMOST_ZERO
§Example:
use bb_geometry::ALMOST_ZERO;
use bb_geometry::vector4d::Vector4D;
let a = Vector4D::new(ALMOST_ZERO, ALMOST_ZERO, ALMOST_ZERO, ALMOST_ZERO);
let b = Vector4D::new(0.99 * ALMOST_ZERO, 0.99 * ALMOST_ZERO, 0.99 * ALMOST_ZERO, 0.99 * ALMOST_ZERO);
assert_eq!(a.is_close_to_zero(), false);
assert_eq!(b.is_close_to_zero(), true);Sourcepub fn plus(self: &Vector4D, a: &Vector4D) -> Vector4D
pub fn plus(self: &Vector4D, a: &Vector4D) -> Vector4D
This adds two 4d vectors
§Example:
use bb_geometry::vector4d::Vector4D;
let a = Vector4D::new(1.0, 2.0, 3.0, 4.0);
let b = Vector4D::new(-1.0, 4.0, 2.5, -3.1);
let c = Vector4D::new(0.0, 6.0, 5.5, 0.9);
assert!(a.plus(&b).almost_equals(&c));Sourcepub fn minus(self: &Vector4D, a: &Vector4D) -> Vector4D
pub fn minus(self: &Vector4D, a: &Vector4D) -> Vector4D
This subtracts two 4d vectors
§Example:
use bb_geometry::vector4d::Vector4D;
let a = Vector4D::new(1.0, 2.0, 3.0, 4.0);
let b = Vector4D::new(-1.0, 4.0, 2.5, -3.1);
let c = Vector4D::new(2.0, -2.0, 0.5, 7.1);
assert!(a.minus(&b).almost_equals(&c));Sourcepub fn almost_equals(self: &Vector4D, a: &Vector4D) -> bool
pub fn almost_equals(self: &Vector4D, a: &Vector4D) -> bool
This compares two 4d vectors up to crate::ALMOST_ZERO.
§Example:
use bb_geometry::vector4d::Vector4D;
let a = Vector4D::new(1.0, 2.0, 3.0, 4.0);
let b = Vector4D::new(1.00001, 2.0, 3.0, 4.0);
let c = Vector4D::new(1.0000000001, 2.0, 3.0, 4.0);
assert_eq!(a.almost_equals(&b), false);
assert_eq!(a.almost_equals(&c), true);Sourcepub fn revert(&self) -> Vector4D
pub fn revert(&self) -> Vector4D
This replaces a 4d vector with its negative
§Examples
use bb_geometry::vector4d::Vector4D;
let a = Vector4D::new(1.0, 2.0, 3.0, 4.0);
let b = Vector4D::new(-1.0, -2.0, -3.0, -4.0);
assert!(a.revert().almost_equals(&b));Sourcepub fn generate_random_vectors(n: usize) -> Vec<Vector4D>
pub fn generate_random_vectors(n: usize) -> Vec<Vector4D>
This generates a 4d vector of length n containing randomly generated 4d vectors.
§Example:
use bb_geometry::vector4d::Vector4D;
let n = 10;
let list = Vector4D::generate_random_vectors(n);
assert_eq!(list.len(), n);Sourcepub fn random_vector() -> Vector4D
pub fn random_vector() -> Vector4D
This generates a random 4d vector with entire between -1.0 and 1.0.
§Example:
use bb_geometry::vector4d::Vector4D;
let a = Vector4D::random_vector();
assert!(a.length_l1() <= 1.0);Trait Implementations§
Auto Trait Implementations§
impl Freeze for Vector4D
impl RefUnwindSafe for Vector4D
impl Send for Vector4D
impl Sync for Vector4D
impl Unpin for Vector4D
impl UnwindSafe for Vector4D
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