Chart-1.9: A library for generating 2D Charts and Plots

Graphics.Rendering.Chart.Geometry

Contents

Description

Synopsis

# Points and Vectors

data Rect Source #

A rectangle is defined by two points.

Constructors

 Rect Point Point

Instances

 Source # MethodsshowsPrec :: Int -> Rect -> ShowS #show :: Rect -> String #showList :: [Rect] -> ShowS #

data Point Source #

A point in two dimensions.

Constructors

 Point Fieldsp_x :: Double p_y :: Double

Instances

 Source # MethodsshowsPrec :: Int -> Point -> ShowS #show :: Point -> String #showList :: [Point] -> ShowS #

data Vector Source #

A vector in two dimensions.

Constructors

 Vector Fieldsv_x :: Double v_y :: Double

Instances

 Source # MethodsshowsPrec :: Int -> Vector -> ShowS #showList :: [Vector] -> ShowS #

Convert a Point to a Vector.

mkrect :: Point -> Point -> Point -> Point -> Rect Source #

Create a rectangle based upon the coordinates of 4 points.

Make a path from a rectangle.

Add a point and a vector.

Subtract a vector from a point.

Subtract two points.

Angle of a vector (counterclockwise from positive x-axis)

Length/magnitude of a vector

Scale a vector by a constant.

Test if a point is within a rectangle.

Intersects the rectangles. If they intersect the intersection rectangle is returned. LMin is the empty rectangle / intersection and LMax is the infinite plane.

data RectEdge Source #

Edge of a rectangle.

Constructors

 E_Top E_Bottom E_Left E_Right

data Limit a Source #

Constructors

 LMin LValue a LMax

Instances

 Show a => Show (Limit a) Source # MethodsshowsPrec :: Int -> Limit a -> ShowS #show :: Limit a -> String #showList :: [Limit a] -> ShowS #

type PointMapFn x y = (Limit x, Limit y) -> Point Source #

A function mapping between points.

# Paths

data Path Source #

The path type used by Charts.

A path can consist of several subpaths. Each is started by a MoveTo operation. All subpaths are open, except the last one, which may be closed using the Close operation. When filling a path all subpaths are closed implicitly.

Closing a subpath means that a line is drawn from the end point to the start point of the subpath.

If a Arc (or ArcNeg) is drawn a implicit line from the last end point of the subpath is drawn to the beginning of the arc. Another implicit line is drawn from the end of an arc to the beginning of the next path segment.

The beginning of a subpath is either (0,0) or set by a MoveTo instruction. If the first subpath is started with an arc the beginning of that subpath is the beginning of the arc.

Constructors

 MoveTo Point Path LineTo Point Path Arc Point Double Double Double Path ArcNeg Point Double Double Double Path End Close

Instances

 Source # Paths are monoids. After a path is closed you can not append anything to it anymore. The empty path is open. Use close to close a path. Methods(<>) :: Path -> Path -> Path #stimes :: Integral b => b -> Path -> Path # Source # Methodsmappend :: Path -> Path -> Path #mconcat :: [Path] -> Path #

Move the paths pointer to the given location and draw a straight line while doing so.

Move the paths pointer to the given location.

Short-cut for lineTo, if you don't want to create a Point.

Short-cut for moveTo, if you don't want to create a Point.

Arguments

 :: Point Center point of the circle arc. -> Double Radius of the circle. -> Double Angle to start drawing at, in radians. -> Double Angle to stop drawing at, in radians. -> Path

Draw the arc of a circle. A straight line connects the end of the previous path with the beginning of the arc. The zero angle points in direction of the positive x-axis. Angles increase in clock-wise direction. If the stop angle is smaller then the start angle it is increased by multiples of 2 * pi until is is greater or equal.

arc' :: Double -> Double -> Double -> Double -> Double -> Path Source #

Short-cut for arc, if you don't want to create a Point.

arcNeg :: Point -> Double -> Double -> Double -> Path Source #

Like arc, but draws from the stop angle to the start angle instead of between them.

arcNeg' :: Double -> Double -> Double -> Double -> Double -> Path Source #

Short-cut for arcNeg, if you don't want to create a Point.

A closed empty path. Closes a path when appended.

Arguments

 :: Monoid m => (Point -> m) MoveTo -> (Point -> m) LineTo -> (Point -> Double -> Double -> Double -> m) Arc -> (Point -> Double -> Double -> Double -> m) ArcNeg -> m Close -> Path Path to fold -> m

Fold the given path to a monoid structure.

Enriches the path with explicit instructions to draw lines, that otherwise would be implicit. See Path for details about what lines in paths are implicit.

# Matrices

Transform a point using the given matrix.

Scale a point.

Rotate a point around the origin. The angle is given in radians.

Translate a point.

data Matrix Source #

Copied from Graphics.Rendering.Cairo.Matrix

Constructors

 Matrix Fieldsxx :: !Double yx :: !Double xy :: !Double yy :: !Double x0 :: !Double y0 :: !Double

Instances

 Source # Copied from Graphics.Rendering.Cairo.Matrix Methods(+) :: Matrix -> Matrix -> Matrix #(-) :: Matrix -> Matrix -> Matrix #(*) :: Matrix -> Matrix -> Matrix #abs :: Matrix -> Matrix # Source # MethodsshowsPrec :: Int -> Matrix -> ShowS #showList :: [Matrix] -> ShowS #

Copied from Graphics.Rendering.Cairo.Matrix

Copied from Graphics.Rendering.Cairo.Matrix Rotations angle is given in radians.