Add spin mode to ferris example 🦀
This commit is contained in:
parent
eac5bcb64f
commit
4010e3983d
4 changed files with 87 additions and 16 deletions
|
|
@ -1,7 +1,7 @@
|
|||
use crate::{Point, Rectangle, Vector};
|
||||
|
||||
use std::f32::consts::{FRAC_PI_2, PI};
|
||||
use std::ops::{Add, AddAssign, Div, Mul, RangeInclusive, Sub, SubAssign};
|
||||
use std::ops::{Add, AddAssign, Div, Mul, RangeInclusive, Rem, Sub, SubAssign};
|
||||
|
||||
/// Degrees
|
||||
#[derive(Debug, Copy, Clone, PartialEq, PartialOrd)]
|
||||
|
|
@ -48,6 +48,14 @@ impl From<Degrees> for f64 {
|
|||
}
|
||||
}
|
||||
|
||||
impl Mul<f32> for Degrees {
|
||||
type Output = Degrees;
|
||||
|
||||
fn mul(self, rhs: f32) -> Self::Output {
|
||||
Self(self.0 * rhs)
|
||||
}
|
||||
}
|
||||
|
||||
impl num_traits::FromPrimitive for Degrees {
|
||||
fn from_i64(n: i64) -> Option<Self> {
|
||||
Some(Self(n as f32))
|
||||
|
|
@ -156,6 +164,14 @@ impl Add for Radians {
|
|||
}
|
||||
}
|
||||
|
||||
impl Add<Degrees> for Radians {
|
||||
type Output = Self;
|
||||
|
||||
fn add(self, rhs: Degrees) -> Self::Output {
|
||||
Self(self.0 + rhs.0.to_radians())
|
||||
}
|
||||
}
|
||||
|
||||
impl AddAssign for Radians {
|
||||
fn add_assign(&mut self, rhs: Radians) {
|
||||
self.0 = self.0 + rhs.0;
|
||||
|
|
@ -202,6 +218,14 @@ impl Div for Radians {
|
|||
}
|
||||
}
|
||||
|
||||
impl Rem for Radians {
|
||||
type Output = Self;
|
||||
|
||||
fn rem(self, rhs: Self) -> Self::Output {
|
||||
Self(self.0 % rhs.0)
|
||||
}
|
||||
}
|
||||
|
||||
impl PartialEq<f32> for Radians {
|
||||
fn eq(&self, other: &f32) -> bool {
|
||||
self.0.eq(other)
|
||||
|
|
|
|||
|
|
@ -31,6 +31,13 @@ impl Rotation {
|
|||
}
|
||||
}
|
||||
|
||||
/// Returns a mutable reference to the angle of the [`Rotation`] in [`Radians`].
|
||||
pub fn radians_mut(&mut self) -> &mut Radians {
|
||||
match self {
|
||||
Rotation::Floating(radians) | Rotation::Solid(radians) => radians,
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns the angle of the [`Rotation`] in [`Degrees`].
|
||||
pub fn degrees(self) -> Degrees {
|
||||
Degrees(self.radians().0.to_degrees())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue