\hypertarget{class_ogre_1_1_transform_base}{}\section{Ogre\+:\+:Transform\+Base Class Reference}
\label{class_ogre_1_1_transform_base}\index{Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}}


Class encapsulating a standard 4x4 homogeneous matrix.  




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



Inheritance diagram for Ogre\+:\+:Transform\+Base\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=262pt]{class_ogre_1_1_transform_base__inherit__graph}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real} \hyperlink{class_ogre_1_1_transform_base_a7fea969b4c39eb571b5798a7ff23d16e}{determinant} () const
\item 
void \hyperlink{class_ogre_1_1_transform_base_ad5400b5a490eb1df3e80d7d5d193b2aa}{extract3x3\+Matrix} (\hyperlink{class_ogre_1_1_matrix3}{Matrix3} \&m3x3) const
\item 
\hyperlink{class_ogre_1_1_quaternion}{Quaternion} \hyperlink{class_ogre_1_1_transform_base_a2a5aa7dda4dbac2401fb251f22b9b038}{extract\+Quaternion} () const
\item 
\hyperlink{class_ogre_1_1_vector3}{Vector3} \hyperlink{class_ogre_1_1_transform_base_aadd0be612b9026d71e25c667123c38fd}{get\+Trans} () const
\begin{DoxyCompactList}\small\item\em Extracts the translation transformation part of the matrix. \end{DoxyCompactList}\item 
\hyperlink{class_ogre_1_1_matrix3}{Matrix3} \hyperlink{class_ogre_1_1_transform_base_a7703077c23c37d7eb1889f9c9f5197c0}{linear} () const
\begin{DoxyCompactList}\small\item\em Extracts the rotation / scaling part of the Matrix as a 3x3 matrix. \end{DoxyCompactList}\item 
void \hyperlink{class_ogre_1_1_transform_base_a804a6a6e44386202d103a516149eb4be}{make\+Inverse\+Transform} (const \hyperlink{class_ogre_1_1_vector3}{Vector3} \&position, const \hyperlink{class_ogre_1_1_vector3}{Vector3} \&scale, const \hyperlink{class_ogre_1_1_quaternion}{Quaternion} \&orientation)
\begin{DoxyCompactList}\small\item\em Building an inverse \hyperlink{class_ogre_1_1_affine3}{Affine3} from orientation / scale / position. \end{DoxyCompactList}\item 
void \hyperlink{class_ogre_1_1_transform_base_a633f5ace5a3b3870d60d1b3d08dc1477}{make\+Trans} (const \hyperlink{class_ogre_1_1_vector3}{Vector3} \&v)
\begin{DoxyCompactList}\small\item\em Builds a translation matrix. \end{DoxyCompactList}\item 
void \hyperlink{class_ogre_1_1_transform_base_a84c9eb0fd3027630e299615e9ea6efb0}{make\+Trans} (\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real} tx, \hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real} ty, \hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real} tz)
\item 
void \hyperlink{class_ogre_1_1_transform_base_a9115cefcc7321c90659b976bcce542f3}{make\+Transform} (const \hyperlink{class_ogre_1_1_vector3}{Vector3} \&position, const \hyperlink{class_ogre_1_1_vector3}{Vector3} \&scale, const \hyperlink{class_ogre_1_1_quaternion}{Quaternion} \&orientation)
\begin{DoxyCompactList}\small\item\em Building a \hyperlink{class_ogre_1_1_affine3}{Affine3} from orientation / scale / position. \end{DoxyCompactList}\item 
\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real} $\ast$ \hyperlink{class_ogre_1_1_transform_base_aa21a63d88ef4ffc429f2c8edbabe1a1f}{operator\mbox{[}$\,$\mbox{]}} (size\+\_\+t i\+Row)
\item 
const \hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real} $\ast$ \hyperlink{class_ogre_1_1_transform_base_ad6af815a07b45f0459cc223b7aab8d21}{operator\mbox{[}$\,$\mbox{]}} (size\+\_\+t i\+Row) const
\item 
void \hyperlink{class_ogre_1_1_transform_base_a46525728e27cbc3aeb2cbf1c75912174}{set3x3\+Matrix} (const \hyperlink{class_ogre_1_1_matrix3}{Matrix3} \&mat3)
\begin{DoxyCompactList}\small\item\em Assignment from 3x3 matrix. \end{DoxyCompactList}\item 
void \hyperlink{class_ogre_1_1_transform_base_a4fce454d3b27bb2ebc5e3cabf4b931eb}{set\+Scale} (const \hyperlink{class_ogre_1_1_vector3}{Vector3} \&v)
\begin{DoxyCompactList}\small\item\em Sets the scale part of the matrix. \end{DoxyCompactList}\item 
void \hyperlink{class_ogre_1_1_transform_base_a54652722d399be755ebfd3fa1af886f1}{set\+Trans} (const \hyperlink{class_ogre_1_1_vector3}{Vector3} \&v)
\begin{DoxyCompactList}\small\item\em Sets the translation transformation part of the matrix. \end{DoxyCompactList}\item 
\hyperlink{class_ogre_1_1_matrix4}{Matrix4} \hyperlink{group___math_ga1e597cc58a82b0966165b5cf783ed852}{transpose} () const
\end{DoxyCompactItemize}
\subsection*{Friends}
\begin{DoxyCompactItemize}
\item 
std\+::ostream \& \hyperlink{class_ogre_1_1_transform_base_a6a2ebd118528e9537b3c657df52acf03}{operator$<$$<$} (std\+::ostream \&o, const \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}


