Copyright | (c) 2011 diagrams-lib team (see LICENSE) |
---|---|

License | BSD-style (see LICENSE) |

Maintainer | diagrams-discuss@googlegroups.com |

Safe Haskell | None |

Language | Haskell2010 |

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

- data Point v :: * -> *
- origin :: AdditiveGroup v => Point v
- (*.) :: VectorSpace v => Scalar v -> Point v -> Point v
- centroid :: (VectorSpace v, Fractional (Scalar v)) => [Point v] -> Point v
- pointDiagram :: (Fractional (Scalar v), InnerSpace v) => Point v -> QDiagram b v m

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

Functor 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, |

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 |

Deformable (Point v) | |

Typeable (* -> *) Point | |

type V (Point v) = v | |

type Diff (Point v) = v | |

type FinalCoord (Point v) = FinalCoord v | |

type PrevDim (Point v) = PrevDim v | |

type Decomposition (Point v) = Decomposition 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.

# Point-related utilities

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

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.