\hypertarget{class_ogre_1_1_transform_base}{}\doxysection{Ogre\+::Transform\+Base$<$ rows, T $>$ Class Template Reference}
\label{class_ogre_1_1_transform_base}\index{Ogre::TransformBase$<$ rows, T $>$@{Ogre::TransformBase$<$ rows, T $>$}}


Class encapsulating a standard 4x4 homogeneous matrix.  




{\ttfamily \#include $<$Ogre\+Matrix4.\+h$>$}

\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{class_ogre_1_1_transform_base_acf3bcb9d0a7bffe8a2de6bb629db7c22}{Transform\+Base}} ()
\begin{DoxyCompactList}\small\item\em Do {\bfseries{N\+OT}} initialize for efficiency. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename U $>$ }\\\mbox{\hyperlink{class_ogre_1_1_transform_base_a7a196d18c3ea563e3c7d6f98867e3148}{Transform\+Base}} (const \mbox{\hyperlink{class_ogre_1_1_transform_base}{Transform\+Base}}$<$ rows, U $>$ \&o)
\item 
{\footnotesize template$<$typename U $>$ }\\\mbox{\hyperlink{class_ogre_1_1_transform_base_a8ad24267976ae7b6f588bf3164aaf46a}{Transform\+Base}} (const U $\ast$ptr)
\item 
\mbox{\hyperlink{class_ogre_1_1_vector}{Vector}}$<$ 3, T $>$ \mbox{\hyperlink{class_ogre_1_1_transform_base_a92260a3e504b84292acac6d600c9ef36}{get\+Trans}} () const
\begin{DoxyCompactList}\small\item\em Extracts the translation transformation part of the matrix. \end{DoxyCompactList}\item 
T $\ast$ \mbox{\hyperlink{class_ogre_1_1_transform_base_a8cb72d4aa4fcb719ea6110758bb6e89e}{operator\mbox{[}$\,$\mbox{]}}} (size\+\_\+t i\+Row)
\item 
const T $\ast$ \mbox{\hyperlink{class_ogre_1_1_transform_base_afbc5442e28735144fe9e1f41daa89c3a}{operator\mbox{[}$\,$\mbox{]}}} (size\+\_\+t i\+Row) const
\item 
void \mbox{\hyperlink{class_ogre_1_1_transform_base_ac029df849f85850a59921e5f361927c4}{set\+Scale}} (const \mbox{\hyperlink{class_ogre_1_1_vector}{Vector}}$<$ 3, T $>$ \&v)
\begin{DoxyCompactList}\small\item\em Sets the scale part of the matrix. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_ogre_1_1_transform_base_acd424a976abe0bd586dd6b46876dc235}{set\+Trans}} (const \mbox{\hyperlink{class_ogre_1_1_vector}{Vector}}$<$ 3, T $>$ \&v)
\begin{DoxyCompactList}\small\item\em Sets the translation transformation part of the matrix. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Friends}
\begin{DoxyCompactItemize}
\item 
std\+::ostream \& \mbox{\hyperlink{class_ogre_1_1_transform_base_a6a2ebd118528e9537b3c657df52acf03}{operator$<$$<$}} (std\+::ostream \&o, const \mbox{\hyperlink{class_ogre_1_1_transform_base}{Transform\+Base}} \&mat)
\begin{DoxyCompactList}\small\item\em Function for writing to a stream. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
\subsubsection*{template$<$int rows, typename T$>$\newline
class Ogre\+::\+Transform\+Base$<$ rows, T $>$}

Class encapsulating a standard 4x4 homogeneous matrix. 

\begin{DoxyRemark}{Remarks}
O\+G\+RE uses column vectors when applying matrix multiplications, This means a vector is represented as a single column, 4-\/row matrix. This has the effect that the transformations implemented by the matrices happens right-\/to-\/left e.\+g. if vector V is to be transformed by M1 then M2 then M3, the calculation would be M3 $\ast$ M2 $\ast$ M1 $\ast$ V. The order that matrices are concatenated is vital since matrix multiplication is not commutative, i.\+e. you can get a different result if you concatenate in the wrong order. 
\end{DoxyRemark}
\begin{DoxyParagraph}{}
The use of column vectors and right-\/to-\/left ordering is the standard in most mathematical texts, and is the same as used in Open\+GL. It is, however, the opposite of Direct3D, which has inexplicably chosen to differ from the accepted standard and uses row vectors and left-\/to-\/right matrix multiplication. 
\end{DoxyParagraph}
\begin{DoxyParagraph}{}
O\+G\+RE deals with the differences between D3D and Open\+GL etc. internally when operating through different render systems. O\+G\+RE users only need to conform to standard maths conventions, i.\+e. right-\/to-\/left matrix multiplication, (O\+G\+RE transposes matrices it passes to D3D to compensate). 
\end{DoxyParagraph}
\begin{DoxyParagraph}{}
The generic form M $\ast$ V which shows the layout of the matrix entries is shown below\+: 
\begin{DoxyPre}
        [ m[0][0]  m[0][1]  m[0][2]  m[0][3] ]   \{x\}
        | m[1][0]  m[1][1]  m[1][2]  m[1][3] | * \{y\}
        | m[2][0]  m[2][1]  m[2][2]  m[2][3] |   \{z\}
        [ m[3][0]  m[3][1]  m[3][2]  m[3][3] ]   \{1\}
    \end{DoxyPre}
 
