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

Copyright | (c) 2011-15 diagrams-lib team (see LICENSE)
License | BSD-style (see LICENSE)
Maintainer | diagrams-discuss@googlegroups.com
Safe Haskell | Safe-Inferred
Language | Haskell2010

Diagrams.Transform

Contents

- Transformations
- The Transformable class
- Some specific transformations
- Miscellaneous transformation-related utilities
- The HasOrigin class

Description

Affine transformations, parameterized by any vector space. For transformations on particular vector spaces, see e.g. Diagrams.TwoD.Transform.

Synopsis

- data Transformation (v :: Type -> Type) n
- inv :: forall (v :: Type -> Type) n. (Functor v, Num n) => Transformation v n -> Transformation v n
- transl :: Transformation v n -> v n
- apply :: Transformation v n -> v n -> v n
- papply :: forall (v :: Type -> Type) n. (Additive v, Num n) => Transformation v n -> Point v n -> Point v n
- class Transformable t where
  - transform :: Transformation (V t) (N t) -> t -> t
- translation :: v n -> Transformation v n
- translate :: Transformable t => Vn t -> t -> t
- moveTo :: forall (v :: Type -> Type) n t. (InSpace v n t, HasOrigin t) => Point v n -> t -> t
- place :: forall (v :: Type -> Type) n t. (InSpace v n t, HasOrigin t) => t -> Point v n -> t
- scaling :: forall (v :: Type -> Type) n. (Additive v, Fractional n) => n -> Transformation v n
- scale :: forall (v :: Type -> Type) n a. (InSpace v n a, Eq n, Fractional n, Transformable a) => n -> a -> a
- conjugate :: (Additive v, Num n) => Transformation v n -> Transformation v n -> Transformation v n
- underT :: (InSpace v n a, SameSpace a b, Transformable a, Transformable b) => (a -> b) -> Transformation v n -> a -> b
- transformed :: (InSpace v n a, SameSpace a b, Transformable a, Transformable b) => Transformation v n -> Iso a b a b
- translated :: (InSpace v n a, SameSpace a b, Transformable a, Transformable b) => v n -> Iso a b a b
- movedTo :: (InSpace v n a, SameSpace a b, HasOrigin a, HasOrigin b) => Point v n -> Iso a b a b
- movedFrom :: (InSpace v n a, SameSpace a b, HasOrigin a, HasOrigin b) => Point v n -> Iso a b a b
- class HasOrigin t where
  - moveOriginTo :: Point (V t) (N t) -> t -> t
- moveOriginBy :: (V t ~ v, N t ~ n, HasOrigin t) => v n -> t -> t

# Transformations

data Transformation (v :: Type -> Type) n Source #

General (affine) transformations, represented by an invertible linear map, its transpose, and a vector representing a translation component.

By the transpose of a linear map we mean simply the linear map corresponding to the transpose of the map's matrix representation. For example, any scale is its own transpose, since scales are represented by matrices with zeros everywhere except the diagonal. The transpose of a rotation is the same as its inverse.

