module Diagrams.Points
( centroid
) where
import Diagrams.Coordinates
import Diagrams.Core.Points
import Control.Newtype
import Control.Arrow ((&&&))
import Data.VectorSpace
centroid :: (VectorSpace v, Fractional (Scalar v)) => [Point v] -> Point v
centroid = pack . uncurry (^/) . (sumV &&& (fromIntegral . length)) . map unpack
instance Coordinates v => Coordinates (Point v) where
type FinalCoord (Point v) = FinalCoord v
type PrevDim (Point v) = PrevDim v
type Decomposition (Point v) = Decomposition v
x & y = P (x & y)
coords (P v) = coords v