\end{DoxyParagraph}


\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{class_ogre_1_1_transform_base_acf3bcb9d0a7bffe8a2de6bb629db7c22}\label{class_ogre_1_1_transform_base_acf3bcb9d0a7bffe8a2de6bb629db7c22}} 
\index{Ogre::TransformBase$<$ rows, T $>$@{Ogre::TransformBase$<$ rows, T $>$}!TransformBase@{TransformBase}}
\index{TransformBase@{TransformBase}!Ogre::TransformBase$<$ rows, T $>$@{Ogre::TransformBase$<$ rows, T $>$}}
\doxysubsubsection{\texorpdfstring{TransformBase()}{TransformBase()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
{\footnotesize\ttfamily template$<$int rows, typename T$>$ \\
\mbox{\hyperlink{class_ogre_1_1_transform_base}{Ogre\+::\+Transform\+Base}}$<$ rows, T $>$\+::\mbox{\hyperlink{class_ogre_1_1_transform_base}{Transform\+Base}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Do {\bfseries{N\+OT}} initialize for efficiency. 

\mbox{\Hypertarget{class_ogre_1_1_transform_base_a8ad24267976ae7b6f588bf3164aaf46a}\label{class_ogre_1_1_transform_base_a8ad24267976ae7b6f588bf3164aaf46a}} 
\index{Ogre::TransformBase$<$ rows, T $>$@{Ogre::TransformBase$<$ rows, T $>$}!TransformBase@{TransformBase}}
\index{TransformBase@{TransformBase}!Ogre::TransformBase$<$ rows, T $>$@{Ogre::TransformBase$<$ rows, T $>$}}
\doxysubsubsection{\texorpdfstring{TransformBase()}{TransformBase()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
{\footnotesize\ttfamily template$<$int rows, typename T$>$ \\
template$<$typename U $>$ \\
\mbox{\hyperlink{class_ogre_1_1_transform_base}{Ogre\+::\+Transform\+Base}}$<$ rows, T $>$\+::\mbox{\hyperlink{class_ogre_1_1_transform_base}{Transform\+Base}} (\begin{DoxyParamCaption}\item[{const U $\ast$}]{ptr }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}}

\mbox{\Hypertarget{class_ogre_1_1_transform_base_a7a196d18c3ea563e3c7d6f98867e3148}\label{class_ogre_1_1_transform_base_a7a196d18c3ea563e3c7d6f98867e3148}} 
\index{Ogre::TransformBase$<$ rows, T $>$@{Ogre::TransformBase$<$ rows, T $>$}!TransformBase@{TransformBase}}
\index{TransformBase@{TransformBase}!Ogre::TransformBase$<$ rows, T $>$@{Ogre::TransformBase$<$ rows, T $>$}}
\doxysubsubsection{\texorpdfstring{TransformBase()}{TransformBase()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
{\footnotesize\ttfamily template$<$int rows, typename T$>$ \\
template$<$typename U $>$ \\
\mbox{\hyperlink{class_ogre_1_1_transform_base}{Ogre\+::\+Transform\+Base}}$<$ rows, T $>$\+::\mbox{\hyperlink{class_ogre_1_1_transform_base}{Transform\+Base}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_ogre_1_1_transform_base}{Transform\+Base}}$<$ rows, U $>$ \&}]{o }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}}



\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{class_ogre_1_1_transform_base_a8cb72d4aa4fcb719ea6110758bb6e89e}\label{class_ogre_1_1_transform_base_a8cb72d4aa4fcb719ea6110758bb6e89e}} 
\index{Ogre::TransformBase$<$ rows, T $>$@{Ogre::TransformBase$<$ rows, T $>$}!operator\mbox{[}\mbox{]}@{operator[]}}
\index{operator\mbox{[}\mbox{]}@{operator[]}!Ogre::TransformBase$<$ rows, T $>$@{Ogre::TransformBase$<$ rows, T $>$}}
\doxysubsubsection{\texorpdfstring{operator[]()}{operator[]()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily template$<$int rows, typename T$>$ \\
T$\ast$ \mbox{\hyperlink{class_ogre_1_1_transform_base}{Ogre\+::\+Transform\+Base}}$<$ rows, T $>$\+::operator\mbox{[}$\,$\mbox{]} (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{i\+Row }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{class_ogre_1_1_transform_base_afbc5442e28735144fe9e1f41daa89c3a}\label{class_ogre_1_1_transform_base_afbc5442e28735144fe9e1f41daa89c3a}} 
\index{Ogre::TransformBase$<$ rows, T $>$@{Ogre::TransformBase$<$ rows, T $>$}!operator\mbox{[}\mbox{]}@{operator[]}}
\index{operator\mbox{[}\mbox{]}@{operator[]}!Ogre::TransformBase$<$ rows, T $>$@{Ogre::TransformBase$<$ rows, T $>$}}
\doxysubsubsection{\texorpdfstring{operator[]()}{operator[]()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily template$<$int rows, typename T$>$ \\
const T$\ast$ \mbox{\hyperlink{class_ogre_1_1_transform_base}{Ogre\+::\+Transform\+Base}}$<$ rows, T $>$\+::operator\mbox{[}$\,$\mbox{]} (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{i\+Row }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{class_ogre_1_1_transform_base_acd424a976abe0bd586dd6b46876dc235}\label{class_ogre_1_1_transform_base_acd424a976abe0bd586dd6b46876dc235}} 
\index{Ogre::TransformBase$<$ rows, T $>$@{Ogre::TransformBase$<$ rows, T $>$}!setTrans@{setTrans}}
\index{setTrans@{setTrans}!Ogre::TransformBase$<$ rows, T $>$@{Ogre::TransformBase$<$ rows, T $>$}}
\doxysubsubsection{\texorpdfstring{setTrans()}{setTrans()}}
{\footnotesize\ttfamily template$<$int rows, typename T$>$ \\
void \mbox{\hyperlink{class_ogre_1_1_transform_base}{Ogre\+::\+Transform\+Base}}$<$ rows, T $>$\+::set\+Trans (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_ogre_1_1_vector}{Vector}}$<$ 3, T $>$ \&}]{v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Sets the translation transformation part of the matrix. 

\mbox{\Hypertarget{class_ogre_1_1_transform_base_a92260a3e504b84292acac6d600c9ef36}\label{class_ogre_1_1_transform_base_a92260a3e504b84292acac6d600c9ef36}} 
\index{Ogre::TransformBase$<$ rows, T $>$@{Ogre::TransformBase$<$ rows, T $>$}!getTrans@{getTrans}}
\index{getTrans@{getTrans}!Ogre::TransformBase$<$ rows, T $>$@{Ogre::TransformBase$<$ rows, T $>$}}
\doxysubsubsection{\texorpdfstring{getTrans()}{getTrans()}}
{\footnotesize\ttfamily template$<$int rows, typename T$>$ \\
\mbox{\hyperlink{class_ogre_1_1_vector}{Vector}}$<$3, T$>$ \mbox{\hyperlink{class_ogre_1_1_transform_base}{Ogre\+::\+Transform\+Base}}$<$ rows, T $>$\+::get\+Trans (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Extracts the translation transformation part of the matrix. 

\mbox{\Hypertarget{class_ogre_1_1_transform_base_ac029df849f85850a59921e5f361927c4}\label{class_ogre_1_1_transform_base_ac029df849f85850a59921e5f361927c4}} 
\index{Ogre::TransformBase$<$ rows, T $>$@{Ogre::TransformBase$<$ rows, T $>$}!setScale@{setScale}}
\index{setScale@{setScale}!Ogre::TransformBase$<$ rows, T $>$@{Ogre::TransformBase$<$ rows, T $>$}}
\doxysubsubsection{\texorpdfstring{setScale()}{setScale()}}
{\footnotesize\ttfamily template$<$int rows, typename T$>$ \\
void \mbox{\hyperlink{class_ogre_1_1_transform_base}{Ogre\+::\+Transform\+Base}}$<$ rows, T $>$\+::set\+Scale (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_ogre_1_1_vector}{Vector}}$<$ 3, T $>$ \&}]{v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Sets the scale part of the matrix. 



\doxysubsection{Friends And Related Function Documentation}
\mbox{\Hypertarget{class_ogre_1_1_transform_base_a6a2ebd118528e9537b3c657df52acf03}\label{class_ogre_1_1_transform_base_a6a2ebd118528e9537b3c657df52acf03}} 
\index{Ogre::TransformBase$<$ rows, T $>$@{Ogre::TransformBase$<$ rows, T $>$}!operator$<$$<$@{operator$<$$<$}}
\index{operator$<$$<$@{operator$<$$<$}!Ogre::TransformBase$<$ rows, T $>$@{Ogre::TransformBase$<$ rows, T $>$}}
\doxysubsubsection{\texorpdfstring{operator$<$$<$}{operator<<}}
{\footnotesize\ttfamily template$<$int rows, typename T$>$ \\
std\+::ostream\& operator$<$$<$ (\begin{DoxyParamCaption}\item[{std\+::ostream \&}]{o,  }\item[{const \mbox{\hyperlink{class_ogre_1_1_transform_base}{Transform\+Base}}$<$ rows, T $>$ \&}]{mat }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}}



Function for writing to a stream. 



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{_ogre_matrix4_8h}{Ogre\+Matrix4.\+h}}\end{DoxyCompactItemize}
