module Graphics.Proc.Lib.Misc(
    onCircle, onLine, uon
) where

import Graphics.Proc.Core

  | Maps values from interval ( 0 , 1 ) to the points on the circle .
--
-- > onCircle radius center value
onCircle :: Float -> P2 -> Float -> P2
onCircle rad center x = center + rad *^ P2 (cos (2 * pi * x)) (sin (2 * pi * x))

  | Maps values from interval ( 0 , 1 ) to the points on the line segment .
--
  > onLine point1 point2 value
onLine :: P2 -> P2 -> Float -> P2
onLine p1 p2 x = p1 + x *^ (p2 - p1)

  | Rescales the unipolar scale ( 0 , 1 ) to the given range .
uon :: (Float, Float) -> Float -> Float
uon (a, b) x = a + (b - a) * x


 > onCircle radius center value

module Graphics.Proc.Lib.Misc(
    onCircle, onLine, uon
) where

import Graphics.Proc.Core

  | Maps values from interval ( 0 , 1 ) to the points on the circle .
onCircle :: Float -> P2 -> Float -> P2
onCircle rad center x = center + rad *^ P2 (cos (2 * pi * x)) (sin (2 * pi * x))

  | Maps values from interval ( 0 , 1 ) to the points on the line segment .
  > onLine point1 point2 value
onLine :: P2 -> P2 -> Float -> P2
onLine p1 p2 x = p1 + x *^ (p2 - p1)

  | Rescales the unipolar scale ( 0 , 1 ) to the given range .
uon :: (Float, Float) -> Float -> Float
uon (a, b) x = a + (b - a) * x
