{-# LANGUAGE Unsafe #-}
module Data.Geometry.Matrix.Internal where

import           Control.Lens (set)
import           Data.Geometry.Vector
import qualified Data.Vector.Fixed as FV

--------------------------------------------------------------------------------
-- * Helper functions to easily create matrices

-- | Creates a row with zeroes everywhere, except at position i, where the
-- value is the supplied value.
mkRow     :: forall d r. (Arity d, Num r) => Int -> r -> Vector d r
mkRow i x = set (FV.element i) x zero