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

Maintainer diagrams-discuss@googlegroups.com None

Diagrams.ThreeD.Align

Description

Alignment combinators specialized for three dimensions. See Diagrams.Align for more general alignment combinators.

The basic idea is that alignment is achieved by moving diagrams' local origins relative to their envelopes or traces (or some other sort of boundary). For example, to align several diagrams along their tops, we first move their local origins to the upper edge of their boundary (using e.g. `map alignZMax`), and then put them together with their local origins along a line (using e.g. `cat` from Diagrams.Combinators).

Synopsis

# Absolute alignment

## Align by envelope

alignXMin :: (Alignable a, HasOrigin a, V a ~ R3) => a -> aSource

Translate the diagram along unitX so that all points have positive x-values.

alignXMax :: (Alignable a, HasOrigin a, V a ~ R3) => a -> aSource

Translate the diagram along unitX so that all points have negative x-values.

alignYMin :: (Alignable a, HasOrigin a, V a ~ R3) => a -> aSource

Translate the diagram along unitY so that all points have positive y-values.

alignYMax :: (Alignable a, HasOrigin a, V a ~ R3) => a -> aSource

Translate the diagram along unitY so that all points have negative y-values.

alignZMin :: (Alignable a, HasOrigin a, V a ~ R3) => a -> aSource

Translate the diagram along unitZ so that all points have positive z-values.

alignZMax :: (Alignable a, HasOrigin a, V a ~ R3) => a -> aSource

Translate the diagram along unitZ so that all points have negative z-values.

## Align by trace

snugXMin :: (Fractional (Scalar (V a)), Alignable a, Traced a, HasOrigin a, V a ~ R3) => a -> aSource

snugXMax :: (Fractional (Scalar (V a)), Alignable a, Traced a, HasOrigin a, V a ~ R3) => a -> aSource

snugYMin :: (Fractional (Scalar (V a)), Alignable a, Traced a, HasOrigin a, V a ~ R3) => a -> aSource

snugYMax :: (Fractional (Scalar (V a)), Alignable a, Traced a, HasOrigin a, V a ~ R3) => a -> aSource

Move the origin along unitY until it touches the edge of the diagram.

snugZMin :: (Fractional (Scalar (V a)), Alignable a, Traced a, HasOrigin a, V a ~ R3) => a -> aSource

Move the origin along unit_Z until it touches the edge of the diagram.

snugZMax :: (Fractional (Scalar (V a)), Alignable a, Traced a, HasOrigin a, V a ~ R3) => a -> aSource

Move the origin along unitZ until it touches the edge of the diagram.

# Relative alignment

alignX :: (Alignable a, HasOrigin a, V a ~ R3) => Double -> a -> aSource

`alignX` and `snugX` move the local origin along unitX as follows:

• `alignX (-1)` moves the local origin to the low-x of the boundary;
• `align 1` moves the local origin to the high-x edge;
• any other argument interpolates linearly between these. For example, `alignX 0` centers, `alignX 2` moves the origin one "radius" to the right of the right edge, and so on.
• `snugX` works the same way.

snugX :: (Fractional (Scalar (V a)), Alignable a, Traced a, HasOrigin a, V a ~ R3) => Double -> a -> aSource

See the documentation for `alignX`.

alignY :: (Alignable a, HasOrigin a, V a ~ R3) => Double -> a -> aSource

Like `alignX`, but moving the local origin vertically, with an argument of `1` corresponding to the top edge and `(-1)` corresponding to the bottom edge.

snugY :: (Fractional (Scalar (V a)), Alignable a, Traced a, HasOrigin a, V a ~ R3) => Double -> a -> aSource

alignZ :: (Alignable a, HasOrigin a, V a ~ R3) => Double -> a -> aSource

Like `alignX`, but moving the local origin in the Z direction, with an argument of `1` corresponding to the top edge and `(-1)` corresponding to the bottom edge.

snugZ :: (Fractional (Scalar (V a)), Alignable a, Traced a, HasOrigin a, V a ~ R3) => Double -> a -> aSource

# Centering

centerX :: (Alignable a, HasOrigin a, V a ~ R3) => a -> aSource

Center the local origin along the X-axis.

centerY :: (Alignable a, HasOrigin a, V a ~ R3) => a -> aSource

Center the local origin along the Y-axis.

centerZ :: (Alignable a, HasOrigin a, V a ~ R3) => a -> aSource

Center the local origin along the Z-axis.

centerXY :: (Alignable a, HasOrigin a, V a ~ R3) => a -> aSource

Center along both the X- and Y-axes.

centerXZ :: (Alignable a, HasOrigin a, V a ~ R3) => a -> aSource

Center along both the X- and Z-axes.

centerYZ :: (Alignable a, HasOrigin a, V a ~ R3) => a -> aSource

Center along both the Y- and Z-axes.

centerXYZ :: (Fractional (Scalar (V a)), Alignable a, Traced a, HasOrigin a, V a ~ R3) => a -> aSource

Center an object in three dimensions.

snugCenterX :: (Fractional (Scalar (V a)), Alignable a, Traced a, HasOrigin a, V a ~ R3) => a -> aSource

snugCenterY :: (Fractional (Scalar (V a)), Alignable a, Traced a, HasOrigin a, V a ~ R3) => a -> aSource

snugCenterZ :: (Fractional (Scalar (V a)), Alignable a, Traced a, HasOrigin a, V a ~ R3) => a -> aSource

snugCenterXY :: (Fractional (Scalar (V a)), Alignable a, Traced a, HasOrigin a, V a ~ R3) => a -> aSource

snugCenterXZ :: (Fractional (Scalar (V a)), Alignable a, Traced a, HasOrigin a, V a ~ R3) => a -> aSource

snugCenterYZ :: (Fractional (Scalar (V a)), Alignable a, Traced a, HasOrigin a, V a ~ R3) => a -> aSource

snugCenterXYZ :: (Fractional (Scalar (V a)), Alignable a, Traced a, HasOrigin a, V a ~ R3) => a -> aSource