pub struct ImproperRotation { /* private fields */ }
Expand description
As per a Rotation
, but one that specifically needs at least one
reflection.
Trait Implementations§
Source§impl Clone for ImproperRotation
impl Clone for ImproperRotation
Source§fn clone(&self) -> ImproperRotation
fn clone(&self) -> ImproperRotation
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for ImproperRotation
impl Debug for ImproperRotation
Source§impl Div<ImproperRotation> for ProperRotation
Implements division between rotations, such that
(rot_a * rot_b) / rot_b == rot_a
.
impl Div<ImproperRotation> for ProperRotation
Implements division between rotations, such that
(rot_a * rot_b) / rot_b == rot_a
.
Important note: rot_a / rot_b
is not necessarily equal to
(1 / rot_b) * rot_a
. See also the relevant comment on Mul
.
Source§type Output = ImproperRotation
type Output = ImproperRotation
The output type tells us all we know about the propriety of the result.
Source§fn div(self, other: ImproperRotation) -> Self::Output
fn div(self, other: ImproperRotation) -> Self::Output
Implemented by dividing the two corresponding points with one another.
Source§impl Div<ProperRotation> for ImproperRotation
Implements division between rotations, such that
(rot_a * rot_b) / rot_b == rot_a
.
impl Div<ProperRotation> for ImproperRotation
Implements division between rotations, such that
(rot_a * rot_b) / rot_b == rot_a
.
Important note: rot_a / rot_b
is not necessarily equal to
(1 / rot_b) * rot_a
. See also the relevant comment on Mul
.
Source§type Output = ImproperRotation
type Output = ImproperRotation
The output type tells us all we know about the propriety of the result.
Source§fn div(self, other: ProperRotation) -> Self::Output
fn div(self, other: ProperRotation) -> Self::Output
Implemented by dividing the two corresponding points with one another.
Source§impl Div for ImproperRotation
Implements division between rotations, such that
(rot_a * rot_b) / rot_b == rot_a
.
impl Div for ImproperRotation
Implements division between rotations, such that
(rot_a * rot_b) / rot_b == rot_a
.
Important note: rot_a / rot_b
is not necessarily equal to
(1 / rot_b) * rot_a
. See also the relevant comment on Mul
.
Source§type Output = ProperRotation
type Output = ProperRotation
The output type tells us all we know about the propriety of the result.
Source§fn div(self, other: ImproperRotation) -> Self::Output
fn div(self, other: ImproperRotation) -> Self::Output
Implemented by dividing the two corresponding points with one another.
Source§impl From<ImproperRotation> for OppositeGroupPoint
impl From<ImproperRotation> for OppositeGroupPoint
Source§fn from(x: ImproperRotation) -> Self
fn from(x: ImproperRotation) -> Self
Source§impl From<ImproperRotation> for OppositeGroupPoint
impl From<ImproperRotation> for OppositeGroupPoint
Source§fn from(x: ImproperRotation) -> Self
fn from(x: ImproperRotation) -> Self
Source§impl From<ImproperRotation> for Rotation
Discards any notion of propriety, producing a general Rotation
.
impl From<ImproperRotation> for Rotation
Discards any notion of propriety, producing a general Rotation
.
Source§fn from(x: ImproperRotation) -> Self
fn from(x: ImproperRotation) -> Self
Source§impl From<OppositeGroupPoint> for ImproperRotation
impl From<OppositeGroupPoint> for ImproperRotation
Source§fn from(corresponding_point: OppositeGroupPoint) -> Self
fn from(corresponding_point: OppositeGroupPoint) -> Self
Source§impl From<OppositeGroupPoint> for ImproperRotation
impl From<OppositeGroupPoint> for ImproperRotation
Source§fn from(corresponding_point: OppositeGroupPoint) -> Self
fn from(corresponding_point: OppositeGroupPoint) -> Self
Source§impl Mul<ImproperRotation> for CubeSurfacePoint
Rotates a copy of self
in a way that switches its Geometric Group.
impl Mul<ImproperRotation> for CubeSurfacePoint
Rotates a copy of self
in a way that switches its Geometric Group.
Source§type Output = CubeSurfacePoint
type Output = CubeSurfacePoint
Although the Geometric Group does change, CubeSurfacePoint
does not
change its data-type depending on Geometric Group. Thus the data-type
remains the same.
Source§fn mul(self, rotation: ImproperRotation) -> Self
fn mul(self, rotation: ImproperRotation) -> Self
*
operation. Read moreSource§impl Mul<ImproperRotation> for CubeSurfacePoint<false>
Rotates a copy of self
according to an ImproperRotation
.
Switches Geometric Group.
impl Mul<ImproperRotation> for CubeSurfacePoint<false>
Rotates a copy of self
according to an ImproperRotation
.
Switches Geometric Group.
Source§type Output = CubeSurfacePoint<false>
type Output = CubeSurfacePoint<false>
Although the Geometric Group does change, CubeSurfacePoint
does
not change its data-type depending on Geometric Group. Thus the
data-type remains the same.
Source§fn mul(self, x: ImproperRotation) -> Self
fn mul(self, x: ImproperRotation) -> Self
The rotation happens Elementary-Reflection-by-Elementary-Reflection as usual, but each Elementary Reflection is performed with a LUT.
Source§impl Mul<ImproperRotation> for CubeSurfacePoint<true>
Rotates a copy of self
according to an ImproperRotation
. Switches
Geometric Group.
impl Mul<ImproperRotation> for CubeSurfacePoint<true>
Rotates a copy of self
according to an ImproperRotation
. Switches
Geometric Group.
Source§type Output = CubeSurfacePoint<true>
type Output = CubeSurfacePoint<true>
Although the Geometric Group does change, CubeSurfacePoint
does not
change its data-type depending on Geometric Group. Thus the data-type
remains the same.
Source§fn mul(self, x: ImproperRotation) -> Self
fn mul(self, x: ImproperRotation) -> Self
The ImproperRotation
is not examined bit-by-bit. Instead, a
look-up on a 2-D LUT produces the result directly.
While this could have been implemented using smaller LUTs than the
ones
used for Mul<Rotation>
, it was deemed a useless middle solution.
Source§impl Mul<ImproperRotation> for OppositeGroupPoint
Rotates a copy of self
according to an ImproperRotation
.
Switches Geometric Group.
impl Mul<ImproperRotation> for OppositeGroupPoint
Rotates a copy of self
according to an ImproperRotation
.
Switches Geometric Group.
Source§type Output = ReferenceGroupPoint
type Output = ReferenceGroupPoint
Output belongs to the other Geometric Group.
Source§fn mul(self, x: ImproperRotation) -> Self::Output
fn mul(self, x: ImproperRotation) -> Self::Output
The ImproperRotation
is not examined bit-by-bit. Instead,
a look-up on a 2-D LUT produces the result directly.
Source§impl Mul<ImproperRotation> for OppositeGroupPoint
Rotates a copy of self
in a way that switches its Geometric Group.
impl Mul<ImproperRotation> for OppositeGroupPoint
Rotates a copy of self
in a way that switches its Geometric Group.
Source§type Output = ReferenceGroupPoint
type Output = ReferenceGroupPoint
Output belongs to the other Geometric Group.
Source§fn mul(self, other: ImproperRotation) -> ReferenceGroupPoint
fn mul(self, other: ImproperRotation) -> ReferenceGroupPoint
Multiplies one OppositeGroupPoint
with one ImproperRotation
, producing one ReferenceGroupPoint
as a result.
Useful for static confirmation of Geometric Groups.
Source§impl Mul<ImproperRotation> for ProperRotation
Implements multiplication between rotations, such that
rot_a * rot_b * point_x
can be computed as either
rot_a * (rot_b * point_x)
or (rot_a * rot_b) * point_x
,
with no change to the result computed.
impl Mul<ImproperRotation> for ProperRotation
Implements multiplication between rotations, such that
rot_a * rot_b * point_x
can be computed as either
rot_a * (rot_b * point_x)
or (rot_a * rot_b) * point_x
,
with no change to the result computed.
Important note: Rotation
s are essentially highly simplified
matrices. This means that, in the general case, commutativity does
not hold, and therefore rot_a * rot_b
and rot_b * rot_a
are not
necessarily equal.
Source§type Output = ImproperRotation
type Output = ImproperRotation
The output type tells us all we know about the propriety of the result.
Source§fn mul(self, other: ImproperRotation) -> Self::Output
fn mul(self, other: ImproperRotation) -> Self::Output
Implemented by multiplying the second rotation’s corresponding point with the first one.
Source§impl Mul<ImproperRotation> for ReferenceGroupPoint
Rotates a copy of self
according to an ImproperRotation
.
Switches Geometric Group.
impl Mul<ImproperRotation> for ReferenceGroupPoint
Rotates a copy of self
according to an ImproperRotation
.
Switches Geometric Group.
Source§type Output = OppositeGroupPoint
type Output = OppositeGroupPoint
Output belongs to the other Geometric Group.
Source§fn mul(self, x: ImproperRotation) -> Self::Output
fn mul(self, x: ImproperRotation) -> Self::Output
The ImproperRotation
is not examined bit-by-bit. Instead,
a look-up on a 2-D LUT produces the result directly.
Source§impl Mul<ImproperRotation> for ReferenceGroupPoint
Rotates a copy of self
in a way that switches its Geometric Group.
impl Mul<ImproperRotation> for ReferenceGroupPoint
Rotates a copy of self
in a way that switches its Geometric Group.
Source§type Output = OppositeGroupPoint
type Output = OppositeGroupPoint
Output belongs to the other Geometric Group.
Source§fn mul(self, other: ImproperRotation) -> OppositeGroupPoint
fn mul(self, other: ImproperRotation) -> OppositeGroupPoint
Multiplies one ReferenceGroupPoint
with one ImproperRotation
, producing one OppositeGroupPoint
as a result.
Useful for static confirmation of Geometric Groups.
Source§impl Mul<OppositeGroupPoint> for ImproperRotation
impl Mul<OppositeGroupPoint> for ImproperRotation
Source§type Output = ReferenceGroupPoint
type Output = ReferenceGroupPoint
Output belongs to the other Geometric Group.
Source§fn mul(self, x: OppositeGroupPoint) -> Self::Output
fn mul(self, x: OppositeGroupPoint) -> Self::Output
The ImproperRotation
is not examined bit-by-bit. Instead,
a look-up on a 2-D LUT produces the result directly.
Source§impl Mul<OppositeGroupPoint> for ImproperRotation
Rotates a copy the argument in a way that switches its Geometric
Group.
impl Mul<OppositeGroupPoint> for ImproperRotation
Rotates a copy the argument in a way that switches its Geometric Group.
Source§type Output = ReferenceGroupPoint
type Output = ReferenceGroupPoint
Output belongs to the other Geometric Group.
Source§impl Mul<ProperRotation> for ImproperRotation
Implements multiplication between rotations, such that
rot_a * rot_b * point_x
can be computed as either
rot_a * (rot_b * point_x)
or (rot_a * rot_b) * point_x
,
with no change to the result computed.
impl Mul<ProperRotation> for ImproperRotation
Implements multiplication between rotations, such that
rot_a * rot_b * point_x
can be computed as either
rot_a * (rot_b * point_x)
or (rot_a * rot_b) * point_x
,
with no change to the result computed.
Important note: Rotation
s are essentially highly simplified
matrices. This means that, in the general case, commutativity does
not hold, and therefore rot_a * rot_b
and rot_b * rot_a
are not
necessarily equal.
Source§type Output = ImproperRotation
type Output = ImproperRotation
The output type tells us all we know about the propriety of the result.
Source§fn mul(self, other: ProperRotation) -> Self::Output
fn mul(self, other: ProperRotation) -> Self::Output
Implemented by multiplying the second rotation’s corresponding point with the first one.
Source§impl Mul<ReferenceGroupPoint> for ImproperRotation
impl Mul<ReferenceGroupPoint> for ImproperRotation
Source§type Output = OppositeGroupPoint
type Output = OppositeGroupPoint
Output belongs to the other Geometric Group.
Source§fn mul(self, x: ReferenceGroupPoint) -> Self::Output
fn mul(self, x: ReferenceGroupPoint) -> Self::Output
The ImproperRotation
is not examined bit-by-bit. Instead,
a look-up on a 2-D LUT produces the result directly.
Source§impl Mul<ReferenceGroupPoint> for ImproperRotation
Rotates a copy the argument in a way that switches its Geometric
Group.
impl Mul<ReferenceGroupPoint> for ImproperRotation
Rotates a copy the argument in a way that switches its Geometric Group.
Source§type Output = OppositeGroupPoint
type Output = OppositeGroupPoint
Output belongs to the other Geometric Group.
Source§impl Mul for ImproperRotation
Implements multiplication between rotations, such that
rot_a * rot_b * point_x
can be computed as either
rot_a * (rot_b * point_x)
or (rot_a * rot_b) * point_x
,
with no change to the result computed.
impl Mul for ImproperRotation
Implements multiplication between rotations, such that
rot_a * rot_b * point_x
can be computed as either
rot_a * (rot_b * point_x)
or (rot_a * rot_b) * point_x
,
with no change to the result computed.
Important note: Rotation
s are essentially highly simplified
matrices. This means that, in the general case, commutativity does
not hold, and therefore rot_a * rot_b
and rot_b * rot_a
are not
necessarily equal.
Source§type Output = ProperRotation
type Output = ProperRotation
The output type tells us all we know about the propriety of the result.
Source§fn mul(self, other: ImproperRotation) -> Self::Output
fn mul(self, other: ImproperRotation) -> Self::Output
Implemented by multiplying the second rotation’s corresponding point with the first one.
Source§impl MulAssign<ImproperRotation> for CubeSurfacePoint
Rotates self
in a way that switches its Geometric Group.
impl MulAssign<ImproperRotation> for CubeSurfacePoint
Rotates self
in a way that switches its Geometric Group.
Source§fn mul_assign(&mut self, x: ImproperRotation)
fn mul_assign(&mut self, x: ImproperRotation)
The data-type remains the same, despite the Geometric Group changing. Thus, the result can be directly assigned.
Source§impl MulAssign<ImproperRotation> for CubeSurfacePoint<false>
Rotates self
according to a ImproperRotation
. Switches Geometric
Group.
impl MulAssign<ImproperRotation> for CubeSurfacePoint<false>
Rotates self
according to a ImproperRotation
. Switches Geometric
Group.
Source§fn mul_assign(&mut self, x: ImproperRotation)
fn mul_assign(&mut self, x: ImproperRotation)
The data-type remains the same, despite the Geometric Group changing. Thus, the result can be directly assigned.
The ImproperRotation
is not examined bit-by-bit. Instead, a
look-up on a 2-D LUT produces the result directly.
While this could have been implemented using smaller LUTs than the
ones
used for Mul<Rotation>
, it was deemed a useless middle solution.
Source§impl MulAssign<ImproperRotation> for CubeSurfacePoint<true>
Rotates self
according to an ImproperRotation
. Switches Geometric
Group.
impl MulAssign<ImproperRotation> for CubeSurfacePoint<true>
Rotates self
according to an ImproperRotation
. Switches Geometric
Group.
Source§fn mul_assign(&mut self, x: ImproperRotation)
fn mul_assign(&mut self, x: ImproperRotation)
The data-type remains the same, despite the Geometric Group changing. Thus, the result can be directly assigned.
The ImproperRotation
is not examined bit-by-bit. Instead, a
look-up on a 2-D LUT produces the result directly.
While this could have been implemented using smaller LUTs than the
ones
used for Mul<Rotation>
, it was deemed a useless middle solution.
Source§impl Ord for ImproperRotation
impl Ord for ImproperRotation
Source§fn cmp(&self, other: &ImproperRotation) -> Ordering
fn cmp(&self, other: &ImproperRotation) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for ImproperRotation
impl PartialEq for ImproperRotation
Source§impl PartialOrd for ImproperRotation
impl PartialOrd for ImproperRotation
Source§impl TryFrom<Rotation> for ImproperRotation
Discriminates a Rotation
based on impropriety.
impl TryFrom<Rotation> for ImproperRotation
Discriminates a Rotation
based on impropriety.