#![allow(clippy::used_underscore_binding)]
use crate::math::geometry::{positioning::Position, EmptyShape, Shape};
#[cfg_attr(feature = "bitcode", derive(bitcode::Encode, bitcode::Decode))]
#[cfg_attr(
feature = "wincode",
derive(wincode::SchemaWrite, wincode::SchemaRead)
)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default, Hash)]
#[cfg_attr(feature = "c_compatible", repr(C))]
pub struct Rotation1D<V, S: Shape<V>, P: Position<V, S>> {
pub position: P,
#[allow(missing_docs)]
pub _value_type: core::marker::PhantomData<V>,
#[allow(missing_docs)]
pub _shape: core::marker::PhantomData<S>,
}
#[cfg_attr(feature = "bitcode", derive(bitcode::Encode, bitcode::Decode))]
#[cfg_attr(
feature = "wincode",
derive(wincode::SchemaWrite, wincode::SchemaRead)
)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default, Hash)]
#[cfg_attr(feature = "c_compatible", repr(C))]
pub struct Rotation2D<
V,
S: Shape<V>,
P: Position<V, S>,
A: Position<V, EmptyShape>,
> {
pub position: P,
pub rotation: V,
pub pivot: A,
pub precomputed: (V, V),
#[allow(missing_docs)]
pub _shape: core::marker::PhantomData<S>,
}