0 | module Rhone.Canvas.Angle
 1 |
 2 | %default total
 3 |
 4 | --------------------------------------------------------------------------------
 5 | --          Angle
 6 | --------------------------------------------------------------------------------
 7 |
 8 | public export
 9 | data Angle : Type where
10 |   Radians : Double -> Angle
11 |   Degree : Double -> Angle
12 |
13 | export %inline
14 | rad : Double -> Angle
15 | rad = Radians
16 |
17 | export %inline
18 | deg : Double -> Angle
19 | deg = Degree
20 |
21 | export
22 | toRadians : Angle -> Double
23 | toRadians (Radians x) = x
24 | toRadians (Degree x)  = (x / 180) * pi
25 |
26 | export
27 | toDegree : Angle -> Double
28 | toDegree (Radians x) = (x / pi) * 180
29 | toDegree (Degree x)  = x
30 |
31 | export
32 | Show Angle where
33 |   show = show . toDegree
34 |