packages feed

geomancy-0.4.0.0: src/Geomancy.hs

{-# LANGUAGE PatternSynonyms #-}

module Geomancy
  (
  -- * Vectors

  -- ** Single-precision / float32s

    Vec2
  , vec2
  , withVec2
  , pattern WithVec2
  , Point2

  , Vec3
  , vec3
  , withVec3
  , pattern WithVec3
  , Point3
  , Point3P

  , Vec4
  , vec4
  , withVec4
  , pattern WithVec4
  , Point4

  -- ** Double-precision / float64s

  , DVec2
  , dvec2
  , withDVec2
  , pattern WithDVec2
  , DPoint2

  , DVec3
  , dvec3
  , withDVec3
  , pattern WithDVec3
  , DPoint3
  , DPoint3P

  , DVec4
  , dvec4
  , withDVec4
  , pattern WithDVec4
  , DPoint4

  -- ** Signed / int32s

  , IVec2
  , ivec2
  , withIVec2
  , pattern WithIVec2

  , IVec3
  , ivec3
  , withIVec3
  , pattern WithIVec3

  , IVec4
  , ivec4
  , withIVec4
  , pattern WithIVec4

  -- ** Unsigned / word32s

  , UVec2
  , uvec2
  , withUVec2
  , pattern WithUVec2

  , UVec3
  , uvec3
  , withUVec3
  , pattern WithUVec3

  , UVec4
  , uvec4
  , withUVec4
  , pattern WithUVec4

  -- ** Signed / int64s

  , I64Vec2
  , i64vec2
  , withI64Vec2
  , pattern WithI64Vec2

  , I64Vec3
  , i64vec3
  , withI64Vec3
  , pattern WithI64Vec3

  , I64Vec4
  , i64vec4
  , withI64Vec4
  , pattern WithI64Vec4

  -- ** Unsigned / word64s

  , U64Vec2
  , u64vec2
  , withU64Vec2
  , pattern WithU64Vec2

  , U64Vec3
  , u64vec3
  , withU64Vec3
  , pattern WithU64Vec3

  , U64Vec4
  , u64vec4
  , withU64Vec4
  , pattern WithU64Vec4

  -- ** Generic maps

  , Elementwise(..)

  -- * Matrices

  , Mat4
  , DMat4
  , Transform(..)
  , DTransform(..)

  -- * Other beasts

  , Quaternion
  , quaternion
  , withQuaternion

  , DQuaternion
  , dquaternion
  , withDQuaternion

  -- * Spaces

  , Point(..)
  , AffineSpace(..)
  , VectorSpace(..)
  , (^*)
  , lerp
  , quadrance
  ) where

import Geomancy.Vec2 (Vec2, vec2, withVec2, pattern WithVec2)
import Geomancy.Vec3 (Vec3, vec3, withVec3, pattern WithVec3)
import Geomancy.Vec4 (Vec4, vec4, withVec4, pattern WithVec4)

import Geomancy.DVec2 (DVec2, dvec2, withDVec2, pattern WithDVec2)
import Geomancy.DVec3 (DVec3, dvec3, withDVec3, pattern WithDVec3)
import Geomancy.DVec4 (DVec4, dvec4, withDVec4, pattern WithDVec4)

import Geomancy.IVec2 (IVec2, ivec2, withIVec2, pattern WithIVec2)
import Geomancy.IVec3 (IVec3, ivec3, withIVec3, pattern WithIVec3)
import Geomancy.IVec4 (IVec4, ivec4, withIVec4, pattern WithIVec4)

import Geomancy.UVec2 (UVec2, uvec2, withUVec2, pattern WithUVec2)
import Geomancy.UVec3 (UVec3, uvec3, withUVec3, pattern WithUVec3)
import Geomancy.UVec4 (UVec4, uvec4, withUVec4, pattern WithUVec4)

import Geomancy.I64Vec2 (I64Vec2, i64vec2, withI64Vec2, pattern WithI64Vec2)
import Geomancy.I64Vec3 (I64Vec3, i64vec3, withI64Vec3, pattern WithI64Vec3)
import Geomancy.I64Vec4 (I64Vec4, i64vec4, withI64Vec4, pattern WithI64Vec4)

import Geomancy.U64Vec2 (U64Vec2, u64vec2, withU64Vec2, pattern WithU64Vec2)
import Geomancy.U64Vec3 (U64Vec3, u64vec3, withU64Vec3, pattern WithU64Vec3)
import Geomancy.U64Vec4 (U64Vec4, u64vec4, withU64Vec4, pattern WithU64Vec4)

import Geomancy.Elementwise (Elementwise(..))

import Geomancy.Mat4 (Mat4)
import Geomancy.DMat4 (DMat4)
import Geomancy.Transform (Transform(..))
import Geomancy.DTransform (DTransform(..))

import Geomancy.Quaternion (Quaternion, quaternion, withQuaternion)
import Geomancy.DQuaternion (DQuaternion, dquaternion, withDQuaternion)

import Geomancy.Point (AffineSpace(..), Point(..), Point2, Point3, Point3P, Point4, DPoint2, DPoint3, DPoint3P, DPoint4)
import Geomancy.Vector (VectorSpace(..), lerp, quadrance, (^*))