# Difference between revisions of "File talk:Affine transformations.pdf"

%%% affine_transformations.tex %%%
\documentclass[a4paper,11pt]{article}
\usepackage[utf8x]{inputenc}
\usepackage{graphicx}
\usepackage{type1cm}
\usepackage{eso-pic}
\usepackage{color}
\usepackage{pstricks}
\usepackage{amsmath, amssymb, textcomp, mathrsfs}
\usepackage{boxdims}
\usepackage{bbm}
\usepackage{colortbl}
\usepackage{fancyhdr}
\usepackage[a4paper, left=2.5cm, right=2.5cm, top=2.5cm, bottom=5cm]{geometry}
\usepackage{soul}
\usepackage{multirow}
\usepackage{listings}
\usepackage{tensor}
\usepackage{verbatim}
\usepackage{wasysym}
\usepackage{marvosym}

\newtheorem{postulate}{Postulate}
\newtheorem{corollary}{Corollary}
\newtheorem{theorem}{Theorem}

\newenvironment{proof}[1][Proof]{\noindent{}\textbf{#1 } }{\ \rule{0.4em}{0.7em}\\}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% The following will put the MS-Word style table
% on the top of each page.
%
% You need to fill in the information for each new
% document / revision!
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\pagestyle{fancy}

\fancyhf{}

\hline
\multirow{4}{*}{\includegraphics[width=4cm]{pictures/GCI.png}}
&\multicolumn{4}{|l|}{\cellcolor[gray]{.8}{  }}\\
&\multicolumn{4}{|l|}{\cellcolor[gray]{.8}\Large{Some Basic Affine Transformations}}\\
&\multicolumn{4}{|l|}{\cellcolor[gray]{.8}{  }}\\
\cline{2-5}
&Document No.	&N/A		&Author	&Matt S.\\
\cline{2-5}
&Revision	&0.1		&Date	&Dec. 2012\\
\hline
\end{tabular}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% The NDA reminder is then inserted as a
% persistent footnote as well.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\lfoot{}%{\tiny{Inser NDA as persistent footer here if required.}}
\cfoot{}
\rfoot{\thepage}
\renewcommand{\footrulewidth}{0.4pt}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Rather than going to the trouble of creating a
% new .cls file--which should be done--this hack is
% inserted to satisfy the article.cls requirements.
% Without it, the first page is a mess.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}
\thispagestyle{fancy}
\section*{}
\vspace{2cm}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Document control / revision history table.  Do not
% forget to update; check to make sure the file name
% matches the rev. no; there should be a way to
% automate this.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{tabular}{|p{0.18\linewidth}|p{0.18\linewidth}|p{0.18\linewidth}|p{0.39\linewidth}|}
\hline
\rowcolor[gray]{.8}\textbf{Rev.}	&\textbf{Author}	&\textbf{Date}	&\textbf{Summary of Changes}\\
\hline
0.0					&Matt S.		&01/12/2012	&Document created.\\
\hline
0.1					&Matt S.		&08/12/2012	&Typos fixed.\\
\hline
\end{tabular}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Start document here
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\tableofcontents

\newpage

\section{Some Basic Affine Transformations}
A lot more well-written information is available on the Internet,
so I won't go into any real detail here.  Instead, the interested
{this primer}, among many others.\\

\subsection{Affine Translation of Points}
Assume we have a collection of discreet points $\left\lbrace x_i \right\rbrace\subset\mathbbm{R}^3$ that we want to rigidly translate in
such a way that a specific point $x_0$ is translated to the origin, thus
preserving the relative placement of all points.\\

To do this, create a vector
%
\begin{equation*}
b = \left[\begin{array}{c}
x^1\\
x^2\\
x^3\end{array}\right]
\end{equation*}
%
and then create the augmented matrix
%
\begin{equation*}
A_T = \left[\begin{array}{cr}
I_3 &-b\\
0   &1\end{array}\right]
\end{equation*}
%
so that for each $x_i$, we compute
%
\begin{equation*}
\left[\begin{array}{c}
y_i\\
1\end{array}\right] =
\left[\begin{array}{cr}
I_3 &-b\\
0   &1\end{array}\right]
\left[\begin{array}{cr}
x_i\\
1\end{array}\right]
\end{equation*}
%
where the $y_i$ represent the translated $x_i$.

The cheat that we have performed here is that by first translating all
points of interest to the origin, we may now rotate about an axis to make
all our points coincident to a Cartesian plane; let's say the $x^1 - x^2$
plane.\\

First, we take three points $\left\lbrace y_0, y_1, y_2 \right\rbrace\subseteq\left\lbrace y_i \right\rbrace$ and determine
the normal via
%
\begin{equation*}
n = y_1\times y_2
\end{equation*}
%
since $y_0 = 0$ now, thus allowing us treat the coordinates $y_1$ and $y_2$
as vector elements in the computation of $n$.  This allows us to determine
the angle $\varphi$ between $n$ and $y^3$ via
%
\begin{equation*}
\cos\left( \varphi \right) = \frac{n\cdot y^3}{\left\|n\right\|}
\end{equation*}
%
where we treat $y^3$ as a unit vector $\left(0,0,1\right)$.  Then, compute
a unit normal vector to the plane defined by $\text{span}\left(n,y^3\right)$
via
%
\begin{align}
u =& n\times y^3\notag\\
\Rightarrow u_{\mu} =& \frac{1}{\left\| u \right\|} u \notag
\end{align}
%
so that we may align $n$ and $y^3$ via the \href{http://en.wikipedia.org/wiki/Rotation_matrix}{rotation}
%
\begin{equation*}
R = I_3 \cos\varphi +
\sin\varphi\left[u_{\mu}\right]_{\times} +
\left(1-\cos\varphi\right)u_{\mu}\otimes u_{\mu}
\end{equation*}
%
where
%
\begin{align}
\left[u_{\mu}\right]_{\times} =&
\left[\begin{array}{rrr}
0		&-u_{\mu}^3	&u_{\mu}^2\\
u_{\mu}^3	&0		&-u_{\mu}^1\\
-u_{\mu}^2	&u_{\mu}^1	&0\end{array}\right]\notag\\
u_{\mu}\otimes u_{\mu} =&
\left[\begin{array}{lll}
\left( u_{\mu}^1 \right)^2	&u_{\mu}^1 u_{\mu}^2		&u_{\mu}^1 u_{\mu}^3\\
u_{\mu}^1 u_{\mu}^2		&\left( u_{\mu}^2 \right)^2	&u_{\mu}^2 u_{\mu}^3\\
u_{\mu}^1 u_{\mu}^3		&u_{\mu}^2 u_{\mu}^3		&\left( u_{\mu}^3 \right)^2
\end{array}\right]\notag
\end{align}
%
Finally, this allows us to then define an augmented (rotation) matrix
%
\begin{equation*}
A_R = \left[\begin{array}{cl}
R	&0\\
0	&1\end{array}\right]
\end{equation*}
%
allowing us to rotate our collection of points $\left\lbrace y_i \right\rbrace$ into the $y^1-y^2$ plane via
%
\begin{equation*}
\left[\begin{array}{c}
z_i\\
1\end{array}\right] =
\left[\begin{array}{cr}
R 	&0\\
0   &1\end{array}\right]
\left[\begin{array}{cr}
y_i\\
1\end{array}\right]
\end{equation*}
%
and we may now very easily compute the area of the polygon defined by the points $z_i$ via Green's Theorem.

\end{document}