{-# LANGUAGE RebindableSyntax #-}
{-# OPTIONS_HADDOCK prune #-}
module Chart.Data
(
Rect (..),
padRect,
padSingletons,
singletonGuard,
Point (..),
addp,
Multiplicative (one),
Additive (zero),
abs,
angle,
magnitude,
module NumHask.Space,
)
where
import NumHask.Prelude
import NumHask.Space
padRect :: (Subtractive a) => a -> Rect a -> Rect a
padRect :: forall a. Subtractive a => a -> Rect a -> Rect a
padRect a
p (Rect a
x a
z a
y a
w) = forall a. a -> a -> a -> a -> Rect a
Rect (a
x forall a. Subtractive a => a -> a -> a
- a
p) (a
z forall a. Additive a => a -> a -> a
+ a
p) (a
y forall a. Subtractive a => a -> a -> a
- a
p) (a
w forall a. Additive a => a -> a -> a
+ a
p)
padSingletons :: Rect Double -> Rect Double
padSingletons :: Rect Double -> Rect Double
padSingletons (Rect Double
x Double
z Double
y Double
w)
| Double
x forall a. Eq a => a -> a -> Bool
== Double
z Bool -> Bool -> Bool
&& Double
y forall a. Eq a => a -> a -> Bool
== Double
w = forall a. a -> a -> a -> a -> Rect a
Rect (Double
x forall a. Subtractive a => a -> a -> a
- Double
0.5) (Double
x forall a. Additive a => a -> a -> a
+ Double
0.5) (Double
y forall a. Subtractive a => a -> a -> a
- Double
0.5) (Double
y forall a. Additive a => a -> a -> a
+ Double
0.5)
| Double
x forall a. Eq a => a -> a -> Bool
== Double
z = forall a. a -> a -> a -> a -> Rect a
Rect (Double
x forall a. Subtractive a => a -> a -> a
- Double
0.5) (Double
x forall a. Additive a => a -> a -> a
+ Double
0.5) Double
y Double
w
| Double
y forall a. Eq a => a -> a -> Bool
== Double
w = forall a. a -> a -> a -> a -> Rect a
Rect Double
x Double
z (Double
y forall a. Subtractive a => a -> a -> a
- Double
0.5) (Double
y forall a. Additive a => a -> a -> a
+ Double
0.5)
| Bool
otherwise = forall a. a -> a -> a -> a -> Rect a
Rect Double
x Double
z Double
y Double
w
singletonGuard :: Maybe (Rect Double) -> Rect Double
singletonGuard :: Maybe (Rect Double) -> Rect Double
singletonGuard = forall b a. b -> (a -> b) -> Maybe a -> b
maybe forall a. Multiplicative a => a
one Rect Double -> Rect Double
padSingletons
addp :: Point Double -> Point Double -> Point Double
addp :: Point Double -> Point Double -> Point Double
addp = forall a. Additive a => a -> a -> a
(+)