-- SG library
-- Copyright (c) 2009, Neil Brown.
-- All rights reserved.
--
-- Redistribution and use in source and binary forms, with or without
-- modification, are permitted provided that the following conditions are
-- met:
--
-- * Redistributions of source code must retain the above copyright
-- notice, this list of conditions and the following disclaimer.
-- * Redistributions in binary form must reproduce the above copyright
-- notice, this list of conditions and the following disclaimer in the
-- documentation and/or other materials provided with the distribution.
-- * The author's name may not be used to endorse or promote products derived
-- from this software without specific prior written permission.
--
-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-- | A small geometry library, with vectors, matrices and simple shape
-- collision detection that is intended to be straightforward in two and three
-- dimensions.
--
-- The basics of vectors are in the "Data.SG.Vector" module, the basics of lines
-- and geometry tests (e.g. testing whether a point is on a line) are in "Data.SG.Geometry",
-- with further specialised tests in "Data.SG.Geometry.TwoDim" and "Data.SG.Geometry.ThreeDim".
-- Matrix transformations are in "Data.SG.Matrix" and shapes (with collision detection)
-- are in "Data.SG.Shape".
--
-- The names for most of the types in this library end with a prime. This is because
-- it is intended that you specialise these types (usually to Float or Double)
-- in your application as follows:
--
-- > type Point2 = Point2' Double
-- > type Rel2 = Rel2' Double
-- > type Line2 = Line2' Double
-- > type Matrix22 = Matrix22' Double
--
-- Much of the use of the types (especially vectors) in this library is made
-- using type-classes such as Num, Functor, Applicative and so on. For more
-- explanation on some of the less well-known type-classes, see either the
-- article Typeclassopedia in The Monad Reader
-- () issue 13
-- (), or my own notes
-- at .
--
-- To understand what various functions will actually do, look at the SGdemo project
-- ()
-- on Hackage (and its code) which provides a visual demonstration of several of
-- the functions.
module Data.SG
(module Data.SG.Vector
,module Data.SG.Vector.Basic
,module Data.SG.Geometry
,module Data.SG.Geometry.TwoDim
,module Data.SG.Geometry.ThreeDim
,module Data.SG.Matrix
,module Data.SG.Shape
) where
import Data.SG.Vector
import Data.SG.Vector.Basic
import Data.SG.Geometry
import Data.SG.Geometry.TwoDim
import Data.SG.Geometry.ThreeDim
import Data.SG.Matrix
import Data.SG.Shape