The reason we need to keep track of transposes is because it turns out that when transforming a shape according to some linear map L, the shape's normal vectors transform according to L's inverse transpose. (For a more detailed explanation and proof, see https://wiki.haskell.org/Diagrams/Dev/Transformations.) This is exactly what we need when transforming bounding functions, which are defined in terms of perpendicular (i.e. normal) hyperplanes.

For more general, non-invertible transformations, see `Diagrams.Deform` (in `diagrams-lib`).

#### Instances

Instances details

(Additive v, Num n) => Monoid (Transformation v n) |
Instance details Defined in Diagrams.Core.Transform Methods mempty :: Transformation v n Source # mappend :: Transformation v n -> Transformation v n -> Transformation v n Source # mconcat :: [Transformation v n] -> Transformation v n Source #
(Additive v, Num n) => Semigroup (Transformation v n) | Transformations are closed under composition; `t1 <> t2` is the transformation which performs first `t2`, then `t1`.
Instance details Defined in Diagrams.Core.Transform Methods (<>) :: Transformation v n -> Transformation v n -> Transformation v n Source # sconcat :: NonEmpty (Transformation v n) -> Transformation v n Source # stimes :: Integral b => b -> Transformation v n -> Transformation v n Source #
(Additive v, Num n) => HasOrigin (Transformation v n) |
Instance details Defined in Diagrams.Core.Transform Methods moveOriginTo :: Point (V (Transformation v n)) (N (Transformation v n)) -> Transformation v n -> Transformation v n Source #
(Additive v, Num n) => Transformable (Transformation v n) |
Instance details Defined in Diagrams.Core.Transform Methods transform :: Transformation (V (Transformation v n)) (N (Transformation v n)) -> Transformation v n -> Transformation v n Source #
(Transformable a, V a ~ v, N a ~ n) => Action (Transformation v n) a | Transformations can act on transformable things.
Instance details Defined in Diagrams.Core.Transform Methods act :: Transformation v n -> a -> a Source #
type N (Transformation v n) |
Instance details Defined in Diagrams.Core.Transform type N (Transformation v n) = n
type V (Transformation v n) |
Instance details Defined in Diagrams.Core.Transform type V (Transformation v n) = v

inv :: forall (v :: Type -> Type) n. (Functor v, Num n) => Transformation v n -> Transformation v n Source #

Invert a transformation.

transl :: Transformation v n -> v n Source #

Get the translational component of a transformation.

apply :: Transformation v n -> v n -> v n Source #

Apply a transformation to a vector. Note that any translational component of the transformation will not affect the vector, since vectors are invariant under translation.

papply :: forall (v :: Type -> Type) n. (Additive v, Num n) => Transformation v n -> Point v n -> Point v n Source #

Apply a transformation to a point.

# The Transformable class

class Transformable t where Source #

Type class for things `t` which can be transformed.

Methods

transform :: Transformation (V t) (N t) -> t -> t Source #

Apply a transformation to an object.

#### Instances

Instances details

Transformable a => Transformable (Active a) Source # |
Instance details Defined in Diagrams.Animation.Active Methods transform :: Transformation (V (Active a)) (N (Active a)) -> Active a -> Active a Source #
(Transformable t, Ord t) => Transformable (Set t) |
Instance details Defined in Diagrams.Core.Transform Methods transform :: Transformation (V (Set t)) (N (Set t)) -> Set t -> Set t Source #
(Num (N t), Additive (V t), Transformable t) => Transformable (TransInv t) |
Instance details Defined in Diagrams.Core.Transform Methods transform :: Transformation (V (TransInv t)) (N (TransInv t)) -> TransInv t -> TransInv t Source #
(Additive (V a), Num (N a), Transformable a) => Transformable (Located a) Source # | Applying a transformation `t` to a `Located a` results in the transformation being applied to the location, and the linear portion of `t` being applied to the value of type `a` (i.e. it is not translated).
Instance details Defined in Diagrams.Located Methods transform :: Transformation (V (Located a)) (N (Located a)) -> Located a -> Located a Source #
Transformable (ParallelLight n) Source # |
Instance details Defined in Diagrams.ThreeD.Light Methods transform :: Transformation (V (ParallelLight n)) (N (ParallelLight n)) -> ParallelLight n -> ParallelLight n Source #
Fractional n => Transformable (PointLight n) Source # |
Instance details Defined in Diagrams.ThreeD.Light Methods transform :: Transformation (V (PointLight n)) (N (PointLight n)) -> PointLight n -> PointLight n Source #
Fractional n => Transformable (Box n) Source # |
Instance details Defined in Diagrams.ThreeD.Shapes Methods transform :: Transformation (V (Box n)) (N (Box n)) -> Box n -> Box n Source #
Fractional n => Transformable (CSG n) Source # |
Instance details Defined in Diagrams.ThreeD.Shapes Methods transform :: Transformation (V (CSG n)) (N (CSG n)) -> CSG n -> CSG n Source #
Fractional n => Transformable (Ellipsoid n) Source # |
Instance details Defined in Diagrams.ThreeD.Shapes Methods transform :: Transformation (V (Ellipsoid n)) (N (Ellipsoid n)) -> Ellipsoid n -> Ellipsoid n Source #
Fractional n => Transformable (Frustum n) Source # |
Instance details Defined in Diagrams.ThreeD.Shapes Methods transform :: Transformation (V (Frustum n)) (N (Frustum n)) -> Frustum n -> Frustum n Source #
(V t ~ V2, N t ~ n, RealFloat n, Transformable t) => Transformable (ScaleInv t) Source # |
Instance details Defined in Diagrams.Transform.ScaleInv Methods transform :: Transformation (V (ScaleInv t)) (N (ScaleInv t)) -> ScaleInv t -> ScaleInv t Source #
Floating n => Transformable (FillTexture n) Source # |
Instance details Defined in Diagrams.TwoD.Attributes Methods transform :: Transformation (V (FillTexture n)) (N (FillTexture n)) -> FillTexture n -> FillTexture n Source #
Fractional n => Transformable (LGradient n) Source # |
Instance details Defined in Diagrams.TwoD.Attributes Methods transform :: Transformation (V (LGradient n)) (N (LGradient n)) -> LGradient n -> LGradient n Source #
Floating n => Transformable (LineTexture n) Source # |
Instance details Defined in Diagrams.TwoD.Attributes Methods transform :: Transformation (V (LineTexture n)) (N (LineTexture n)) -> LineTexture n -> LineTexture n Source #
Fractional n => Transformable (RGradient n) Source # |
Instance details Defined in Diagrams.TwoD.Attributes Methods transform :: Transformation (V (RGradient n)) (N (RGradient n)) -> RGradient n -> RGradient n Source #
Floating n => Transformable (Texture n) Source # |
Instance details Defined in Diagrams.TwoD.Attributes Methods transform :: Transformation (V (Texture n)) (N (Texture n)) -> Texture n -> Texture n Source #
OrderedField n => Transformable (Clip n) Source # |
Instance details Defined in Diagrams.TwoD.Path Methods transform :: Transformation (V (Clip n)) (N (Clip n)) -> Clip n -> Clip n Source #
Floating n => Transformable (Text n) Source # |
Instance details Defined in Diagrams.TwoD.Text Methods transform :: Transformation (V (Text n)) (N (Text n)) -> Text n -> Text n Source #
Transformable (V2 n) Source # |
Instance details Defined in Diagrams.TwoD.Types Methods transform :: Transformation (V (V2 n)) (N (V2 n)) -> V2 n -> V2 n Source #
Transformable (V3 n) Source # |
Instance details Defined in Diagrams.ThreeD.Types Methods transform :: Transformation (V (V3 n)) (N (V3 n)) -> V3 n -> V3 n Source #
Transformable m => Transformable (Deletable m) |
Instance details Defined in Diagrams.Core.Transform Methods transform :: Transformation (V (Deletable m)) (N (Deletable m)) -> Deletable m -> Deletable m Source #
Transformable t => Transformable [t] |
Instance details Defined in Diagrams.Core.Transform Methods transform :: Transformation (V [t]) (N [t]) -> [t] -> [t] Source #
Transformable t => Transformable (Map k t) |
Instance details Defined in Diagrams.Core.Transform Methods transform :: Transformation (V (Map k t)) (N (Map k t)) -> Map k t -> Map k t Source #
(Metric v, Floating n) => Transformable (Envelope v n) |
Instance details Defined in Diagrams.Core.Envelope Methods transform :: Transformation (V (Envelope v n)) (N (Envelope v n)) -> Envelope v n -> Envelope v n Source #
(InSpace v n t, Transformable t, HasLinearMap v, Floating n) => Transformable (Measured n t) |
Instance details Defined in Diagrams.Core.Transform Methods transform :: Transformation (V (Measured n t)) (N (Measured n t)) -> Measured n t -> Measured n t Source #
(Additive v, Traversable v, Floating n) => Transformable (Attribute v n) | `TAttribute`s are transformed directly, `MAttribute`s have their local scale multiplied by the average scale of the transform. Plain `Attribute`s are unaffected.
Instance details Defined in Diagrams.Core.Style Methods transform :: Transformation (V (Attribute v n)) (N (Attribute v n)) -> Attribute v n -> Attribute v n Source #
(Additive v, Traversable v, Floating n) => Transformable (Style v n) |
Instance details Defined in Diagrams.Core.Style Methods transform :: Transformation (V (Style v n)) (N (Style v n)) -> Style v n -> Style v n Source #
(Additive v, Num n) => Transformable (Trace v n) |
Instance details Defined in Diagrams.Core.Trace Methods transform :: Transformation (V (Trace v n)) (N (Trace v n)) -> Trace v n -> Trace v n Source #
(Additive v, Num n) => Transformable (Transformation v n) |
Instance details Defined in Diagrams.Core.Transform Methods transform :: Transformation (V (Transformation v n)) (N (Transformation v n)) -> Transformation v n -> Transformation v n Source #
(V (v n) ~ v, N (v n) ~ n, Transformable (v n)) => Transformable (Direction v n) Source # |
Instance details Defined in Diagrams.Direction Methods transform :: Transformation (V (Direction v n)) (N (Direction v n)) -> Direction v n -> Direction v n Source #
(HasLinearMap v, Metric v, OrderedField n) => Transformable (Path v n) Source # |
Instance details Defined in Diagrams.Path Methods transform :: Transformation (V (Path v n)) (N (Path v n)) -> Path v n -> Path v n Source #
(Additive v, Num n) => Transformable (FixedSegment v n) Source # |
Instance details Defined in Diagrams.Segment Methods transform :: Transformation (V (FixedSegment v n)) (N (FixedSegment v n)) -> FixedSegment v n -> FixedSegment v n Source #
Num n => Transformable (Camera l n) Source # |
Instance details Defined in Diagrams.ThreeD.Camera Methods transform :: Transformation (V (Camera l n)) (N (Camera l n)) -> Camera l n -> Camera l n Source #
(Floating n, Ord n, Metric v) => Transformable (SegTree v n) Source # |
Instance details Defined in Diagrams.Trail Methods transform :: Transformation (V (SegTree v n)) (N (SegTree v n)) -> SegTree v n -> SegTree v n Source #
(HasLinearMap v, Metric v, OrderedField n) => Transformable (Trail v n) Source # |
Instance details Defined in Diagrams.Trail Methods transform :: Transformation (V (Trail v n)) (N (Trail v n)) -> Trail v n -> Trail v n Source #
Fractional n => Transformable (DImage n a) Source # |
Instance details Defined in Diagrams.TwoD.Image Methods transform :: Transformation (V (DImage n a)) (N (DImage n a)) -> DImage n a -> DImage n a Source #
(Measured m a, Transformable a) => Transformable (FingerTree m a) Source # |
Instance details Defined in Diagrams.Trail Methods transform :: Transformation (V (FingerTree m a)) (N (FingerTree m a)) -> FingerTree m a -> FingerTree m a Source #
(Additive v, Num n) => Transformable (Point v n) |
Instance details Defined in Diagrams.Core.Transform Methods transform :: Transformation (V (Point v n)) (N (Point v n)) -> Point v n -> Point v n Source #
(Transformable t, Transformable s, V t ~ V s, N t ~ N s) => Transformable (t, s) |
Instance details Defined in Diagrams.Core.Transform Methods transform :: Transformation (V (t, s)) (N (t, s)) -> (t, s) -> (t, s) Source #
(V t ~ v, N t ~ n, V t ~ V s, N t ~ N s, Functor v, Num n, Transformable t, Transformable s) => Transformable (s -> t) |
Instance details Defined in Diagrams.Core.Transform Methods transform :: Transformation (V (s -> t)) (N (s -> t)) -> (s -> t) -> s -> t Source #
(Additive v, Num n) => Transformable (Query v n m) |
Instance details Defined in Diagrams.Core.Query Methods transform :: Transformation (V (Query v n m)) (N (Query v n m)) -> Query v n m -> Query v n m Source #
Transformable (Prim b v n) | The `Transformable` instance for `Prim` just pushes calls to `transform` down through the `Prim` constructor.
Instance details Defined in Diagrams.Core.Types Methods transform :: Transformation (V (Prim b v n)) (N (Prim b v n)) -> Prim b v n -> Prim b v n Source #
Transformable (Offset c v n) Source # |
Instance details Defined in Diagrams.Segment Methods transform :: Transformation (V (Offset c v n)) (N (Offset c v n)) -> Offset c v n -> Offset c v n Source #
Transformable (Segment c v n) Source # |
Instance details Defined in Diagrams.Segment Methods transform :: Transformation (V (Segment c v n)) (N (Segment c v n)) -> Segment c v n -> Segment c v n Source #
(HasLinearMap v, Metric v, OrderedField n) => Transformable (Trail' l v n) Source # |
Instance details Defined in Diagrams.Trail Methods transform :: Transformation (V (Trail' l v n)) (N (Trail' l v n)) -> Trail' l v n -> Trail' l v n Source #
(Transformable t, Transformable s, Transformable u, V s ~ V t, N s ~ N t, V s ~ V u, N s ~ N u) => Transformable (t, s, u) |
Instance details Defined in Diagrams.Core.Transform Methods transform :: Transformation (V (t, s, u)) (N (t, s, u)) -> (t, s, u) -> (t, s, u) Source #
(OrderedField n, Metric v, Semigroup m) => Transformable (QDiagram b v n m) | Diagrams can be transformed by transforming each of their components appropriately.
Instance details Defined in Diagrams.Core.Types Methods transform :: Transformation (V (QDiagram b v n m)) (N (QDiagram b v n m)) -> QDiagram b v n m -> QDiagram b v n m Source #
Transformable (SubMap b v n m) |
Instance details Defined in Diagrams.Core.Types Methods transform :: Transformation (V (SubMap b v n m)) (N (SubMap b v n m)) -> SubMap b v n m -> SubMap b v n m Source #
Transformable (Subdiagram b v n m) |
Instance details Defined in Diagrams.Core.Types Methods transform :: Transformation (V (Subdiagram b v n m)) (N (Subdiagram b v n m)) -> Subdiagram b v n m -> Subdiagram b v n m Source #

# Some specific transformations

translation :: v n -> Transformation v n Source #

Create a translation.

translate :: Transformable t => Vn t -> t -> t Source #

Translate by a vector.

moveTo :: forall (v :: Type -> Type) n t. (InSpace v n t, HasOrigin t) => Point v n -> t -> t Source #

Translate the object by the translation that sends the origin to the given point. Note that this is dual to `moveOriginTo`, i.e. we should have

      moveTo (origin .^+ v) === moveOriginTo (origin .^- v)

For types which are also `Transformable`, this is essentially the same as `translate`, i.e.

      moveTo (origin .^+ v) === translate v

place :: forall (v :: Type -> Type) n t. (InSpace v n t, HasOrigin t) => t -> Point v n -> t Source #

A flipped variant of `moveTo`, provided for convenience. Useful when writing a function which takes a point as an argument, such as when using `withName` and friends.

scaling :: forall (v :: Type -> Type) n. (Additive v, Fractional n) => n -> Transformation v n Source #

Create a uniform scaling transformation.

scale :: forall (v :: Type -> Type) n a. (InSpace v n a, Eq n, Fractional n, Transformable a) => n -> a -> a Source #

Scale uniformly in every dimension by the given scalar.

# Miscellaneous transformation-related utilities

conjugate :: (Additive v, Num n) => Transformation v n -> Transformation v n -> Transformation v n Source #

Conjugate one transformation by another. `conjugate t1 t2` is the transformation which performs first `t1`, then `t2`, then the inverse of `t1`.

underT :: (InSpace v n a, SameSpace a b, Transformable a, Transformable b) => (a -> b) -> Transformation v n -> a -> b Source #

Carry out some transformation "under" another one: `f ``underT`` t` first applies `t`, then `f`, then the inverse of `t`. For example, ``scaleX` 2 ``underT`` `rotation` (-1/8 @@ Turn)` is the transformation which scales by a factor of 2 along the diagonal line y = x.

Note that

    (transform t2) underT t1 == transform (conjugate t1 t2)

for all transformations `t1` and `t2`.

See also the isomorphisms like `transformed`, `movedTo`, `movedFrom`, and `translated`.

transformed :: (InSpace v n a, SameSpace a b, Transformable a, Transformable b) => Transformation v n -> Iso a b a b Source #

Use a `Transformation` to make an `ReifiedIso` between an object transformed and untransformed. This is useful for carrying out functions `under` another transform:

    under (transformed t) f               == transform (inv t) . f . transform t
    under (transformed t1) (transform t2) == transform (conjugate t1 t2)
    transformed t ## a                    == transform t a
    a ^. transformed t                    == transform (inv t) a

translated :: (InSpace v n a, SameSpace a b, Transformable a, Transformable b) => v n -> Iso a b a b Source #

Use a vector to make an `ReifiedIso` between an object translated and untranslated.

    under (translated v) f == translate (-v) . f . translate v
    translated v ## a      == translate v a
    a ^. translated v      == translate (-v) a
    over (translated v) f  == translate v . f . translate (-v)

movedTo :: (InSpace v n a, SameSpace a b, HasOrigin a, HasOrigin b) => Point v n -> Iso a b a b Source #

Use a `Point` to make an `ReifiedIso` between an object moved to and from that point:

    under (movedTo p) f == moveTo (-p) . f . moveTo p
    over (movedTo p) f  == moveTo p . f . moveTo (-p)
    movedTo p           == from (movedFrom p)
    movedTo p ## a      == moveTo p a
    a ^. movedTo p      == moveOriginTo p a

movedFrom :: (InSpace v n a, SameSpace a b, HasOrigin a, HasOrigin b) => Point v n -> Iso a b a b Source #

Use a `Transformation` to make an `ReifiedIso` between an object transformed and untransformed. We have

    under (movedFrom p) f == moveTo p . f . moveTo (-p)
    movedFrom p           == from (movedTo p)
    movedFrom p ## a      == moveOriginTo p a
    a ^. movedFrom p      == moveTo p a
    over (movedFrom p) f  == moveTo (-p) . f . moveTo p

# The HasOrigin class

class HasOrigin t where Source #

Class of types which have an intrinsic notion of a "local origin", i.e. things which are not invariant under translation, and which allow the origin to be moved.

One might wonder why not just use `Transformable` instead of having a separate class for `HasOrigin`; indeed, for types which are instances of both we should have the identity

      moveOriginTo (origin .^+ v) === translate (negated v)

The reason is that some things (e.g. vectors, `Trail`s) are transformable but are translationally invariant, i.e. have no origin.

Methods

moveOriginTo :: Point (V t) (N t) -> t -> t Source #

Move the local origin to another point.

Note that this function is in some sense dual to `translate` (for types which are also `Transformable`); moving the origin itself while leaving the object "fixed" is dual to fixing the origin and translating the diagram.

#### Instances

Instances details

HasOrigin a => HasOrigin (Active a) Source # |
Instance details Defined in Diagrams.Animation.Active Methods moveOriginTo :: Point (V (Active a)) (N (Active a)) -> Active a -> Active a Source #
(HasOrigin t, Ord t) => HasOrigin (Set t) |
Instance details Defined in Diagrams.Core.HasOrigin Methods moveOriginTo :: Point (V (Set t)) (N (Set t)) -> Set t -> Set t Source #
HasOrigin (TransInv t) |
Instance details Defined in Diagrams.Core.Transform Methods moveOriginTo :: Point (V (TransInv t)) (N (TransInv t)) -> TransInv t -> TransInv t Source #
(Num (N a), Additive (V a)) => HasOrigin (Located a) Source # | `Located a` is an instance of `HasOrigin` whether `a` is or not. In particular, translating a `Located a` simply translates the associated point (and does not affect the value of type `a`).
Instance details Defined in Diagrams.Located Methods moveOriginTo :: Point (V (Located a)) (N (Located a)) -> Located a -> Located a Source #
(V t ~ v, N t ~ n, Additive v, Num n, HasOrigin t) => HasOrigin (ScaleInv t) Source # |
Instance details Defined in Diagrams.Transform.ScaleInv Methods moveOriginTo :: Point (V (ScaleInv t)) (N (ScaleInv t)) -> ScaleInv t -> ScaleInv t Source #
Floating n => HasOrigin (Text n) Source # |
Instance details Defined in Diagrams.TwoD.Text Methods moveOriginTo :: Point (V (Text n)) (N (Text n)) -> Text n -> Text n Source #
HasOrigin t => HasOrigin [t] |
Instance details Defined in Diagrams.Core.HasOrigin Methods moveOriginTo :: Point (V [t]) (N [t]) -> [t] -> [t] Source #
HasOrigin t => HasOrigin (Map k t) |
Instance details Defined in Diagrams.Core.HasOrigin Methods moveOriginTo :: Point (V (Map k t)) (N (Map k t)) -> Map k t -> Map k t Source #
(Metric v, Fractional n) => HasOrigin (Envelope v n) | The local origin of an envelope is the point with respect to which bounding queries are made, i.e. the point from which the input vectors are taken to originate.
Instance details Defined in Diagrams.Core.Envelope Methods moveOriginTo :: Point (V (Envelope v n)) (N (Envelope v n)) -> Envelope v n -> Envelope v n Source #
HasOrigin t => HasOrigin (Measured n t) |
Instance details Defined in Diagrams.Core.HasOrigin Methods moveOriginTo :: Point (V (Measured n t)) (N (Measured n t)) -> Measured n t -> Measured n t Source #
(Additive v, Num n) => HasOrigin (Trace v n) |
Instance details Defined in Diagrams.Core.Trace Methods moveOriginTo :: Point (V (Trace v n)) (N (Trace v n)) -> Trace v n -> Trace v n Source #
(Additive v, Num n) => HasOrigin (Transformation v n) |
Instance details Defined in Diagrams.Core.Transform Methods moveOriginTo :: Point (V (Transformation v n)) (N (Transformation v n)) -> Transformation v n -> Transformation v n Source #
(Additive v, Num n) => HasOrigin (BoundingBox v n) Source # |
Instance details Defined in Diagrams.BoundingBox Methods moveOriginTo :: Point (V (BoundingBox v n)) (N (BoundingBox v n)) -> BoundingBox v n -> BoundingBox v n Source #
(Additive v, Num n) => HasOrigin (Path v n) Source # |
Instance details Defined in Diagrams.Path Methods moveOriginTo :: Point (V (Path v n)) (N (Path v n)) -> Path v n -> Path v n Source #
(Additive v, Num n) => HasOrigin (FixedSegment v n) Source # |
Instance details Defined in Diagrams.Segment Methods moveOriginTo :: Point (V (FixedSegment v n)) (N (FixedSegment v n)) -> FixedSegment v n -> FixedSegment v n Source #
Fractional n => HasOrigin (DImage n a) Source # |
Instance details Defined in Diagrams.TwoD.Image Methods moveOriginTo :: Point (V (DImage n a)) (N (DImage n a)) -> DImage n a -> DImage n a Source #
(Additive v, Num n) => HasOrigin (Point v n) |
Instance details Defined in Diagrams.Core.HasOrigin Methods moveOriginTo :: Point (V (Point v n)) (N (Point v n)) -> Point v n -> Point v n Source #
(HasOrigin t, HasOrigin s, SameSpace s t) => HasOrigin (s, t) |
Instance details Defined in Diagrams.Core.HasOrigin Methods moveOriginTo :: Point (V (s, t)) (N (s, t)) -> (s, t) -> (s, t) Source #
(Additive v, Num n) => HasOrigin (Query v n m) |
Instance details Defined in Diagrams.Core.Query Methods moveOriginTo :: Point (V (Query v n m)) (N (Query v n m)) -> Query v n m -> Query v n m Source #
(Metric v, OrderedField n, Semigroup m) => HasOrigin (QDiagram b v n m) | Every diagram has an intrinsic "local origin" which is the basis for all combining operations.
Instance details Defined in Diagrams.Core.Types Methods moveOriginTo :: Point (V (QDiagram b v n m)) (N (QDiagram b v n m)) -> QDiagram b v n m -> QDiagram b v n m Source #
(OrderedField n, Metric v) => HasOrigin (SubMap b v n m) |
Instance details Defined in Diagrams.Core.Types Methods moveOriginTo :: Point (V (SubMap b v n m)) (N (SubMap b v n m)) -> SubMap b v n m -> SubMap b v n m Source #
(Metric v, OrderedField n) => HasOrigin (Subdiagram b v n m) |
Instance details Defined in Diagrams.Core.Types Methods moveOriginTo :: Point (V (Subdiagram b v n m)) (N (Subdiagram b v n m)) -> Subdiagram b v n m -> Subdiagram b v n m Source #

moveOriginBy :: (V t ~ v, N t ~ n, HasOrigin t) => v n -> t -> t Source #

Move the local origin by a relative vector.