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

Copyright(c) Tim Docker 2006 2014
LicenseBSD-style (see chart/COPYRIGHT)
Safe HaskellSafe
LanguageHaskell98

Graphics.Rendering.Chart.Geometry

Contents

Description

 

Synopsis

Points and Vectors

data Rect #

A rectangle is defined by two points.

Constructors

Rect Point Point 

Instances

Show Rect # 

Methods

showsPrec :: Int -> Rect -> ShowS #

show :: Rect -> String #

showList :: [Rect] -> ShowS #

data Point #

A point in two dimensions.

Constructors

Point 

Fields

Instances

data Vector #

A vector in two dimensions.

Constructors

Vector 

Fields

Instances

type Range = (Double, Double) #

pointToVec :: Point -> Vector #

Convert a Point to a Vector.

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

Create a rectangle based upon the coordinates of 4 points.

rectPath :: Rect -> Path #

Make a path from a rectangle.

pvadd :: Point -> Vector -> Point #

Add a point and a vector.

pvsub :: Point -> Vector -> Point #

Subtract a vector from a point.

psub :: Point -> Point -> Vector #

Subtract two points.

vangle :: Vector -> Double #

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

vlen :: Vector -> Double #

Length/magnitude of a vector

vscale :: Double -> Vector -> Vector #

Scale a vector by a constant.

within :: Point -> Rect -> Bool #

Test if a point is within a rectangle.

intersectRect :: Limit Rect -> Limit Rect -> Limit Rect #

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 #

Edge of a rectangle.

Constructors

E_Top 
E_Bottom 
E_Left 
E_Right 

data Limit a #

Constructors

LMin 
LValue a 
LMax 

Instances

Show a => Show (Limit a) # 

Methods

showsPrec :: Int -> Limit a -> ShowS #

show :: Limit a -> String #

showList :: [Limit a] -> ShowS #

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

A function mapping between points.

Paths

data Path #

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.

Instances

Monoid Path #

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

mempty :: Path #

mappend :: Path -> Path -> Path #

mconcat :: [Path] -> Path #

lineTo :: Point -> Path #

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

moveTo :: Point -> Path #

Move the paths pointer to the given location.

lineTo' :: Double -> Double -> Path #

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

moveTo' :: Double -> Double -> Path #

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

arc #

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 #

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

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

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

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

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

close :: Path #

A closed empty path. Closes a path when appended.

foldPath #

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.

makeLinesExplicit :: Path -> Path #

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

transformP :: Matrix -> Point -> Point #

Transform a point using the given matrix.

scaleP :: Vector -> Point -> Point #

Scale a point.

rotateP :: Double -> Point -> Point #

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

translateP :: Vector -> Point -> Point #

Translate a point.

data Matrix #

Copied from Graphics.Rendering.Cairo.Matrix

Constructors

Matrix 

Fields

Instances

Num Matrix #

Copied from Graphics.Rendering.Cairo.Matrix

Show Matrix # 

identity :: Matrix #

Copied from Graphics.Rendering.Cairo.Matrix

rotate :: Double -> Matrix -> Matrix #

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

scale :: Vector -> Matrix -> Matrix #

Copied and adopted from Graphics.Rendering.Cairo.Matrix

translate :: Vector -> Matrix -> Matrix #

Copied and adopted from Graphics.Rendering.Cairo.Matrix

scalarMultiply :: Double -> Matrix -> Matrix #

Copied from Graphics.Rendering.Cairo.Matrix

adjoint :: Matrix -> Matrix #

Copied from Graphics.Rendering.Cairo.Matrix

invert :: Matrix -> Matrix #

Copied from Graphics.Rendering.Cairo.Matrix