[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-dev] canonical form for affine transformations
From: |
Eric Hughes |
Subject: |
[Gnash-dev] canonical form for affine transformations |
Date: |
Sun, 15 Apr 2007 20:42:39 -0600 |
Sandro's question about matrices last week, and a note I saw about possibly
implementing "skew" (really called shear) in the commit log, led me to find
some relevant reference information.
The transformation that's implemented in matrix.cpp:
http://en.wikipedia.org/wiki/Affine_transformation
Details about what a matrix representation of the above looks like:
http://en.wikipedia.org/wiki/Transformation_matrix
As for a canonical form, I'd recommend
rotate * x-shear * scale
which in matrix form is, in LaTeX form:
\[
\left[\begin{matrix}
\cos \theta & - \sin \theta \cr
\sin \theta & \cos \theta
\end{matrix}\right]
\left[\begin{matrix}
1 & k \cr
0 & 1
\end{matrix}\right]
\left[\begin{matrix}
s_x & 0 \cr
0 & s_y
\end{matrix}\right]
\]
In the above, $\theta$ is the angle of rotation, $k$ is the shear value,
and $s_x$ and $s_y$ are the scale values.
The reason for this choice is that, since these transformations are
naturally applied to type, with its natural baseline along the x-direction,
that x-shear is the natural cognitive choice. Putting it after (to the
left of) the scaling means that the angle of shear will be independent of
the size of the scale factors; otherwise the shear would also be scaled.
Eric
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-dev] canonical form for affine transformations,
Eric Hughes <=