pub enum Versor<T: AllocVersor<N>, N: Dim> {
Even(Rotor<T, N>),
Odd(Reflector<T, N>),
}
Expand description
A general orthogonal transformation in N
dimensions
Variants
Even(Rotor<T, N>)
Odd(Reflector<T, N>)
Implementations
Reverses the order of the vectors in each basis blade
Wraps Even::reverse()
and Odd::reverse()
Negates self
if odd
Wraps Rotor::involute()
and Reflector::involute()
The multiplicative inverse of this element
Wraps Rotor::inverse()
and Reflector::inverse()
Converts self
into a Rotor
if even and returns None
otherwise
Converts self
into a Rotor
if even and panics otherwise
Converts self
into a Reflector
if odd and returns None
otherwise
Converts self
into a Reflector
if odd and panics otherwise
Trait Implementations
impl<'b, T1, T2, U, N: Dim, G: Dim> Div<&'b UnitBlade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<'b, T1, T2, U, N: Dim, G: Dim> Div<&'b UnitBlade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim, G: Dim> Div<&'b UnitBlade<T2, N, G>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim, G: Dim> Div<&'b UnitBlade<T2, N, G>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<'b, T1, T2, U, N: Dim, G: Dim> Div<&'b Versor<T2, N>> for UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<'b, T1, T2, U, N: Dim, G: Dim> Div<&'b Versor<T2, N>> for UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim, G: Dim> Div<&'b Versor<T2, N>> for &'a UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim, G: Dim> Div<&'b Versor<T2, N>> for &'a UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<'b, T1, T2, U, N: Dim> Div<&'b Versor<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<'b, T1, T2, U, N: Dim> Div<&'b Versor<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim> Div<&'b Versor<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim> Div<&'b Versor<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<T1, T2, U, N: Dim, G: Dim> Div<UnitBlade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<T1, T2, U, N: Dim, G: Dim> Div<UnitBlade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<'a, T1, T2, U, N: Dim, G: Dim> Div<UnitBlade<T2, N, G>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<'a, T1, T2, U, N: Dim, G: Dim> Div<UnitBlade<T2, N, G>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<T1, T2, U, N: Dim, G: Dim> Div<Versor<T2, N>> for UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<T1, T2, U, N: Dim, G: Dim> Div<Versor<T2, N>> for UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<'a, T1, T2, U, N: Dim, G: Dim> Div<Versor<T2, N>> for &'a UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<'a, T1, T2, U, N: Dim, G: Dim> Div<Versor<T2, N>> for &'a UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<T1, T2, U, N: Dim> Div<Versor<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<T1, T2, U, N: Dim> Div<Versor<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<'a, T1, T2, U, N: Dim> Div<Versor<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
impl<'a, T1, T2, U, N: Dim> Div<Versor<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N> + Clone + Neg<Output = T2>,
U: AllocVersor<N> + AddGroup,
Performs the /=
operation. Read more
Performs the /=
operation. Read more
Performs the /=
operation. Read more
Performs the /=
operation. Read more
Performs the /=
operation. Read more
Performs the /=
operation. Read more
Performs the /=
operation. Read more
Performs the /=
operation. Read more
impl<'b, T1, T2, U, N: Dim> Mul<&'b Reflector<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocOdd<N>,
U: AllocVersor<N> + AddGroup,
impl<'b, T1, T2, U, N: Dim> Mul<&'b Reflector<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocOdd<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim> Mul<&'b Reflector<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocOdd<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim> Mul<&'b Reflector<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocOdd<N>,
U: AllocVersor<N> + AddGroup,
impl<'b, T1, T2, U, N: Dim> Mul<&'b Rotor<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocEven<N>,
U: AllocVersor<N> + AddGroup,
impl<'b, T1, T2, U, N: Dim> Mul<&'b Rotor<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocEven<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim> Mul<&'b Rotor<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocEven<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim> Mul<&'b Rotor<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocEven<N>,
U: AllocVersor<N> + AddGroup,
impl<'b, T1, T2, U, N: Dim, G: Dim> Mul<&'b UnitBlade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocVersor<N> + AddGroup,
impl<'b, T1, T2, U, N: Dim, G: Dim> Mul<&'b UnitBlade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocVersor<N> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim, G: Dim> Mul<&'b UnitBlade<T2, N, G>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocVersor<N> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim, G: Dim> Mul<&'b UnitBlade<T2, N, G>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocVersor<N> + AddGroup,
impl<'b, T1, T2, U, N: Dim> Mul<&'b Versor<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'b, T1, T2, U, N: Dim> Mul<&'b Versor<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim> Mul<&'b Versor<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim> Mul<&'b Versor<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'b, T1, T2, U, N: Dim, G: Dim> Mul<&'b Versor<T2, N>> for UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'b, T1, T2, U, N: Dim, G: Dim> Mul<&'b Versor<T2, N>> for UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim, G: Dim> Mul<&'b Versor<T2, N>> for &'a UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim, G: Dim> Mul<&'b Versor<T2, N>> for &'a UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'b, T1, T2, U, N: Dim> Mul<&'b Versor<T2, N>> for Rotor<T1, N> where
T1: AllocEven<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'b, T1, T2, U, N: Dim> Mul<&'b Versor<T2, N>> for Rotor<T1, N> where
T1: AllocEven<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim> Mul<&'b Versor<T2, N>> for &'a Rotor<T1, N> where
T1: AllocEven<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim> Mul<&'b Versor<T2, N>> for &'a Rotor<T1, N> where
T1: AllocEven<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'b, T1, T2, U, N: Dim> Mul<&'b Versor<T2, N>> for Reflector<T1, N> where
T1: AllocOdd<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'b, T1, T2, U, N: Dim> Mul<&'b Versor<T2, N>> for Reflector<T1, N> where
T1: AllocOdd<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim> Mul<&'b Versor<T2, N>> for &'a Reflector<T1, N> where
T1: AllocOdd<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim> Mul<&'b Versor<T2, N>> for &'a Reflector<T1, N> where
T1: AllocOdd<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<T1, T2, U, N: Dim> Mul<Reflector<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocOdd<N>,
U: AllocVersor<N> + AddGroup,
impl<T1, T2, U, N: Dim> Mul<Reflector<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocOdd<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, T1, T2, U, N: Dim> Mul<Reflector<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocOdd<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, T1, T2, U, N: Dim> Mul<Reflector<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocOdd<N>,
U: AllocVersor<N> + AddGroup,
impl<T1, T2, U, N: Dim> Mul<Rotor<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocEven<N>,
U: AllocVersor<N> + AddGroup,
impl<T1, T2, U, N: Dim> Mul<Rotor<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocEven<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, T1, T2, U, N: Dim> Mul<Rotor<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocEven<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, T1, T2, U, N: Dim> Mul<Rotor<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocEven<N>,
U: AllocVersor<N> + AddGroup,
impl<T1, T2, U, N: Dim, G: Dim> Mul<UnitBlade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocVersor<N> + AddGroup,
impl<T1, T2, U, N: Dim, G: Dim> Mul<UnitBlade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocVersor<N> + AddGroup,
impl<'a, T1, T2, U, N: Dim, G: Dim> Mul<UnitBlade<T2, N, G>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocVersor<N> + AddGroup,
impl<'a, T1, T2, U, N: Dim, G: Dim> Mul<UnitBlade<T2, N, G>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocVersor<N> + AddGroup,
impl<T1, T2, U, N: Dim> Mul<Versor<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<T1, T2, U, N: Dim> Mul<Versor<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, T1, T2, U, N: Dim> Mul<Versor<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, T1, T2, U, N: Dim> Mul<Versor<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<T1, T2, U, N: Dim, G: Dim> Mul<Versor<T2, N>> for UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<T1, T2, U, N: Dim, G: Dim> Mul<Versor<T2, N>> for UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, T1, T2, U, N: Dim, G: Dim> Mul<Versor<T2, N>> for &'a UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, T1, T2, U, N: Dim, G: Dim> Mul<Versor<T2, N>> for &'a UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<T1, T2, U, N: Dim> Mul<Versor<T2, N>> for Rotor<T1, N> where
T1: AllocEven<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<T1, T2, U, N: Dim> Mul<Versor<T2, N>> for Rotor<T1, N> where
T1: AllocEven<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, T1, T2, U, N: Dim> Mul<Versor<T2, N>> for &'a Rotor<T1, N> where
T1: AllocEven<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, T1, T2, U, N: Dim> Mul<Versor<T2, N>> for &'a Rotor<T1, N> where
T1: AllocEven<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<T1, T2, U, N: Dim> Mul<Versor<T2, N>> for Reflector<T1, N> where
T1: AllocOdd<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<T1, T2, U, N: Dim> Mul<Versor<T2, N>> for Reflector<T1, N> where
T1: AllocOdd<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, T1, T2, U, N: Dim> Mul<Versor<T2, N>> for &'a Reflector<T1, N> where
T1: AllocOdd<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
impl<'a, T1, T2, U, N: Dim> Mul<Versor<T2, N>> for &'a Reflector<T1, N> where
T1: AllocOdd<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + AddGroup,
Performs the *=
operation. Read more
Performs the *=
operation. Read more
impl<'a, T1, T2, N: Dim, G: Dim> MulAssign<&'a UnitBlade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = T1> + AddGroup,
T2: AllocBlade<N, G>,
impl<'a, T1, T2, N: Dim, G: Dim> MulAssign<&'a UnitBlade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = T1> + AddGroup,
T2: AllocBlade<N, G>,
Performs the *=
operation. Read more
impl<'a, T1, T2, N: Dim> MulAssign<&'a Versor<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = T1> + AddGroup,
T2: AllocVersor<N>,
impl<'a, T1, T2, N: Dim> MulAssign<&'a Versor<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = T1> + AddGroup,
T2: AllocVersor<N>,
Performs the *=
operation. Read more
Performs the *=
operation. Read more
Performs the *=
operation. Read more
impl<T1, T2, N: Dim, G: Dim> MulAssign<UnitBlade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = T1> + AddGroup,
T2: AllocBlade<N, G>,
impl<T1, T2, N: Dim, G: Dim> MulAssign<UnitBlade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = T1> + AddGroup,
T2: AllocBlade<N, G>,
Performs the *=
operation. Read more
impl<T1, T2, N: Dim> MulAssign<Versor<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = T1> + AddGroup,
T2: AllocVersor<N>,
impl<T1, T2, N: Dim> MulAssign<Versor<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = T1> + AddGroup,
T2: AllocVersor<N>,
Performs the *=
operation. Read more
impl<T, U, N: Dim> Neg for Versor<T, N> where
T: AllocVersor<N> + Neg<Output = U>,
U: AllocVersor<N>,
impl<T, U, N: Dim> Neg for Versor<T, N> where
T: AllocVersor<N> + Neg<Output = U>,
U: AllocVersor<N>,
impl<'a, T, U, N: Dim> Neg for &'a Versor<T, N> where
T: AllocVersor<N>,
U: AllocVersor<N>,
T: RefNeg<'a, Output = U>,
impl<'a, T, U, N: Dim> Neg for &'a Versor<T, N> where
T: AllocVersor<N>,
U: AllocVersor<N>,
T: RefNeg<'a, Output = U>,
impl<T: AllocVersor<N> + PartialEq<U>, U: AllocVersor<N>, N: Dim> PartialEq<Versor<U, N>> for Versor<T, N>
impl<T: AllocVersor<N> + PartialEq<U>, U: AllocVersor<N>, N: Dim> PartialEq<Versor<U, N>> for Versor<T, N>
impl<'b, T1, T2, U, N: Dim, G: Dim> VersorMul<&'b Blade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'b, T1, T2, U, N: Dim, G: Dim> VersorMul<&'b Blade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim, G: Dim> VersorMul<&'b Blade<T2, N, G>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim, G: Dim> VersorMul<&'b Blade<T2, N, G>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'b, T1, T2, U, N: Dim> VersorMul<&'b Multivector<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocMultivector<N>,
U: AllocMultivector<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'b, T1, T2, U, N: Dim> VersorMul<&'b Multivector<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocMultivector<N>,
U: AllocMultivector<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
type Output = Multivector<U, N>
impl<'a, 'b, T1, T2, U, N: Dim> VersorMul<&'b Multivector<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocMultivector<N>,
U: AllocMultivector<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim> VersorMul<&'b Multivector<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocMultivector<N>,
U: AllocMultivector<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
type Output = Multivector<U, N>
impl<'b, T1, T2, U, N: Dim, G: Dim> VersorMul<&'b SimpleBlade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'b, T1, T2, U, N: Dim, G: Dim> VersorMul<&'b SimpleBlade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
type Output = SimpleBlade<U, N, G>
impl<'a, 'b, T1, T2, U, N: Dim, G: Dim> VersorMul<&'b SimpleBlade<T2, N, G>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim, G: Dim> VersorMul<&'b SimpleBlade<T2, N, G>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
type Output = SimpleBlade<U, N, G>
impl<'b, T1, T2, U, N: Dim, G: Dim> VersorMul<&'b UnitBlade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'b, T1, T2, U, N: Dim, G: Dim> VersorMul<&'b UnitBlade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim, G: Dim> VersorMul<&'b UnitBlade<T2, N, G>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim, G: Dim> VersorMul<&'b UnitBlade<T2, N, G>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'b, T1, T2, U, N: Dim, G: Dim> VersorMul<&'b Versor<T2, N>> for UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'b, T1, T2, U, N: Dim, G: Dim> VersorMul<&'b Versor<T2, N>> for UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim, G: Dim> VersorMul<&'b Versor<T2, N>> for &'a UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim, G: Dim> VersorMul<&'b Versor<T2, N>> for &'a UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'b, T1, T2, U, N: Dim> VersorMul<&'b Versor<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'b, T1, T2, U, N: Dim> VersorMul<&'b Versor<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim> VersorMul<&'b Versor<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim> VersorMul<&'b Versor<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<T1, T2, U, N: Dim, G: Dim> VersorMul<Blade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<T1, T2, U, N: Dim, G: Dim> VersorMul<Blade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, T1, T2, U, N: Dim, G: Dim> VersorMul<Blade<T2, N, G>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, T1, T2, U, N: Dim, G: Dim> VersorMul<Blade<T2, N, G>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<T1, T2, U, N: Dim> VersorMul<Multivector<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocMultivector<N>,
U: AllocMultivector<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<T1, T2, U, N: Dim> VersorMul<Multivector<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocMultivector<N>,
U: AllocMultivector<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
type Output = Multivector<U, N>
impl<'a, T1, T2, U, N: Dim> VersorMul<Multivector<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocMultivector<N>,
U: AllocMultivector<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, T1, T2, U, N: Dim> VersorMul<Multivector<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocMultivector<N>,
U: AllocMultivector<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
type Output = Multivector<U, N>
impl<T1, T2, U, N: Dim, G: Dim> VersorMul<SimpleBlade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<T1, T2, U, N: Dim, G: Dim> VersorMul<SimpleBlade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
type Output = SimpleBlade<U, N, G>
impl<'a, T1, T2, U, N: Dim, G: Dim> VersorMul<SimpleBlade<T2, N, G>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, T1, T2, U, N: Dim, G: Dim> VersorMul<SimpleBlade<T2, N, G>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
type Output = SimpleBlade<U, N, G>
impl<T1, T2, U, N: Dim, G: Dim> VersorMul<UnitBlade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<T1, T2, U, N: Dim, G: Dim> VersorMul<UnitBlade<T2, N, G>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, T1, T2, U, N: Dim, G: Dim> VersorMul<UnitBlade<T2, N, G>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, T1, T2, U, N: Dim, G: Dim> VersorMul<UnitBlade<T2, N, G>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G>,
U: AllocBlade<N, G> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<T1, T2, U, N: Dim, G: Dim> VersorMul<Versor<T2, N>> for UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<T1, T2, U, N: Dim, G: Dim> VersorMul<Versor<T2, N>> for UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, T1, T2, U, N: Dim, G: Dim> VersorMul<Versor<T2, N>> for &'a UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, T1, T2, U, N: Dim, G: Dim> VersorMul<Versor<T2, N>> for &'a UnitBlade<T1, N, G> where
T1: AllocBlade<N, G> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<T1, T2, U, N: Dim> VersorMul<Versor<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<T1, T2, U, N: Dim> VersorMul<Versor<T2, N>> for Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, T1, T2, U, N: Dim> VersorMul<Versor<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, T1, T2, U, N: Dim> VersorMul<Versor<T2, N>> for &'a Versor<T1, N> where
T1: AllocVersor<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocVersor<N>,
U: AllocVersor<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
Auto Trait Implementations
impl<T, N> RefUnwindSafe for Versor<T, N> where
<T as AllocEven<N>>::Buffer: RefUnwindSafe,
<T as AllocOdd<N>>::Buffer: RefUnwindSafe,
impl<T, N> Send for Versor<T, N> where
<T as AllocEven<N>>::Buffer: Send,
<T as AllocOdd<N>>::Buffer: Send,
impl<T, N> Sync for Versor<T, N> where
<T as AllocEven<N>>::Buffer: Sync,
<T as AllocOdd<N>>::Buffer: Sync,
impl<T, N> Unpin for Versor<T, N> where
<T as AllocEven<N>>::Buffer: Unpin,
<T as AllocOdd<N>>::Buffer: Unpin,
impl<T, N> UnwindSafe for Versor<T, N> where
<T as AllocEven<N>>::Buffer: UnwindSafe,
<T as AllocOdd<N>>::Buffer: UnwindSafe,
Blanket Implementations
type AllOutput = U
type AllOutput = U
type AllOutput = U
type AllOutput = U
type Buffer = DynBladeStorage<T, Const<N>, Dynamic>
type Buffer = DynBladeStorage<T, Dynamic, Const<G>>
type Buffer = DynBladeStorage<T, Dynamic, Dynamic>
type Buffer = DynMultivectorStorage<T, Dynamic>
Mutably borrows from an owned value. Read more
The inverse inclusion map: attempts to construct self
from the equivalent element of its
superset. Read more
pub fn is_in_subset(&self) -> bool
pub fn is_in_subset(&self) -> bool
Checks if self
is actually part of its subset T
(and can be converted to it).
pub fn to_subset_unchecked(&self) -> SS
pub fn to_subset_unchecked(&self) -> SS
Use with care! Same as self.to_subset
but without any property checks. Always succeeds.
pub fn from_subset(element: &SS) -> SP
pub fn from_subset(element: &SS) -> SP
The inclusion map: converts self
to the equivalent element of its superset.