content: -----------------------------------------------------------------------------
  -- |
  -- 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
  