elm/libraries/Transform2D.elm
2013-09-12 12:34:44 -07:00

57 lines
No EOL
1.6 KiB
Elm

module Transform2D where
{-| A library for performing [2D matrix transformations](http://en.wikipedia.org/wiki/Transformation_matrix#Affine_transformations).
It is used primarily with the `groupTransform` function from `Graphics.Collage` and
allows you to do things like rotation, scaling, translation, shearing, and reflection.
# Basic Transforms
@docs identity, matrix, rotation
# Multiplication
@docs multiply
-}
import Native.Transform2D
data Transform2D = Transform2D
{-| Create an identity transform. Transforming by the identity does
not change anything, but it can come in handy as a default or
base case.
/ 1 0 \\
\\ 0 1 /
-}
identity : Transform2D
identity = Native.Transform2D.identity
{-| Creates a transformation matrix. This lets you create transforms
such as scales, shears, reflections, and translations.
matrix a b c d dx dy
/ a b \\
\\ c d /
And `dx` and `dy` are the translation values.
-}
matrix : Float -> Float -> Float -> Float -> Float -> Float -> Transform2D
matrix = Native.Transform2D.matrix
{-| Creates a [rotation matrix](http://en.wikipedia.org/wiki/Rotation_matrix).
Given an angle t, it creates a counterclockwise rotation matrix:
/ cos t -sin t \\
\\ sin t cos t /
-}
rotation : Float -> Transform2D
rotation = Native.Transform2D.rotation
{-| Multiplies two transforms together:
multiply a b
/ a11 a12 \\ . / b11 b12 \\
\\ a21 a22 / \\ b21 b22 /
-}
multiply : Transform2D -> Transform2D -> Transform2D
multiply = Native.Transform2D.multiply