content: {-# LANGUAGE NoImplicitPrelude #-}
  module NewtonianMechanics where
  
  import Numeric.Units.Dimensional.Prelude
  
  translationalKineticEnergy :: (Fractional a) => Mass a -> Velocity a -> Energy a
  translationalKineticEnergy m v = m * v ^ pos2 / _2
  
  translationalWork :: (Num a) => Force a -> Length a -> Energy a
  translationalWork f d = f * d
  
  translationalMomentum :: (Num a) => Mass a -> Velocity a -> Momentum a
  translationalMomentum m v = m * v
  
  translationalPower :: (Num a) => Force a -> Velocity a -> Power a
  translationalPower f v = f * v
  
  forceFromChangeInMomentum :: (Fractional a) => Momentum a -> Time a -> Force a
  forceFromChangeInMomentum dp dt = dp / dt
  
  rotationalKineticEnergy :: (Fractional a) => MomentOfInertia a -> AngularVelocity a -> Energy a
  rotationalKineticEnergy i w = i * w ^ pos2 / _2
  
  rotationalWork :: (Num a) => Torque a -> PlaneAngle a -> Energy a
  rotationalWork t th = t * th
  
  rotationalMomentum :: (Num a) => MomentOfInertia a -> AngularVelocity a -> AngularMomentum a
  rotationalMomentum i w = i * w
  
  rotationalPower :: (Num a) => Torque a -> AngularVelocity a -> Power a
  rotationalPower t w = t * w
  
  torque :: (Num a) => Force a -> Length a -> Torque a
  torque r f = r * f
  
  torqueFromChangeInMomentum :: (Fractional a) => AngularMomentum a -> Time a -> Torque a
  torqueFromChangeInMomentum dL dt = dL / dt
  