0 | module Data.NumIdr.Transform.Affine
3 | import Data.NumIdr.Interfaces
4 | import Data.NumIdr.Array
5 | import Data.NumIdr.Vector
6 | import Data.NumIdr.Matrix
7 | import Data.NumIdr.Homogeneous
8 | import Data.NumIdr.Transform.Point
9 | import Data.NumIdr.Transform.Transform
16 | Affine : Nat -> Type -> Type
17 | Affine = Transform TAffine
22 | isAffine : FieldCmp a => HMatrix' n a -> Bool
23 | isAffine mat = isHMatrix mat && invertible (getMatrix mat)
28 | fromHMatrix : FieldCmp a => HMatrix' n a -> Maybe (Affine n a)
29 | fromHMatrix mat = if isAffine mat
30 | then Just (unsafeMkTrans mat)