Portability | GHC |
---|---|

Stability | highly unstable |

Maintainer | stephen.tetley@gmail.com |

Bounded versions of Graphic and LocGraphic.

Bounded meaning they are actually Images that return the bounding box of the Graphic.

- type BoundedGraphic u = Image u (BoundingBox u)
- type DBoundedGraphic = BoundedGraphic Double
- type BoundedLocGraphic u = LocImage u (BoundingBox u)
- type DBoundedLocGraphic = BoundedLocGraphic Double
- type BoundedLocThetaGraphic u = LocThetaImage u (BoundingBox u)
- type DBoundedLocThetaGraphic = BoundedLocThetaGraphic Double
- emptyBoundedLocGraphic :: Num u => BoundedLocGraphic u
- centerOrthoBBox :: (Real u, Floating u) => Radian -> BoundingBox u -> BoundingBox u
- illustrateBoundedGraphic :: Fractional u => BoundedGraphic u -> BoundedGraphic u
- illustrateBoundedLocGraphic :: Fractional u => BoundedLocGraphic u -> BoundedLocGraphic u
- illustrateBoundedLocThetaGraphic :: Fractional u => BoundedLocThetaGraphic u -> BoundedLocThetaGraphic u

# Bounded graphic / loc graphic

type BoundedGraphic u = Image u (BoundingBox u)Source

Graphic with a bounding box.

type BoundedLocGraphic u = LocImage u (BoundingBox u)Source

LocGraphic with a bounding box.

type BoundedLocThetaGraphic u = LocThetaImage u (BoundingBox u)Source

LocThetaGraphic with a bounding box.

Note the size of bounding box for the "same" shape will vary according to the rotation. A bounding box is always orthonormal (?) to the x- and y-axes.

emptyBoundedLocGraphic :: Num u => BoundedLocGraphic uSource

centerOrthoBBox :: (Real u, Floating u) => Radian -> BoundingBox u -> BoundingBox uSource

`openStroke`

: ` theta * bbox -> BBox `

Rotate a bounding box by `theta`

about its center. Take the
new bounding box.

Remember that bounding boxes are always orthonormal rectangles, so the dimensions as well as the positions may change under rotation.

illustrateBoundedGraphic :: Fractional u => BoundedGraphic u -> BoundedGraphic uSource