{-# LANGUAGE FlexibleContexts     #-}
{-# LANGUAGE TypeFamilies         #-}
{-# LANGUAGE TypeSynonymInstances #-}
-----------------------------------------------------------------------------
-- |
-- Module      :  Diagrams.ThreeD
-- Copyright   :  (c) 2013 diagrams-lib team (see LICENSE)
-- License     :  BSD-style (see LICENSE)
-- Maintainer  :  diagrams-discuss@googlegroups.com
--
-- This module defines the three-dimensional vector space R^3,
-- three-dimensional transformations, and various predefined
-- three-dimensional shapes.  This module re-exports useful
-- functionality from a group of more specific modules:
--
--   * "Diagrams.ThreeD.Types" defines basic types for two-dimensional
--     diagrams, including types representing the 3D Euclidean vector
--     space and various systems of representing directions.
--
--   * "Diagrams.ThreeD.Transform" defines R^3-specific transformations
--     such as rotation by an angle, and scaling, translation, and
--     reflection in the X, Y, and Z directions.
--
--   * "Diagrams.ThreeD.Shapes" defines three-dimensional solids,
--     e.g. spheres and cubes.
--
--   * "Diagrams.ThreeD.Vector" defines some special 3D vectors and
--     functions for converting between vectors and directions.
--
--   * "Diagrams.ThreeD.Light" and "Diagrams.ThreeD.Camera" define types needed
--     for rendering 3D geometry to (2D) images.
-----------------------------------------------------------------------------
module Diagrams.ThreeD
       ( module Diagrams.ThreeD.Align
       , module Diagrams.ThreeD.Camera
       , module Diagrams.ThreeD.Light
       , module Diagrams.ThreeD.Shapes
       , module Diagrams.ThreeD.Transform
       , module Diagrams.ThreeD.Types
       , module Diagrams.ThreeD.Vector
       ) where

import Diagrams.ThreeD.Align
import Diagrams.ThreeD.Camera
import Diagrams.ThreeD.Light
import Diagrams.ThreeD.Shapes
import Diagrams.ThreeD.Transform
import Diagrams.ThreeD.Types
import Diagrams.ThreeD.Vector