35 lines
635 B
Haskell
35 lines
635 B
Haskell
module Geometry.Data
|
|
( module Geometry.Data
|
|
, V2 (..)
|
|
, V3 (..)
|
|
, V4 (..)
|
|
)
|
|
where
|
|
import Linear.V2
|
|
import Linear.V3
|
|
import Linear.V4
|
|
type Point2 = V2 Float
|
|
type Point3 = V3 Float
|
|
type Point4 = V4 Float
|
|
|
|
type DPoint2 = (Point2,Float)
|
|
|
|
toV2 :: (a,a) -> V2 a
|
|
toV2 (a,b) = V2 a b
|
|
toV3 :: (a,a,a) -> V3 a
|
|
toV3 (a,b,c) = V3 a b c
|
|
toV4 :: (a,a,a,a) -> V4 a
|
|
toV4 (a,b,c,d) = V4 a b c d
|
|
|
|
fromV3 :: V3 a -> (a,a,a)
|
|
fromV3 (V3 a b c) = (a,b,c)
|
|
|
|
uncurryV :: (a -> a -> b) -> V2 a -> b
|
|
{-# INLINE uncurryV #-}
|
|
uncurryV f (V2 x y) = f x y
|
|
|
|
fstV2 :: V2 a -> a
|
|
fstV2 (V2 x _) = x
|
|
sndV2 :: V2 a -> a
|
|
sndV2 (V2 _ x) = x
|