Graphics.Rendering.Cairo.Matrix

cairo-0.13.1.1: Binding to the Cairo library.

Copyright | (c) Paolo Martini 2005
License | BSD-style (see cairo/COPYRIGHT)
Maintainer | p.martini@neuralnoise.com
Stability | experimental
Portability | portable
Safe Haskell | Safe
Language | Haskell98

Graphics.Rendering.Cairo.Matrix

Description

Matrix math

Synopsis

- data Matrix = Matrix !Double !Double !Double !Double !Double !Double
- type MatrixPtr = Ptr Matrix
- identity :: Matrix
- translate :: Double -> Double -> Matrix -> Matrix
- scale :: Double -> Double -> Matrix -> Matrix
- rotate :: Double -> Matrix -> Matrix
- transformDistance :: Matrix -> (Double, Double) -> (Double, Double)
- transformPoint :: Matrix -> (Double, Double) -> (Double, Double)
- scalarMultiply :: Double -> Matrix -> Matrix
- adjoint :: Matrix -> Matrix
- invert :: Matrix -> Matrix

# Documentation

data Matrix

Representation of a 2-D affine transformation.

The Matrix type represents a 2x2 transformation matrix along with a translation vector. `Matrix a1 a2 b1 b2 c1 c2` describes the transformation of a point with coordinates x,y that is defined by

      / x' \  =  / a1 b1 \  / x \  + / c1 \
      \ y' /     \ a2 b2 /  \ y /    \ c2 /

or

      x' =  a1 * x + b1 * y + c1
      y' =  a2 * x + b2 * y + c2

Constructors

Matrix !Double !Double !Double !Double !Double !Double |

Instances

Eq Matrix |
Num Matrix |
Show Matrix |
Storable Matrix |

type MatrixPtr = Ptr Matrix

identity :: Matrix

translate :: Double -> Double -> Matrix -> Matrix

scale :: Double -> Double -> Matrix -> Matrix

rotate :: Double -> Matrix -> Matrix

transformDistance :: Matrix -> (Double, Double) -> (Double, Double)

transformPoint :: Matrix -> (Double, Double) -> (Double, Double)

scalarMultiply :: Double -> Matrix -> Matrix

adjoint :: Matrix -> Matrix

invert :: Matrix -> Matrix