diagrams-core-0.6: Core libraries for diagrams EDSL

Maintainer diagrams-discuss@googlegroups.com None

Diagrams.Core.Points

Contents

Description

A type for points (as distinct from vectors).

Synopsis

# Points

newtype Point v

`Point` is a newtype wrapper around vectors used to represent points, so we don't get them mixed up. The distinction between vectors and points is important: translations affect points, but leave vectors unchanged. Points are instances of the `AffineSpace` class from Data.AffineSpace.

Constructors

 P v

Instances

 Functor Point Typeable1 Point Eq v => Eq (Point v) (Typeable (Point v), Data v) => Data (Point v) (Eq (Point v), Ord v) => Ord (Point v) Read v => Read (Point v) Show v => Show (Point v) (AdditiveGroup (Diff (Point v)), AdditiveGroup v) => AffineSpace (Point v) (VectorSpace (V (Point v)), VectorSpace v) => HasOrigin (Point v) (HasLinearMap (V (Point v)), HasLinearMap v) => Transformable (Point v) (Ord (Scalar (V (Point v))), VectorSpace (V (Point v)), Ord (Scalar v), VectorSpace v) => Traced (Point v) The trace of a single point is the empty trace, i.e. the one which returns positive infinity for every query. Arguably it should return a finite distance for vectors aimed directly at the given point and infinity for everything else, but due to floating-point inaccuracy this is problematic. Note that the envelope for a single point is *not* the empty envelope (see Diagrams.Core.Envelope). (InnerSpace (V (Point v)), OrderedField (Scalar (V (Point v))), OrderedField (Scalar v), InnerSpace v) => Enveloped (Point v) Newtype (Point v) v

origin :: AdditiveGroup v => Point v

The origin of the vector space `v`.

(*.) :: VectorSpace v => Scalar v -> Point v -> Point v

Scale a point by a scalar.