Graphics.Rendering.Cairo.Matrix

cairo-0.13.3.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 # |
Methods (==) :: Matrix -> Matrix -> Bool # (/=) :: Matrix -> Matrix -> Bool #
Num Matrix # |
Methods (+) :: Matrix -> Matrix -> Matrix # (-) :: Matrix -> Matrix -> Matrix # (*) :: Matrix -> Matrix -> Matrix # negate :: Matrix -> Matrix # abs :: Matrix -> Matrix # signum :: Matrix -> Matrix # fromInteger :: Integer -> Matrix #
Show Matrix # |
Methods showsPrec :: Int -> Matrix -> ShowS # show :: Matrix -> String # showList :: [Matrix] -> ShowS #
Storable Matrix # |
Methods sizeOf :: Matrix -> Int # alignment :: Matrix -> Int # peekElemOff :: Ptr Matrix -> Int -> IO Matrix # pokeElemOff :: Ptr Matrix -> Int -> Matrix -> IO () # peekByteOff :: Ptr b -> Int -> IO Matrix # pokeByteOff :: Ptr b -> Int -> Matrix -> IO () # peek :: Ptr Matrix -> IO Matrix # poke :: Ptr Matrix -> Matrix -> IO () #

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 #