{-# LANGUAGE FlexibleContexts     #-}
{-# LANGUAGE TypeFamilies         #-}
{-# LANGUAGE TypeSynonymInstances #-}
-----------------------------------------------------------------------------
-- |
-- Module      :  Diagrams.ThreeD
-- Copyright   :  (c) 2013-2015 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.Deform" defines several R^3-specific
--     non-affine transformations, such as projections.
--
--   * "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.
--
--   * "Diagrams.ThreeD.Align" defines many alignment combinators
--     specialized to three dimensions.
--
--   * "Diagrams.ThreeD.Attributes" defines 3D-specific attributes
--     such as surface color, diffuse reflectance, and specular
--     highlights.
-----------------------------------------------------------------------------
module Diagrams.ThreeD
  ( module Diagrams.ThreeD.Align
  , module Diagrams.ThreeD.Attributes
  , module Diagrams.ThreeD.Camera
  , module Diagrams.ThreeD.Deform
  , 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.Attributes
import           Diagrams.ThreeD.Camera
import           Diagrams.ThreeD.Deform
import           Diagrams.ThreeD.Light
import           Diagrams.ThreeD.Shapes
import           Diagrams.ThreeD.Transform
import           Diagrams.ThreeD.Types
import           Diagrams.ThreeD.Vector