module Data.Constants.Mechanics.Extra
( turn
, halfTurn
, addRad
, delRad
) where
import Data.Coerce
import qualified Data.Dimensions.SI as D
import Data.Metrology
import Data.Metrology.SI ( )
import Data.Metrology.Unsafe
import Data.Units.SI
type PlaneAngle = MkQu_DLN D.PlaneAngle 'DefaultLCSU
turn :: Floating a => PlaneAngle a
turn :: PlaneAngle a
turn = 2 Qu '[] 'DefaultLCSU a
-> Qu '[ 'F PlaneAngle One] 'DefaultLCSU a
-> Qu (Normalize ('[] @+ '[ 'F PlaneAngle One])) 'DefaultLCSU a
forall n (a :: [Factor *]) (l :: LCSU *) (b :: [Factor *]).
Num n =>
Qu a l n -> Qu b l n -> Qu (Normalize (a @+ b)) l n
|*| Qu '[ 'F PlaneAngle One] 'DefaultLCSU a
forall a. Floating a => PlaneAngle a
halfTurn
halfTurn :: Floating a => PlaneAngle a
halfTurn :: PlaneAngle a
halfTurn = a
forall a. Floating a => a
pi a -> Radian -> Qu '[ 'F PlaneAngle One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% Radian
Radian
addRad
:: Qu b 'DefaultLCSU a
-> Qu (Normalize ('[ 'F D.PlaneAngle One] @+ b)) 'DefaultLCSU a
addRad :: Qu b 'DefaultLCSU a
-> Qu (Normalize ('[ 'F PlaneAngle One] @+ b)) 'DefaultLCSU a
addRad = Qu b 'DefaultLCSU a
-> Qu (Normalize ('[ 'F PlaneAngle One] @+ b)) 'DefaultLCSU a
forall a b. Coercible a b => a -> b
coerce
delRad
:: Qu u 'DefaultLCSU a
-> Qu (Normalize (u @- '[ 'F D.PlaneAngle One])) 'DefaultLCSU a
delRad :: Qu u 'DefaultLCSU a
-> Qu (Normalize (u @- '[ 'F PlaneAngle One])) 'DefaultLCSU a
delRad = Qu u 'DefaultLCSU a
-> Qu (Normalize (u @- '[ 'F PlaneAngle One])) 'DefaultLCSU a
forall a b. Coercible a b => a -> b
coerce