pub struct Rotation4D { /* private fields */ }Implementations§
Source§impl Rotation4D
impl Rotation4D
Sourcepub fn unit() -> Rotation4D
pub fn unit() -> Rotation4D
This creates the unit rotation, which does not rotate anything.
§Example:
use bb_geometry::vector4d::Vector4D;
use bb_geometry::rotation4d::Rotation4D;
let r = Rotation4D::unit();
let v = Vector4D::random_vector();
assert!(r.act_on(&v).almost_equals(&v));Sourcepub fn from_euler_angles(
psi: f64,
theta: f64,
phi1: f64,
phi2: f64,
) -> Rotation4D
pub fn from_euler_angles( psi: f64, theta: f64, phi1: f64, phi2: f64, ) -> Rotation4D
This method creates a 4d rotation using a specific parameterisation in terms of Euler angles. Since only 4 angles are used, this is not sufficient to generate every rotation in the 6d space SO(4). Still, it is enough to generate those needed for a 4d camera, which assert that a 4d head is never tilted.
§Examples:
use std::f64::consts::PI;
use bb_geometry::rotation4d::Rotation4D;
use bb_geometry::vector4d::*;
let r = Rotation4D::from_euler_angles(0.0, PI/2.0, 0.0, 0.0);
assert!(&r.act_on(&E_X).almost_equals(&E_X));
assert!(&r.act_on(&E_Y).almost_equals(&E_Y));
assert!(&r.act_on(&E_Z).almost_equals(&E_T.revert()));
assert!(&r.act_on(&E_T).almost_equals(&E_Z));pub fn inverse(&self) -> Rotation4D
pub fn transpose(&self) -> Rotation4D
pub fn act_on(&self, v: &Vector4D) -> Vector4D
pub fn generate_random_rotations(n: usize) -> Vec<Rotation4D>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Rotation4D
impl RefUnwindSafe for Rotation4D
impl Send for Rotation4D
impl Sync for Rotation4D
impl Unpin for Rotation4D
impl UnwindSafe for Rotation4D
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