Imager::Matrix2d(3pm)
NAME
Imager::Matrix2d - simple wrapper for matrix construction
SYNOPSIS
use Imager::Matrix2d; $m1 = Imager::Matrix2d->identity; $m2 = Imager::Matrix2d->rotate(radians=>$angle, x=>$cx, y=>$cy); $m3 = Imager::Matrix2d->translate(x=>$dx, y=>$dy); $m4 = Imager::Matrix2d->shear(x=>$sx, y=>$sy); $m5 = Imager::Matrix2d->reflect(axis=>$axis); $m6 = Imager::Matrix2d->scale(x=>$xratio, y=>$yratio); $m6 = $m1 * $m2; $m7 = $m1 + $m2; use Imager::Matrix2d qw(:handy); # various m2d_* functions imported # where m2d_(.*) calls Imager::Matrix2d->$1()
DESCRIPTION
- This class provides a simple wrapper around a reference to an array of
9 co-efficients, treated as a matrix:
- [ 0, 1, 2,
3, 4, 5,
6, 7, 8 ] - Most of the methods in this class are constructors. The others are
overloaded operators. - Note that since Imager represents images with y increasing from top to bottom, rotation angles are clockwise, rather than counter-clockwise.
- identity()
Returns the identity matrix.
- rotate(radians=>$angle)
rotate(degrees=>$angle)Creates a matrix that rotates around the origin, or around the
point (x,y) if the 'x' and 'y' parameters are provided. - translate(x=>$dx, y=>$dy)
translate(x=>$dx)
translate(y=>$dy)Translates by the specify amounts. - shear(x=>$sx, y=>$sy)
shear(x=>$sx)
shear(y=>$sy)Shear by the given amounts. - reflect(axis=>$axis)
Reflect around the given axis, either 'x' or 'y'.
- reflect(radians=>$angle)
reflect(degrees=>$angle)Reflect around a line drawn at the given angle from the origin. - scale(x=>$xratio, y=>$yratio)
Scales at the given ratios.You can also specify a center for the scaling with the "cx" and
"cy" parameters. - _mult()
Implements the overloaded '*' operator. Internal use.Currently both the left and right-hand sides of the operator must
be an Imager::Matrix2d. - _add()
Implements the overloaded binary '+' operator.Currently both the left and right sides of the operator must be
Imager::Matrix2d objects. - _string()
Implements the overloaded stringification operator.This returns a string containing 3 lines of text with no
terminating newline.I tried to make it fairly nicely formatted. You might disagree :) - The following functions are shortcuts to the various constructors.
- These are not methods.
- You can import these methods with:
use Imager::Matrix2d ':handy'; - m2d_identity
m2d_rotate()
m2d_translate()
m2d_shear()
m2d_reflect()
m2d_scale()
AUTHOR
Tony Cook <tony@develop-help.com>
BUGS
Needs a way to invert a matrix.
SEE ALSO
- http://imager.perl.org/