\subsection{Detailed Description}
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}


\subsection{Member Function Documentation}
\mbox{\Hypertarget{class_ogre_1_1_transform_base_aa21a63d88ef4ffc429f2c8edbabe1a1f}\label{class_ogre_1_1_transform_base_aa21a63d88ef4ffc429f2c8edbabe1a1f}} 
\index{Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}!operator\mbox{[}\mbox{]}@{operator[]}}
\index{operator\mbox{[}\mbox{]}@{operator[]}!Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}}
\subsubsection{\texorpdfstring{operator[]()}{operator[]()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}$\ast$ Ogre\+::\+Transform\+Base\+::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_ad6af815a07b45f0459cc223b7aab8d21}\label{class_ogre_1_1_transform_base_ad6af815a07b45f0459cc223b7aab8d21}} 
\index{Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}!operator\mbox{[}\mbox{]}@{operator[]}}
\index{operator\mbox{[}\mbox{]}@{operator[]}!Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}}
\subsubsection{\texorpdfstring{operator[]()}{operator[]()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily const \hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}$\ast$ Ogre\+::\+Transform\+Base\+::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_a46525728e27cbc3aeb2cbf1c75912174}\label{class_ogre_1_1_transform_base_a46525728e27cbc3aeb2cbf1c75912174}} 
\index{Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}!set3x3\+Matrix@{set3x3\+Matrix}}
\index{set3x3\+Matrix@{set3x3\+Matrix}!Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}}
\subsubsection{\texorpdfstring{set3x3\+Matrix()}{set3x3Matrix()}}
{\footnotesize\ttfamily void Ogre\+::\+Transform\+Base\+::set3x3\+Matrix (\begin{DoxyParamCaption}\item[{const \hyperlink{class_ogre_1_1_matrix3}{Matrix3} \&}]{mat3 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Assignment from 3x3 matrix. 

\mbox{\Hypertarget{class_ogre_1_1_transform_base_a7703077c23c37d7eb1889f9c9f5197c0}\label{class_ogre_1_1_transform_base_a7703077c23c37d7eb1889f9c9f5197c0}} 
\index{Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}!linear@{linear}}
\index{linear@{linear}!Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}}
\subsubsection{\texorpdfstring{linear()}{linear()}}
{\footnotesize\ttfamily \hyperlink{class_ogre_1_1_matrix3}{Matrix3} Ogre\+::\+Transform\+Base\+::linear (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Extracts the rotation / scaling part of the Matrix as a 3x3 matrix. 

\mbox{\Hypertarget{class_ogre_1_1_transform_base_ad5400b5a490eb1df3e80d7d5d193b2aa}\label{class_ogre_1_1_transform_base_ad5400b5a490eb1df3e80d7d5d193b2aa}} 
\index{Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}!extract3x3\+Matrix@{extract3x3\+Matrix}}
\index{extract3x3\+Matrix@{extract3x3\+Matrix}!Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}}
\subsubsection{\texorpdfstring{extract3x3\+Matrix()}{extract3x3Matrix()}}
{\footnotesize\ttfamily void Ogre\+::\+Transform\+Base\+::extract3x3\+Matrix (\begin{DoxyParamCaption}\item[{\hyperlink{class_ogre_1_1_matrix3}{Matrix3} \&}]{m3x3 }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{class_ogre_1_1_transform_base_a2a5aa7dda4dbac2401fb251f22b9b038}\label{class_ogre_1_1_transform_base_a2a5aa7dda4dbac2401fb251f22b9b038}} 
\index{Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}!extract\+Quaternion@{extract\+Quaternion}}
\index{extract\+Quaternion@{extract\+Quaternion}!Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}}
\subsubsection{\texorpdfstring{extract\+Quaternion()}{extractQuaternion()}}
{\footnotesize\ttfamily \hyperlink{class_ogre_1_1_quaternion}{Quaternion} Ogre\+::\+Transform\+Base\+::extract\+Quaternion (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{class_ogre_1_1_transform_base_a54652722d399be755ebfd3fa1af886f1}\label{class_ogre_1_1_transform_base_a54652722d399be755ebfd3fa1af886f1}} 
\index{Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}!set\+Trans@{set\+Trans}}
\index{set\+Trans@{set\+Trans}!Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}}
\subsubsection{\texorpdfstring{set\+Trans()}{setTrans()}}
{\footnotesize\ttfamily void Ogre\+::\+Transform\+Base\+::set\+Trans (\begin{DoxyParamCaption}\item[{const \hyperlink{class_ogre_1_1_vector3}{Vector3} \&}]{v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Sets the translation transformation part of the matrix. 



References Ogre\+::\+Vector3\+::x, Ogre\+::\+Vector3\+::y, and Ogre\+::\+Vector3\+::z.

\mbox{\Hypertarget{class_ogre_1_1_transform_base_aadd0be612b9026d71e25c667123c38fd}\label{class_ogre_1_1_transform_base_aadd0be612b9026d71e25c667123c38fd}} 
\index{Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}!get\+Trans@{get\+Trans}}
\index{get\+Trans@{get\+Trans}!Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}}
\subsubsection{\texorpdfstring{get\+Trans()}{getTrans()}}
{\footnotesize\ttfamily \hyperlink{class_ogre_1_1_vector3}{Vector3} Ogre\+::\+Transform\+Base\+::get\+Trans (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Extracts the translation transformation part of the matrix. 



Referenced by Ogre\+::\+Affine3\+::operator const Matrix4 \&().

\mbox{\Hypertarget{class_ogre_1_1_transform_base_a4fce454d3b27bb2ebc5e3cabf4b931eb}\label{class_ogre_1_1_transform_base_a4fce454d3b27bb2ebc5e3cabf4b931eb}} 
\index{Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}!set\+Scale@{set\+Scale}}
\index{set\+Scale@{set\+Scale}!Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}}
\subsubsection{\texorpdfstring{set\+Scale()}{setScale()}}
{\footnotesize\ttfamily void Ogre\+::\+Transform\+Base\+::set\+Scale (\begin{DoxyParamCaption}\item[{const \hyperlink{class_ogre_1_1_vector3}{Vector3} \&}]{v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Sets the scale part of the matrix. 



References Ogre\+::\+Vector3\+::x, Ogre\+::\+Vector3\+::y, and Ogre\+::\+Vector3\+::z.

\mbox{\Hypertarget{class_ogre_1_1_transform_base_a633f5ace5a3b3870d60d1b3d08dc1477}\label{class_ogre_1_1_transform_base_a633f5ace5a3b3870d60d1b3d08dc1477}} 
\index{Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}!make\+Trans@{make\+Trans}}
\index{make\+Trans@{make\+Trans}!Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}}
\subsubsection{\texorpdfstring{make\+Trans()}{makeTrans()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily void Ogre\+::\+Transform\+Base\+::make\+Trans (\begin{DoxyParamCaption}\item[{const \hyperlink{class_ogre_1_1_vector3}{Vector3} \&}]{v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Builds a translation matrix. 



References Ogre\+::\+Vector3\+::x, Ogre\+::\+Vector3\+::y, and Ogre\+::\+Vector3\+::z.

\mbox{\Hypertarget{class_ogre_1_1_transform_base_a84c9eb0fd3027630e299615e9ea6efb0}\label{class_ogre_1_1_transform_base_a84c9eb0fd3027630e299615e9ea6efb0}} 
\index{Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}!make\+Trans@{make\+Trans}}
\index{make\+Trans@{make\+Trans}!Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}}
\subsubsection{\texorpdfstring{make\+Trans()}{makeTrans()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily void Ogre\+::\+Transform\+Base\+::make\+Trans (\begin{DoxyParamCaption}\item[{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}]{tx,  }\item[{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}]{ty,  }\item[{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}]{tz }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{class_ogre_1_1_transform_base_a7fea969b4c39eb571b5798a7ff23d16e}\label{class_ogre_1_1_transform_base_a7fea969b4c39eb571b5798a7ff23d16e}} 
\index{Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}!determinant@{determinant}}
\index{determinant@{determinant}!Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}}
\subsubsection{\texorpdfstring{determinant()}{determinant()}}
{\footnotesize\ttfamily \hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real} Ogre\+::\+Transform\+Base\+::determinant (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

\mbox{\Hypertarget{class_ogre_1_1_transform_base_a9115cefcc7321c90659b976bcce542f3}\label{class_ogre_1_1_transform_base_a9115cefcc7321c90659b976bcce542f3}} 
\index{Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}!make\+Transform@{make\+Transform}}
\index{make\+Transform@{make\+Transform}!Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}}
\subsubsection{\texorpdfstring{make\+Transform()}{makeTransform()}}
{\footnotesize\ttfamily void Ogre\+::\+Transform\+Base\+::make\+Transform (\begin{DoxyParamCaption}\item[{const \hyperlink{class_ogre_1_1_vector3}{Vector3} \&}]{position,  }\item[{const \hyperlink{class_ogre_1_1_vector3}{Vector3} \&}]{scale,  }\item[{const \hyperlink{class_ogre_1_1_quaternion}{Quaternion} \&}]{orientation }\end{DoxyParamCaption})}



Building a \hyperlink{class_ogre_1_1_affine3}{Affine3} from orientation / scale / position. 

\begin{DoxyRemark}{Remarks}
Transform is performed in the order scale, rotate, translation, i.\+e. translation is independent of orientation axes, scale does not affect size of translation, rotation and scaling are always centered on the origin. 
\end{DoxyRemark}
\mbox{\Hypertarget{class_ogre_1_1_transform_base_a804a6a6e44386202d103a516149eb4be}\label{class_ogre_1_1_transform_base_a804a6a6e44386202d103a516149eb4be}} 
\index{Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}!make\+Inverse\+Transform@{make\+Inverse\+Transform}}
\index{make\+Inverse\+Transform@{make\+Inverse\+Transform}!Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}}
\subsubsection{\texorpdfstring{make\+Inverse\+Transform()}{makeInverseTransform()}}
{\footnotesize\ttfamily void Ogre\+::\+Transform\+Base\+::make\+Inverse\+Transform (\begin{DoxyParamCaption}\item[{const \hyperlink{class_ogre_1_1_vector3}{Vector3} \&}]{position,  }\item[{const \hyperlink{class_ogre_1_1_vector3}{Vector3} \&}]{scale,  }\item[{const \hyperlink{class_ogre_1_1_quaternion}{Quaternion} \&}]{orientation }\end{DoxyParamCaption})}



Building an inverse \hyperlink{class_ogre_1_1_affine3}{Affine3} from orientation / scale / position. 

\begin{DoxyRemark}{Remarks}
As make\+Transform except it build the inverse given the same data as make\+Transform, so performing -\/translation, -\/rotate, 1/scale in that order. 
\end{DoxyRemark}


\subsection{Friends And Related Function Documentation}
\mbox{\Hypertarget{class_ogre_1_1_transform_base_a6a2ebd118528e9537b3c657df52acf03}\label{class_ogre_1_1_transform_base_a6a2ebd118528e9537b3c657df52acf03}} 
\index{Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}!operator$<$$<$@{operator$<$$<$}}
\index{operator$<$$<$@{operator$<$$<$}!Ogre\+::\+Transform\+Base@{Ogre\+::\+Transform\+Base}}
\subsubsection{\texorpdfstring{operator$<$$<$}{operator<<}}
{\footnotesize\ttfamily std\+::ostream\& operator$<$$<$ (\begin{DoxyParamCaption}\item[{std\+::ostream \&}]{o,  }\item[{const \hyperlink{class_ogre_1_1_transform_base}{Transform\+Base} \&}]{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 
\hyperlink{_ogre_matrix4_8h}{Ogre\+Matrix4.\+h}\end{DoxyCompactItemize}
