    -----------------------------------------------------------------------------
    -- |
    -- Module      :  Diagrams.ThreeD.Vector
    -- Copyright   :  (c) 2013 diagrams-lib team (see LICENSE)
    -- License     :  BSD-style (see LICENSE)
    -- Maintainer  :  diagrams-discuss@googlegroups.com
    --
    -- Three-dimensional vectors.
    --
    -----------------------------------------------------------------------------
    module Diagrams.ThreeD.Vector
           ( -- * Special 3D vectors
             unitX, unitY, unitZ, unit_X, unit_Y, unit_Z
           , xDir, yDir, zDir
           ) where

    import           Control.Lens          ((&), (.~))

    import           Diagrams.ThreeD.Types
    import           Diagrams.TwoD.Vector
    import           Diagrams.Direction

    import           Linear.Vector

    -- | The unit vector in the positive Y direction.
    unitZ :: (R3 v, Additive v, Num n) => v n
    unitZ = zero & _z .~ 1

    -- | The unit vector in the negative X direction.
    unit_Z :: (R3 v, Additive v, Num n) => v n
    unit_Z = zero & _z .~ (-1)

    -- | A 'Direction' pointing in the Z direction.
    zDir :: (R3 v, Additive v, Num n) => Direction v n
    zDir = dir unitZ