Expand description
Implemented on versor types in order to apply their transformation to various values
This is mainly intended as a driver for member fuctions of the different versor types
(eg Rotor::rot()
, Versor::apply()
, etc) and not to be used on its own.
impl<'a, 'b, T1, T2, U, N: Dim> VersorMul<&'b Odd<T2, N>> for &'a Rotor<T1, N> where
T1: AllocEven<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocOdd<N>,
U: AllocOdd<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim, G1: Dim> VersorMul<&'b Even<T2, N>> for &'a Blade<T1, N, G1> where
T1: AllocSimpleBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocEven<N>,
U: AllocEven<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<'a, 'b, T1, T2, U, N: Dim, G1: Dim> VersorMul<&'b Even<T2, N>> for &'a SimpleBlade<T1, N, G1> where
T1: AllocBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocEven<N>,
U: AllocEven<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<'a, 'b, T1, T2, U, N: Dim, G1: Dim> VersorMul<&'b Odd<T2, N>> for &'a Blade<T1, N, G1> where
T1: AllocSimpleBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocOdd<N>,
U: AllocOdd<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<'a, 'b, T1, T2, U, N: Dim, G1: Dim> VersorMul<&'b Odd<T2, N>> for &'a SimpleBlade<T1, N, G1> where
T1: AllocBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocOdd<N>,
U: AllocOdd<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<'a, 'b, T1, T2, U, N: Dim, G1: Dim> VersorMul<&'b Odd<T2, N>> for &'a UnitBlade<T1, N, G1> where
T1: AllocBlade<N, G1> + AllRefMul<T2, AllOutput = U>,
T2: AllocOdd<N>,
U: AllocOdd<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim, G1: Dim, G2: Dim> VersorMul<&'b Blade<T2, N, G2>> for &'a Blade<T1, N, G1> where
T1: AllocSimpleBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocBlade<N, G2>,
U: AllocBlade<N, G2> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<'a, 'b, T1, T2, U, N: Dim, G1: Dim, G2: Dim> VersorMul<&'b Blade<T2, N, G2>> for &'a SimpleBlade<T1, N, G1> where
T1: AllocBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocBlade<N, G2>,
U: AllocBlade<N, G2> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<'a, 'b, T1, T2, U, N: Dim, G1: Dim, G2: Dim> VersorMul<&'b Blade<T2, N, G2>> for &'a UnitBlade<T1, N, G1> where
T1: AllocBlade<N, G1> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G2>,
U: AllocBlade<N, G2> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, 'b, T1, T2, U, N: Dim, G1: Dim, G2: Dim> VersorMul<&'b SimpleBlade<T2, N, G2>> for &'a Blade<T1, N, G1> where
T1: AllocSimpleBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocBlade<N, G2>,
U: AllocBlade<N, G2> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<'a, 'b, T1, T2, U, N: Dim, G1: Dim, G2: Dim> VersorMul<&'b SimpleBlade<T2, N, G2>> for &'a SimpleBlade<T1, N, G1> where
T1: AllocBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocBlade<N, G2>,
U: AllocBlade<N, G2> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<'a, 'b, T1, T2, U, N: Dim, G2: Dim> VersorMul<&'b Blade<T2, N, G2>> for &'a Rotor<T1, N> where
T1: AllocEven<N> + AllRefMul<T2, AllOutput = U>,
T2: AllocBlade<N, G2>,
U: AllocBlade<N, G2> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
impl<'a, T1, T2, U, N: Dim, G1: Dim> VersorMul<Even<T2, N>> for &'a Blade<T1, N, G1> where
T1: AllocSimpleBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocEven<N>,
U: AllocEven<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<'a, T1, T2, U, N: Dim, G1: Dim> VersorMul<Even<T2, N>> for &'a SimpleBlade<T1, N, G1> where
T1: AllocBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocEven<N>,
U: AllocEven<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<'a, T1, T2, U, N: Dim, G1: Dim> VersorMul<Odd<T2, N>> for &'a Blade<T1, N, G1> where
T1: AllocSimpleBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocOdd<N>,
U: AllocOdd<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<'a, T1, T2, U, N: Dim, G1: Dim> VersorMul<Odd<T2, N>> for &'a SimpleBlade<T1, N, G1> where
T1: AllocBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocOdd<N>,
U: AllocOdd<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<'a, T1, T2, U, N: Dim, G1: Dim, G2: Dim> VersorMul<Blade<T2, N, G2>> for &'a Blade<T1, N, G1> where
T1: AllocSimpleBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocBlade<N, G2>,
U: AllocBlade<N, G2> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<'a, T1, T2, U, N: Dim, G1: Dim, G2: Dim> VersorMul<Blade<T2, N, G2>> for &'a SimpleBlade<T1, N, G1> where
T1: AllocBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocBlade<N, G2>,
U: AllocBlade<N, G2> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<'b, T1, T2, U, N: Dim, G1: Dim> VersorMul<&'b Even<T2, N>> for Blade<T1, N, G1> where
T1: AllocSimpleBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocEven<N>,
U: AllocEven<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<'b, T1, T2, U, N: Dim, G1: Dim> VersorMul<&'b Even<T2, N>> for SimpleBlade<T1, N, G1> where
T1: AllocBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocEven<N>,
U: AllocEven<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<'b, T1, T2, U, N: Dim, G1: Dim> VersorMul<&'b Odd<T2, N>> for Blade<T1, N, G1> where
T1: AllocSimpleBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocOdd<N>,
U: AllocOdd<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<'b, T1, T2, U, N: Dim, G1: Dim> VersorMul<&'b Odd<T2, N>> for SimpleBlade<T1, N, G1> where
T1: AllocBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocOdd<N>,
U: AllocOdd<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<'b, T1, T2, U, N: Dim, G1: Dim, G2: Dim> VersorMul<&'b Blade<T2, N, G2>> for Blade<T1, N, G1> where
T1: AllocSimpleBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocBlade<N, G2>,
U: AllocBlade<N, G2> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<'b, T1, T2, U, N: Dim, G1: Dim, G2: Dim> VersorMul<&'b Blade<T2, N, G2>> for SimpleBlade<T1, N, G1> where
T1: AllocBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocBlade<N, G2>,
U: AllocBlade<N, G2> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<T1, T2, U, N: Dim, G1: Dim> VersorMul<Odd<T2, N>> for Blade<T1, N, G1> where
T1: AllocSimpleBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocOdd<N>,
U: AllocOdd<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<T1, T2, U, N: Dim, G1: Dim> VersorMul<Odd<T2, N>> for SimpleBlade<T1, N, G1> where
T1: AllocBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocOdd<N>,
U: AllocOdd<N> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<T1, T2, U, N: Dim, G1: Dim, G2: Dim> VersorMul<Blade<T2, N, G2>> for Blade<T1, N, G1> where
T1: AllocSimpleBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocBlade<N, G2>,
U: AllocBlade<N, G2> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,
impl<T1, T2, U, N: Dim, G1: Dim, G2: Dim> VersorMul<Blade<T2, N, G2>> for SimpleBlade<T1, N, G1> where
T1: AllocBlade<N, G1> + AllRefMul<T2, AllOutput = U> + AllRefMul<T1, AllOutput = U>,
T2: AllocBlade<N, G2>,
U: AllocBlade<N, G2> + for<'c> Mul<&'c T1, Output = U> + AddGroup,
U: for<'c> Div<&'c U, Output = U>,