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

Maintainer diagrams-discuss@googlegroups.com None

Diagrams.Points

Contents

Description

Points in space. For more tools for working with points and vectors, see Data.AffineSpace and Diagrams.Coordinates.

Synopsis

# Points

data 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.

Instances

 Functor Point Typeable1 Point HasZ P3 HasY P2 HasY P3 HasX P2 HasX P3 Eq v => Eq (Point v) Data v => Data (Point v) Ord v => Ord (Point v) Read v => Read (Point v) Show v => Show (Point v) (OrderedField (Scalar v), InnerSpace v) => Enveloped (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). HasLinearMap v => Transformable (Point v) VectorSpace v => HasOrigin (Point v) AdditiveGroup v => AffineSpace (Point v) Coordinates v => Coordinates (Point v) (InnerSpace v, OrderedField (Scalar v)) => TrailLike [Point v] A list of points is trail-like; this instance simply computes the vertices of the trail, using `trailVertices`. Newtype (Point v) v (~ * (Scalar v) s, ~ * (Scalar v') s', ~ * s s') => Wrapped (Point v -> v -> PosInf s) (Point v' -> v' -> PosInf s') (Trace v) (Trace v') Wrapped (Point v -> m) (Point v' -> m') (Query v m) (Query v' m')

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.

# Point-related utilities

centroid :: (VectorSpace v, Fractional (Scalar v)) => [Point v] -> Point vSource

The centroid of a set of n points is their sum divided by n.

pointDiagram :: (Fractional (Scalar v), InnerSpace v) => Point v -> QDiagram b v m

Create a "point diagram", which has no content, no trace, an empty query, and a point envelope.