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

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

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

data Point Source

A point in two dimensions.

Constructors

Point 

Fields

p_x :: Double
 
p_y :: Double
 

Instances

data Vector Source

A vector in two dimensions.

Constructors

Vector 

Fields

v_x :: Double
 
v_y :: Double
 

Instances

pointToVec :: Point -> Vector Source

Convert a Point to a Vector.

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

Create a rectangle based upon the coordinates of 4 points.

rectPath :: Rect -> Path Source

Make a path from a rectangle.

pvadd :: Point -> Vector -> Point Source

Add a point and a vector.

pvsub :: Point -> Vector -> Point Source

Subtract a vector from a point.

psub :: Point -> Point -> Vector Source

Subtract two points.

vangle :: Vector -> Double Source

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

vlen :: Vector -> Double Source

Length/magnitude of a vector

vscale :: Double -> Vector -> Vector Source

Scale a vector by a constant.

within :: Point -> Rect -> Bool Source

Test if a point is within a rectangle.

intersectRect :: Limit Rect -> Limit Rect -> Limit Rect Source

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) 

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.

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.

lineTo :: Point -> Path Source

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

moveTo :: Point -> Path Source

Move the paths pointer to the given location.

lineTo' :: Double -> Double -> Path Source

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

moveTo' :: Double -> Double -> Path Source

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

arc Source

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.

close :: Path Source

A closed empty path. Closes a path when appended.

foldPath Source

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 Source

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 Source

Transform a point using the given matrix.

scaleP :: Vector -> Point -> Point Source

Scale a point.

rotateP :: Double -> Point -> Point Source

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

translateP :: Vector -> Point -> Point Source

Translate a point.

data Matrix Source

Copied from Graphics.Rendering.Cairo.Matrix

Constructors

Matrix 

Fields

xx :: !Double
 
yx :: !Double
 
xy :: !Double
 
yy :: !Double
 
x0 :: !Double
 
y0 :: !Double
 

Instances

Num Matrix

Copied from Graphics.Rendering.Cairo.Matrix

Show Matrix 

identity :: Matrix Source

Copied from Graphics.Rendering.Cairo.Matrix

rotate :: Double -> Matrix -> Matrix Source

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

scale :: Vector -> Matrix -> Matrix Source

Copied and adopted from Graphics.Rendering.Cairo.Matrix

translate :: Vector -> Matrix -> Matrix Source

Copied and adopted from Graphics.Rendering.Cairo.Matrix

scalarMultiply :: Double -> Matrix -> Matrix Source

Copied from Graphics.Rendering.Cairo.Matrix

adjoint :: Matrix -> Matrix Source

Copied from Graphics.Rendering.Cairo.Matrix

invert :: Matrix -> Matrix Source

Copied from Graphics.Rendering.Cairo.Matrix