diff --git a/src/main.rs b/src/main.rs index f3d0974..ba2626f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,6 +13,7 @@ use { angle::Turns }; +mod util; mod fixture; mod setup; mod view; @@ -23,6 +24,7 @@ use crate::{ fixture::Fixture, setup::LightingSetup, stripe_driver::StripeDriver, + util::get_angle }; struct Breathing { diff --git a/src/util.rs b/src/util.rs new file mode 100644 index 0000000..c1698f4 --- /dev/null +++ b/src/util.rs @@ -0,0 +1,19 @@ +use cgmath::Vector2; + +pub fn get_angle(p: &Vector2) -> f32 { + let pi=3.1415926; + let pi2 = 2.0*pi; + + if p.x < 0.0 { + (p.y / p.x).atan() / pi2 + 0.75 + } else if p.x == 0.0 && p.y == 0.0 { + 0.0 + } else { + if p.y < 0.0 { + (-p.x / p.y).atan() / pi2 + } else { + (p.y / p.x).atan() / pi2 + 0.25 + } + } +} +