Use Radians as a number directly in gradient example
This commit is contained in:
parent
c1139898c5
commit
d2294737c2
4 changed files with 55 additions and 19 deletions
|
|
@ -1,17 +1,56 @@
|
|||
use crate::{Point, Rectangle, Vector};
|
||||
use std::f32::consts::PI;
|
||||
|
||||
#[derive(Debug, Copy, Clone, PartialEq)]
|
||||
use std::f32::consts::PI;
|
||||
use std::ops::RangeInclusive;
|
||||
|
||||
/// Degrees
|
||||
#[derive(Debug, Copy, Clone, PartialEq, PartialOrd)]
|
||||
pub struct Degrees(pub f32);
|
||||
|
||||
#[derive(Debug, Copy, Clone, PartialEq)]
|
||||
/// Radians
|
||||
#[derive(Debug, Copy, Clone, PartialEq, PartialOrd)]
|
||||
pub struct Radians(pub f32);
|
||||
|
||||
impl Radians {
|
||||
/// The range of radians of a circle.
|
||||
pub const RANGE: RangeInclusive<Radians> = Radians(0.0)..=Radians(2.0 * PI);
|
||||
}
|
||||
|
||||
impl From<Degrees> for Radians {
|
||||
fn from(degrees: Degrees) -> Self {
|
||||
Radians(degrees.0 * PI / 180.0)
|
||||
Self(degrees.0 * PI / 180.0)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<f32> for Radians {
|
||||
fn from(radians: f32) -> Self {
|
||||
Self(radians)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<u8> for Radians {
|
||||
fn from(radians: u8) -> Self {
|
||||
Self(f32::from(radians))
|
||||
}
|
||||
}
|
||||
|
||||
impl From<Radians> for f64 {
|
||||
fn from(radians: Radians) -> Self {
|
||||
Self::from(radians.0)
|
||||
}
|
||||
}
|
||||
|
||||
impl num_traits::FromPrimitive for Radians {
|
||||
fn from_i64(n: i64) -> Option<Self> {
|
||||
Some(Self(n as f32))
|
||||
}
|
||||
|
||||
fn from_u64(n: u64) -> Option<Self> {
|
||||
Some(Self(n as f32))
|
||||
}
|
||||
|
||||
fn from_f64(n: f64) -> Option<Self> {
|
||||
Some(Self(n as f32))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue