Rasterific-0.7.4.2: A pure haskell drawing engine.

Graphics.Rasterific.Transformations

Description

This module provide some helpers in order to perform basic geometric transformation on the drawable primitives.

You can combine the transformation is mappend or the (<>) operator from Data.Monoid .

Synopsis

# Documentation

data Transformation #

Represent a 3*3 matrix for homogenous coordinates.

| A C E |
| B D F |
| 0 0 1 |

Constructors

 Transformation Fields_transformA :: !Float _transformC :: !Float _transformE :: !FloatX translation_transformB :: !Float _transformD :: !Float _transformF :: !FloatY translation
Instances
 # Instance detailsDefined in Graphics.Rasterific.Transformations Methods # Instance detailsDefined in Graphics.Rasterific.Transformations MethodsshowList :: [Transformation] -> ShowS # # Instance detailsDefined in Graphics.Rasterific.Transformations Methodsstimes :: Integral b => b -> Transformation -> Transformation # # Instance detailsDefined in Graphics.Rasterific.Transformations Methods

Effectively transform a point given a transformation.

Effectively transform a vector given a transformation. The translation part won't be applied.

Perform a translation of the given primitives.

fill . transform (applyTransformation $translate (V2 100 100))$ rectangle (V2 40 40) 40 40

Perform a scaling of the given primitives.

fill . transform (applyTransformation $scale 2 2)$ rectangle (V2 40 40) 40 40

Arguments

 :: Float Rotation angle in radian. -> Transformation

Create a transformation representing a rotation on the plane.

fill . transform (applyTransformation $rotate 0.2)$ rectangle (V2 40 40) 120 120

Arguments

 :: Float Rotation angle in radian -> Point Rotation center -> Transformation

Create a transformation representing a rotation on the plane. The rotation center is given in parameter

fill . transform (applyTransformation $rotateCenter 0.2 (V2 200 200))$ rectangle (V2 40 40) 120 120

Skew transformation along the X axis.

fill . transform (applyTransformation $skewX 0.3)$ rectangle (V2 50 50) 80 80

Skew transformation along the Y axis.

fill . transform (applyTransformation $skewY 0.3)$ rectangle (V2 50 50) 80 80

Given a new X-acis vector, create a rotation matrix to get into this new base, assuming an Y basis orthonormal to the X one.

Inverse a transformation (if possible)