diagrams-lib-1.3: Embedded domain-specific language for declarative graphics

Copyright(c) 2013 diagrams-lib team (see LICENSE)
LicenseBSD-style (see LICENSE)
Maintainerdiagrams-discuss@googlegroups.com
Safe HaskellNone
LanguageHaskell2010

Diagrams.ThreeD.Camera

Description

Types to specify viewpoint for 3D rendering.

Synopsis

Documentation

data Camera l n Source

Instances

Num n => Transformable (Camera l n) 
Typeable ((* -> *) -> * -> *) Camera 
Num n => Renderable (Camera l n) NullBackend 
type V (Camera l n) = V3 
type N (Camera l n) = n 

data PerspectiveLens n Source

A perspective projection

Constructors

PerspectiveLens 

Fields

_horizontalFieldOfView :: Angle n

Horizontal field of view.

_verticalFieldOfView :: Angle n

Vertical field of view.

Instances

Typeable (* -> *) PerspectiveLens 
type V (PerspectiveLens n) = V3 
type N (PerspectiveLens n) = n 

data OrthoLens n Source

An orthographic projection

Constructors

OrthoLens 

Fields

_orthoWidth :: n

Width

_orthoHeight :: n

Height

Instances

Typeable (* -> *) OrthoLens 
type V (OrthoLens n) = V3 
type N (OrthoLens n) = n 

orthoWidth :: forall n. Lens' (OrthoLens n) n Source

orthoHeight :: forall n. Lens' (OrthoLens n) n Source

camLens :: Camera l n -> l n Source

facing_ZCamera :: (Floating n, Ord n, Typeable n, CameraLens l, Renderable (Camera l n) b) => l n -> QDiagram b V3 n Any Source

'facing_ZCamera l' is a camera at the origin facing along the negative Z axis, with its up-axis coincident with the positive Y axis, with the projection defined by l.

mm50Camera :: (Typeable n, Floating n, Ord n, Renderable (Camera PerspectiveLens n) b) => QDiagram b V3 n Any Source

A camera at the origin facing along the negative Z axis, with its up-axis coincident with the positive Y axis. The field of view is chosen to match a 50mm camera on 35mm film. Note that Cameras take up no space in the Diagram.

mm50 :: Floating n => PerspectiveLens n Source

mm50 has the field of view of a 50mm lens on standard 35mm film, hence an aspect ratio of 3:2.

mm50Wide :: Floating n => PerspectiveLens n Source

mm50blWide has the same vertical field of view as mm50, but an aspect ratio of 1.6, suitable for wide screen computer monitors.

mm50Narrow :: Floating n => PerspectiveLens n Source

mm50Narrow has the same vertical field of view as mm50, but an aspect ratio of 4:3, for VGA and similar computer resolutions.

aspect :: (CameraLens l, Floating n) => l n -> n Source

The natural aspect ratio of the projection.

camAspect :: (Floating n, CameraLens l) => Camera l n -> n Source