\hypertarget{class_ogre_1_1_matrix3}{}\doxysection{Ogre\+::Matrix3 Class Reference}
\label{class_ogre_1_1_matrix3}\index{Ogre::Matrix3@{Ogre::Matrix3}}


A 3x3 matrix which can represent rotations around axes.  




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

\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{class_ogre_1_1_matrix3_a0ecaa32a22cc18ca76dc74377005e7e1}{Matrix3}} ()
\begin{DoxyCompactList}\small\item\em Default constructor. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_ogre_1_1_matrix3_a705a22877d9f0a33724887e577486b41}{Matrix3}} (const \mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} arr\mbox{[}3\mbox{]}\mbox{[}3\mbox{]})
\item 
\mbox{\hyperlink{class_ogre_1_1_matrix3_a3653fb657419f82d71f7ae06df0dd9f5}{Matrix3}} (\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} f\+Entry00, \mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} f\+Entry01, \mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} f\+Entry02, \mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} f\+Entry10, \mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} f\+Entry11, \mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} f\+Entry12, \mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} f\+Entry20, \mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} f\+Entry21, \mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} f\+Entry22)
\item 
\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} \mbox{\hyperlink{class_ogre_1_1_matrix3_a14cdac95b9c0c688bbeacdf63128fa90}{Determinant}} () const
\item 
\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} \mbox{\hyperlink{class_ogre_1_1_matrix3_a1c30dfe97a436d47c83f5c9bf603a5bb}{determinant}} () const
\item 
void \mbox{\hyperlink{class_ogre_1_1_matrix3_a7894ad662322338045ae796e418e9df2}{Eigen\+Solve\+Symmetric}} (\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} af\+Eigenvalue\mbox{[}3\mbox{]}, \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} ak\+Eigenvector\mbox{[}3\mbox{]}) const
\begin{DoxyCompactList}\small\item\em Eigensolver, matrix must be symmetric. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_ogre_1_1_matrix3_ab96e7684e128659752ec94031357e6ff}{From\+Angle\+Axis}} (const \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&rk\+Axis, const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&f\+Radians)
\item 
void \mbox{\hyperlink{class_ogre_1_1_matrix3_ad904362ff107e91ed2881a9802d11979}{From\+Axes}} (const \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&x\+Axis, const \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&y\+Axis, const \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&z\+Axis)
\item 
void \mbox{\hyperlink{class_ogre_1_1_matrix3_a3f5abdecf648a54b164df112c7037ed7}{From\+Euler\+Angles\+X\+YZ}} (const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&f\+Y\+Angle, const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&f\+P\+Angle, const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&f\+R\+Angle)
\item 
void \mbox{\hyperlink{class_ogre_1_1_matrix3_a209f31aa2e25d9b3d55d64d2d8304382}{From\+Euler\+Angles\+X\+ZY}} (const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&f\+Y\+Angle, const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&f\+P\+Angle, const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&f\+R\+Angle)
\item 
void \mbox{\hyperlink{class_ogre_1_1_matrix3_a2e0ccd0f22689072aa4a64c7a441f694}{From\+Euler\+Angles\+Y\+XZ}} (const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&f\+Y\+Angle, const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&f\+P\+Angle, const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&f\+R\+Angle)
\item 
void \mbox{\hyperlink{class_ogre_1_1_matrix3_a94b0b7264cc1572fff22f491ac6cc664}{From\+Euler\+Angles\+Y\+ZX}} (const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&f\+Y\+Angle, const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&f\+P\+Angle, const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&f\+R\+Angle)
\item 
void \mbox{\hyperlink{class_ogre_1_1_matrix3_ac0148ffb86f185d7de044fd83e9647ce}{From\+Euler\+Angles\+Z\+XY}} (const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&f\+Y\+Angle, const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&f\+P\+Angle, const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&f\+R\+Angle)
\item 
void \mbox{\hyperlink{class_ogre_1_1_matrix3_a8308f99c3c13e067f016a45f26f15389}{From\+Euler\+Angles\+Z\+YX}} (const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&f\+Y\+Angle, const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&f\+P\+Angle, const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&f\+R\+Angle)
\item 
\mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \mbox{\hyperlink{class_ogre_1_1_matrix3_a06269d2ba63c85aea763595e44738f79}{Get\+Column}} (size\+\_\+t i\+Col) const
\item 
bool \mbox{\hyperlink{class_ogre_1_1_matrix3_ae707b42e202609b8aa86fe461ba0f1c2}{has\+Negative\+Scale}} () const
\begin{DoxyCompactList}\small\item\em Determines if this matrix involves a negative scaling. \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{class_ogre_1_1_matrix3_adfc89d0edf39f55d9c8e30a8287efcb7}{has\+Scale}} () const
\begin{DoxyCompactList}\small\item\em Determines if this matrix involves a scaling. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \mbox{\hyperlink{class_ogre_1_1_matrix3_ad0d1a7e8a8b84df6dfd4ea1eba09b9e2}{inverse}} () const
\item 
bool \mbox{\hyperlink{class_ogre_1_1_matrix3_ae220004e566c74b9d3121d3073fe84c2}{Inverse}} (\mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&rk\+Inverse, \mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} f\+Tolerance=1e-\/06f) const
\item 
\mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \mbox{\hyperlink{class_ogre_1_1_matrix3_ab988b3336757c37d3e17e59f410bd88c}{Inverse}} (\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} f\+Tolerance=1e-\/06f) const
\item 
bool \mbox{\hyperlink{class_ogre_1_1_matrix3_a2142d22152cd57c522b6936fd523324f}{operator!=}} (const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&rk\+Matrix) const
\begin{DoxyCompactList}\small\item\em Tests 2 matrices for inequality. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \mbox{\hyperlink{class_ogre_1_1_matrix3_aa6e3e20bdf0a5ff536511c968ed5e3d5}{operator$\ast$}} (const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&rk\+Matrix) const
\begin{DoxyCompactList}\small\item\em Matrix concatenation using \textquotesingle{}$\ast$\textquotesingle{}. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \mbox{\hyperlink{class_ogre_1_1_matrix3_a711f681fcd524fe130f651bc819adf0e}{operator$\ast$}} (\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} f\+Scalar) const
\begin{DoxyCompactList}\small\item\em Matrix $\ast$ scalar. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \mbox{\hyperlink{class_ogre_1_1_matrix3_ae3ce939cbbd12eefa0e33933eb2a20cd}{operator+}} (const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&rk\+Matrix) const
\begin{DoxyCompactList}\small\item\em Matrix addition. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \mbox{\hyperlink{class_ogre_1_1_matrix3_abaa901cecc2dce7aacd5dfcc6f5d4f78}{operator-\/}} () const
\item 
\mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \mbox{\hyperlink{class_ogre_1_1_matrix3_ae2e8712b996aab5c818418978b1796d2}{operator-\/}} (const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&rk\+Matrix) const
\begin{DoxyCompactList}\small\item\em Matrix subtraction. \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{class_ogre_1_1_matrix3_a0589b1275b7822abd410b13477156d4d}{operator==}} (const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&rk\+Matrix) const
\begin{DoxyCompactList}\small\item\em Tests 2 matrices for equality. \end{DoxyCompactList}\item 
\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} $\ast$ \mbox{\hyperlink{class_ogre_1_1_matrix3_a05c722c341f21dd2ffc36fb1414e284b}{operator\mbox{[}$\,$\mbox{]}}} (size\+\_\+t i\+Row)
\item 
const \mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} $\ast$ \mbox{\hyperlink{class_ogre_1_1_matrix3_a8043454ea50049c6849d60ead7dbd7a7}{operator\mbox{[}$\,$\mbox{]}}} (size\+\_\+t i\+Row) const
\begin{DoxyCompactList}\small\item\em Member access, allows use of construct mat\mbox{[}r\mbox{]}\mbox{[}c\mbox{]}. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_ogre_1_1_matrix3_add64f270c75286c4cafa3b242778573f}{Orthonormalize}} ()
\begin{DoxyCompactList}\small\item\em Gram-\/\+Schmidt orthonormalization (applied to columns of rotation matrix) \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_ogre_1_1_matrix3_a67d582443cb581c5deda833897452701}{Q\+D\+U\+Decomposition}} (\mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&rkQ, \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&rkD, \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&rkU) const
\begin{DoxyCompactList}\small\item\em Orthogonal Q, diagonal D, upper triangular U stored as (u01,u02,u12) \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_ogre_1_1_matrix3_ab5f04bc27bc68152b92123ac2d14afd5}{Set\+Column}} (size\+\_\+t i\+Col, const \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&vec)
\item 
void \mbox{\hyperlink{class_ogre_1_1_matrix3_a1efb2981c1a759e607e1431321d95524}{Singular\+Value\+Composition}} (const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&rkL, const \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&rkS, const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&rkR)
\item 
void \mbox{\hyperlink{class_ogre_1_1_matrix3_a9c4cbf94ffb5400519b60dd4620b595a}{Singular\+Value\+Decomposition}} (\mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&rkL, \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&rkS, \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&rkR) const
\begin{DoxyCompactList}\small\item\em Singular value decomposition. \end{DoxyCompactList}\item 
\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} \mbox{\hyperlink{class_ogre_1_1_matrix3_adca9be180377c51c05a608df576a8e86}{Spectral\+Norm}} () const
\item 
void \mbox{\hyperlink{class_ogre_1_1_matrix3_a392575c590b0d95a1422d1a8fb23260d}{To\+Angle\+Axis}} (\mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&rk\+Axis, \mbox{\hyperlink{class_ogre_1_1_degree}{Degree}} \&rf\+Angle) const
\item 
void \mbox{\hyperlink{class_ogre_1_1_matrix3_a383f39c81d80a866ca76594be498a251}{To\+Angle\+Axis}} (\mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&rk\+Axis, \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&rf\+Angle) const
\begin{DoxyCompactList}\small\item\em Note\+: Matrix must be orthonormal. \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{class_ogre_1_1_matrix3_abd75bf95ae6a7c4294ea710769a77a32}{To\+Euler\+Angles\+X\+YZ}} (\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&rf\+Y\+Angle, \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&rf\+P\+Angle, \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&rf\+R\+Angle) const
\begin{DoxyCompactList}\small\item\em The matrix must be orthonormal. \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{class_ogre_1_1_matrix3_a157ff70e8bd3a611389182497988e3f2}{To\+Euler\+Angles\+X\+ZY}} (\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&rf\+Y\+Angle, \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&rf\+P\+Angle, \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&rf\+R\+Angle) const
\item 
bool \mbox{\hyperlink{class_ogre_1_1_matrix3_a799bda89a5b5e774aaeb6ba5197e61ba}{To\+Euler\+Angles\+Y\+XZ}} (\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&rf\+Y\+Angle, \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&rf\+P\+Angle, \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&rf\+R\+Angle) const
\item 
bool \mbox{\hyperlink{class_ogre_1_1_matrix3_a458ebd34fea7df1eb987fee96b5ca2df}{To\+Euler\+Angles\+Y\+ZX}} (\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&rf\+Y\+Angle, \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&rf\+P\+Angle, \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&rf\+R\+Angle) const
\item 
bool \mbox{\hyperlink{class_ogre_1_1_matrix3_ab76be51256dd3773aaaeba380f7969a8}{To\+Euler\+Angles\+Z\+XY}} (\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&rf\+Y\+Angle, \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&rf\+P\+Angle, \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&rf\+R\+Angle) const
\item 
bool \mbox{\hyperlink{class_ogre_1_1_matrix3_ab1a1b9969db6acbb91178e9c25cfd28d}{To\+Euler\+Angles\+Z\+YX}} (\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&rf\+Y\+Angle, \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&rf\+P\+Angle, \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&rf\+R\+Angle) const
\item 
\mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \mbox{\hyperlink{class_ogre_1_1_matrix3_aec1cee52b2574f50b4e98ead1266308b}{Transpose}} () const
\item 
\mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \mbox{\hyperlink{class_ogre_1_1_matrix3_ad340a987162fcf0cb9f4be9ce90996c1}{transpose}} () const
\end{DoxyCompactItemize}
\doxysubsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static void \mbox{\hyperlink{class_ogre_1_1_matrix3_af1d217c48e8894227fa2cf2a7952cccc}{Tensor\+Product}} (const \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&rkU, const \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&rkV, \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&rk\+Product)
\end{DoxyCompactItemize}
\doxysubsection*{Static Public Attributes}
\begin{DoxyCompactItemize}
\item 
static const \mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} \mbox{\hyperlink{class_ogre_1_1_matrix3_a5bf17bf2239af2516e359dc6de22bf3d}{E\+P\+S\+I\+L\+ON}}
\item 
static const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \mbox{\hyperlink{class_ogre_1_1_matrix3_adcb2945d4f9b8995236be5a27dcfe343}{I\+D\+E\+N\+T\+I\+TY}}
\item 
static const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \mbox{\hyperlink{class_ogre_1_1_matrix3_a4561d62d4d2c088ce2a3b6c3ec3d09af}{Z\+E\+RO}}
\end{DoxyCompactItemize}
\doxysubsection*{Friends}
\begin{DoxyCompactItemize}
\item 
class \mbox{\hyperlink{class_ogre_1_1_matrix3_aed2829d86d2df8f9333d4c0087455880}{Matrix4}}
\item 
\+\_\+\+Ogre\+Export friend \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \mbox{\hyperlink{class_ogre_1_1_matrix3_a9bc849d4891efcbb40253e790d8f5837}{operator$\ast$}} (const \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&rk\+Vector, const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&rk\+Matrix)
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{class_ogre_1_1_vector}{Vector}} $\ast$ matrix \mbox{[}1x3 $\ast$ 3x3 = 1x3\mbox{]}. \end{DoxyCompactList}\item 
\+\_\+\+Ogre\+Export friend \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \mbox{\hyperlink{class_ogre_1_1_matrix3_a475a485a770084ade97b8fd310b60011}{operator$\ast$}} (\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} f\+Scalar, const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&rk\+Matrix)
\begin{DoxyCompactList}\small\item\em Scalar $\ast$ matrix. \end{DoxyCompactList}\item 
std\+::ostream \& \mbox{\hyperlink{class_ogre_1_1_matrix3_a82d787d8c98830db8a518a140e7ebbda}{operator$<$$<$}} (std\+::ostream \&o, const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&mat)
\begin{DoxyCompactList}\small\item\em Function for writing to a stream. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
A 3x3 matrix which can represent rotations around axes. 

\begin{DoxyNote}{Note}
{\bfseries{All the code is adapted from the Wild Magic 0.\+2 Matrix library (\href{http://www.geometrictools.com/}{\texttt{ http\+://www.\+geometrictools.\+com/}}).}} 
\end{DoxyNote}
\begin{DoxyParagraph}{}
The coordinate system is assumed to be {\bfseries{right-\/handed}}. 
\end{DoxyParagraph}


\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{class_ogre_1_1_matrix3_a0ecaa32a22cc18ca76dc74377005e7e1}\label{class_ogre_1_1_matrix3_a0ecaa32a22cc18ca76dc74377005e7e1}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!Matrix3@{Matrix3}}
\index{Matrix3@{Matrix3}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{Matrix3()}{Matrix3()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
{\footnotesize\ttfamily Ogre\+::\+Matrix3\+::\+Matrix3 (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Default constructor. 

\begin{DoxyNote}{Note}
It does {\bfseries{N\+OT}} initialize the matrix for efficiency. 
\end{DoxyNote}
\mbox{\Hypertarget{class_ogre_1_1_matrix3_a705a22877d9f0a33724887e577486b41}\label{class_ogre_1_1_matrix3_a705a22877d9f0a33724887e577486b41}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!Matrix3@{Matrix3}}
\index{Matrix3@{Matrix3}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{Matrix3()}{Matrix3()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
{\footnotesize\ttfamily Ogre\+::\+Matrix3\+::\+Matrix3 (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}}]{arr\mbox{[}3\mbox{]}\mbox{[}3\mbox{]} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a3653fb657419f82d71f7ae06df0dd9f5}\label{class_ogre_1_1_matrix3_a3653fb657419f82d71f7ae06df0dd9f5}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!Matrix3@{Matrix3}}
\index{Matrix3@{Matrix3}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{Matrix3()}{Matrix3()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
{\footnotesize\ttfamily Ogre\+::\+Matrix3\+::\+Matrix3 (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}}]{f\+Entry00,  }\item[{\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}}]{f\+Entry01,  }\item[{\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}}]{f\+Entry02,  }\item[{\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}}]{f\+Entry10,  }\item[{\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}}]{f\+Entry11,  }\item[{\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}}]{f\+Entry12,  }\item[{\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}}]{f\+Entry20,  }\item[{\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}}]{f\+Entry21,  }\item[{\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}}]{f\+Entry22 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{class_ogre_1_1_matrix3_a8043454ea50049c6849d60ead7dbd7a7}\label{class_ogre_1_1_matrix3_a8043454ea50049c6849d60ead7dbd7a7}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!operator\mbox{[}\mbox{]}@{operator[]}}
\index{operator\mbox{[}\mbox{]}@{operator[]}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{operator[]()}{operator[]()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily const \mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}$\ast$ Ogre\+::\+Matrix3\+::operator\mbox{[}$\,$\mbox{]} (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{i\+Row }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Member access, allows use of construct mat\mbox{[}r\mbox{]}\mbox{[}c\mbox{]}. 

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a05c722c341f21dd2ffc36fb1414e284b}\label{class_ogre_1_1_matrix3_a05c722c341f21dd2ffc36fb1414e284b}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!operator\mbox{[}\mbox{]}@{operator[]}}
\index{operator\mbox{[}\mbox{]}@{operator[]}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{operator[]()}{operator[]()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}$\ast$ Ogre\+::\+Matrix3\+::operator\mbox{[}$\,$\mbox{]} (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{i\+Row }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a06269d2ba63c85aea763595e44738f79}\label{class_ogre_1_1_matrix3_a06269d2ba63c85aea763595e44738f79}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!GetColumn@{GetColumn}}
\index{GetColumn@{GetColumn}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{GetColumn()}{GetColumn()}}
{\footnotesize\ttfamily \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} Ogre\+::\+Matrix3\+::\+Get\+Column (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{i\+Col }\end{DoxyParamCaption}) const}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_ab5f04bc27bc68152b92123ac2d14afd5}\label{class_ogre_1_1_matrix3_ab5f04bc27bc68152b92123ac2d14afd5}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!SetColumn@{SetColumn}}
\index{SetColumn@{SetColumn}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{SetColumn()}{SetColumn()}}
{\footnotesize\ttfamily void Ogre\+::\+Matrix3\+::\+Set\+Column (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{i\+Col,  }\item[{const \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&}]{vec }\end{DoxyParamCaption})}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_ad904362ff107e91ed2881a9802d11979}\label{class_ogre_1_1_matrix3_ad904362ff107e91ed2881a9802d11979}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!FromAxes@{FromAxes}}
\index{FromAxes@{FromAxes}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{FromAxes()}{FromAxes()}}
{\footnotesize\ttfamily void Ogre\+::\+Matrix3\+::\+From\+Axes (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&}]{x\+Axis,  }\item[{const \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&}]{y\+Axis,  }\item[{const \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&}]{z\+Axis }\end{DoxyParamCaption})}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a0589b1275b7822abd410b13477156d4d}\label{class_ogre_1_1_matrix3_a0589b1275b7822abd410b13477156d4d}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!operator==@{operator==}}
\index{operator==@{operator==}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{operator==()}{operator==()}}
{\footnotesize\ttfamily bool Ogre\+::\+Matrix3\+::operator== (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&}]{rk\+Matrix }\end{DoxyParamCaption}) const}



Tests 2 matrices for equality. 

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a2142d22152cd57c522b6936fd523324f}\label{class_ogre_1_1_matrix3_a2142d22152cd57c522b6936fd523324f}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!operator"!=@{operator"!=}}
\index{operator"!=@{operator"!=}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{operator"!=()}{operator!=()}}
{\footnotesize\ttfamily bool Ogre\+::\+Matrix3\+::operator!= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&}]{rk\+Matrix }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Tests 2 matrices for inequality. 



References Ogre\+::operator==().

\mbox{\Hypertarget{class_ogre_1_1_matrix3_ae3ce939cbbd12eefa0e33933eb2a20cd}\label{class_ogre_1_1_matrix3_ae3ce939cbbd12eefa0e33933eb2a20cd}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!operator+@{operator+}}
\index{operator+@{operator+}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{operator+()}{operator+()}}
{\footnotesize\ttfamily \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} Ogre\+::\+Matrix3\+::operator+ (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&}]{rk\+Matrix }\end{DoxyParamCaption}) const}



Matrix addition. 

\mbox{\Hypertarget{class_ogre_1_1_matrix3_ae2e8712b996aab5c818418978b1796d2}\label{class_ogre_1_1_matrix3_ae2e8712b996aab5c818418978b1796d2}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!operator-\/@{operator-\/}}
\index{operator-\/@{operator-\/}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{operator-\/()}{operator-()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} Ogre\+::\+Matrix3\+::operator-\/ (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&}]{rk\+Matrix }\end{DoxyParamCaption}) const}



Matrix subtraction. 

\mbox{\Hypertarget{class_ogre_1_1_matrix3_aa6e3e20bdf0a5ff536511c968ed5e3d5}\label{class_ogre_1_1_matrix3_aa6e3e20bdf0a5ff536511c968ed5e3d5}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!operator$\ast$@{operator$\ast$}}
\index{operator$\ast$@{operator$\ast$}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{operator$\ast$()}{operator*()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} Ogre\+::\+Matrix3\+::operator$\ast$ (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&}]{rk\+Matrix }\end{DoxyParamCaption}) const}



Matrix concatenation using \textquotesingle{}$\ast$\textquotesingle{}. 

\mbox{\Hypertarget{class_ogre_1_1_matrix3_abaa901cecc2dce7aacd5dfcc6f5d4f78}\label{class_ogre_1_1_matrix3_abaa901cecc2dce7aacd5dfcc6f5d4f78}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!operator-\/@{operator-\/}}
\index{operator-\/@{operator-\/}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{operator-\/()}{operator-()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} Ogre\+::\+Matrix3\+::operator-\/ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a711f681fcd524fe130f651bc819adf0e}\label{class_ogre_1_1_matrix3_a711f681fcd524fe130f651bc819adf0e}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!operator$\ast$@{operator$\ast$}}
\index{operator$\ast$@{operator$\ast$}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{operator$\ast$()}{operator*()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} Ogre\+::\+Matrix3\+::operator$\ast$ (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}}]{f\+Scalar }\end{DoxyParamCaption}) const}



Matrix $\ast$ scalar. 

\mbox{\Hypertarget{class_ogre_1_1_matrix3_aec1cee52b2574f50b4e98ead1266308b}\label{class_ogre_1_1_matrix3_aec1cee52b2574f50b4e98ead1266308b}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!Transpose@{Transpose}}
\index{Transpose@{Transpose}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{Transpose()}{Transpose()}}
{\footnotesize\ttfamily \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} Ogre\+::\+Matrix3\+::\+Transpose (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_ae220004e566c74b9d3121d3073fe84c2}\label{class_ogre_1_1_matrix3_ae220004e566c74b9d3121d3073fe84c2}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!Inverse@{Inverse}}
\index{Inverse@{Inverse}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{Inverse()}{Inverse()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily bool Ogre\+::\+Matrix3\+::\+Inverse (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&}]{rk\+Inverse,  }\item[{\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}}]{f\+Tolerance = {\ttfamily 1e-\/06f} }\end{DoxyParamCaption}) const}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_ab988b3336757c37d3e17e59f410bd88c}\label{class_ogre_1_1_matrix3_ab988b3336757c37d3e17e59f410bd88c}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!Inverse@{Inverse}}
\index{Inverse@{Inverse}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{Inverse()}{Inverse()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} Ogre\+::\+Matrix3\+::\+Inverse (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}}]{f\+Tolerance = {\ttfamily 1e-\/06f} }\end{DoxyParamCaption}) const}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a14cdac95b9c0c688bbeacdf63128fa90}\label{class_ogre_1_1_matrix3_a14cdac95b9c0c688bbeacdf63128fa90}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!Determinant@{Determinant}}
\index{Determinant@{Determinant}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{Determinant()}{Determinant()}}
{\footnotesize\ttfamily \mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} Ogre\+::\+Matrix3\+::\+Determinant (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_ad340a987162fcf0cb9f4be9ce90996c1}\label{class_ogre_1_1_matrix3_ad340a987162fcf0cb9f4be9ce90996c1}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!transpose@{transpose}}
\index{transpose@{transpose}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{transpose()}{transpose()}}
{\footnotesize\ttfamily \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} Ogre\+::\+Matrix3\+::transpose (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_ad0d1a7e8a8b84df6dfd4ea1eba09b9e2}\label{class_ogre_1_1_matrix3_ad0d1a7e8a8b84df6dfd4ea1eba09b9e2}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!inverse@{inverse}}
\index{inverse@{inverse}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{inverse()}{inverse()}}
{\footnotesize\ttfamily \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} Ogre\+::\+Matrix3\+::inverse (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a1c30dfe97a436d47c83f5c9bf603a5bb}\label{class_ogre_1_1_matrix3_a1c30dfe97a436d47c83f5c9bf603a5bb}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!determinant@{determinant}}
\index{determinant@{determinant}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{determinant()}{determinant()}}
{\footnotesize\ttfamily \mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} Ogre\+::\+Matrix3\+::determinant (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_ae707b42e202609b8aa86fe461ba0f1c2}\label{class_ogre_1_1_matrix3_ae707b42e202609b8aa86fe461ba0f1c2}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!hasNegativeScale@{hasNegativeScale}}
\index{hasNegativeScale@{hasNegativeScale}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{hasNegativeScale()}{hasNegativeScale()}}
{\footnotesize\ttfamily bool Ogre\+::\+Matrix3\+::has\+Negative\+Scale (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Determines if this matrix involves a negative scaling. 

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a9c4cbf94ffb5400519b60dd4620b595a}\label{class_ogre_1_1_matrix3_a9c4cbf94ffb5400519b60dd4620b595a}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!SingularValueDecomposition@{SingularValueDecomposition}}
\index{SingularValueDecomposition@{SingularValueDecomposition}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{SingularValueDecomposition()}{SingularValueDecomposition()}}
{\footnotesize\ttfamily void Ogre\+::\+Matrix3\+::\+Singular\+Value\+Decomposition (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&}]{rkL,  }\item[{\mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&}]{rkS,  }\item[{\mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&}]{rkR }\end{DoxyParamCaption}) const}



Singular value decomposition. 

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a1efb2981c1a759e607e1431321d95524}\label{class_ogre_1_1_matrix3_a1efb2981c1a759e607e1431321d95524}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!SingularValueComposition@{SingularValueComposition}}
\index{SingularValueComposition@{SingularValueComposition}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{SingularValueComposition()}{SingularValueComposition()}}
{\footnotesize\ttfamily void Ogre\+::\+Matrix3\+::\+Singular\+Value\+Composition (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&}]{rkL,  }\item[{const \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&}]{rkS,  }\item[{const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&}]{rkR }\end{DoxyParamCaption})}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_add64f270c75286c4cafa3b242778573f}\label{class_ogre_1_1_matrix3_add64f270c75286c4cafa3b242778573f}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!Orthonormalize@{Orthonormalize}}
\index{Orthonormalize@{Orthonormalize}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{Orthonormalize()}{Orthonormalize()}}
{\footnotesize\ttfamily void Ogre\+::\+Matrix3\+::\+Orthonormalize (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Gram-\/\+Schmidt orthonormalization (applied to columns of rotation matrix) 

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a67d582443cb581c5deda833897452701}\label{class_ogre_1_1_matrix3_a67d582443cb581c5deda833897452701}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!QDUDecomposition@{QDUDecomposition}}
\index{QDUDecomposition@{QDUDecomposition}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{QDUDecomposition()}{QDUDecomposition()}}
{\footnotesize\ttfamily void Ogre\+::\+Matrix3\+::\+Q\+D\+U\+Decomposition (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&}]{rkQ,  }\item[{\mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&}]{rkD,  }\item[{\mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&}]{rkU }\end{DoxyParamCaption}) const}



Orthogonal Q, diagonal D, upper triangular U stored as (u01,u02,u12) 

\mbox{\Hypertarget{class_ogre_1_1_matrix3_adca9be180377c51c05a608df576a8e86}\label{class_ogre_1_1_matrix3_adca9be180377c51c05a608df576a8e86}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!SpectralNorm@{SpectralNorm}}
\index{SpectralNorm@{SpectralNorm}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{SpectralNorm()}{SpectralNorm()}}
{\footnotesize\ttfamily \mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} Ogre\+::\+Matrix3\+::\+Spectral\+Norm (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a383f39c81d80a866ca76594be498a251}\label{class_ogre_1_1_matrix3_a383f39c81d80a866ca76594be498a251}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!ToAngleAxis@{ToAngleAxis}}
\index{ToAngleAxis@{ToAngleAxis}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{ToAngleAxis()}{ToAngleAxis()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily void Ogre\+::\+Matrix3\+::\+To\+Angle\+Axis (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&}]{rk\+Axis,  }\item[{\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{rf\+Angle }\end{DoxyParamCaption}) const}



Note\+: Matrix must be orthonormal. 

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a392575c590b0d95a1422d1a8fb23260d}\label{class_ogre_1_1_matrix3_a392575c590b0d95a1422d1a8fb23260d}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!ToAngleAxis@{ToAngleAxis}}
\index{ToAngleAxis@{ToAngleAxis}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{ToAngleAxis()}{ToAngleAxis()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily void Ogre\+::\+Matrix3\+::\+To\+Angle\+Axis (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&}]{rk\+Axis,  }\item[{\mbox{\hyperlink{class_ogre_1_1_degree}{Degree}} \&}]{rf\+Angle }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_ab96e7684e128659752ec94031357e6ff}\label{class_ogre_1_1_matrix3_ab96e7684e128659752ec94031357e6ff}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!FromAngleAxis@{FromAngleAxis}}
\index{FromAngleAxis@{FromAngleAxis}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{FromAngleAxis()}{FromAngleAxis()}}
{\footnotesize\ttfamily void Ogre\+::\+Matrix3\+::\+From\+Angle\+Axis (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&}]{rk\+Axis,  }\item[{const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{f\+Radians }\end{DoxyParamCaption})}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_abd75bf95ae6a7c4294ea710769a77a32}\label{class_ogre_1_1_matrix3_abd75bf95ae6a7c4294ea710769a77a32}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!ToEulerAnglesXYZ@{ToEulerAnglesXYZ}}
\index{ToEulerAnglesXYZ@{ToEulerAnglesXYZ}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{ToEulerAnglesXYZ()}{ToEulerAnglesXYZ()}}
{\footnotesize\ttfamily bool Ogre\+::\+Matrix3\+::\+To\+Euler\+Angles\+X\+YZ (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{rf\+Y\+Angle,  }\item[{\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{rf\+P\+Angle,  }\item[{\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{rf\+R\+Angle }\end{DoxyParamCaption}) const}



The matrix must be orthonormal. 

The decomposition is yaw$\ast$pitch$\ast$roll where yaw is rotation about the Up vector, pitch is rotation about the Right axis, and roll is rotation about the Direction axis. \mbox{\Hypertarget{class_ogre_1_1_matrix3_a157ff70e8bd3a611389182497988e3f2}\label{class_ogre_1_1_matrix3_a157ff70e8bd3a611389182497988e3f2}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!ToEulerAnglesXZY@{ToEulerAnglesXZY}}
\index{ToEulerAnglesXZY@{ToEulerAnglesXZY}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{ToEulerAnglesXZY()}{ToEulerAnglesXZY()}}
{\footnotesize\ttfamily bool Ogre\+::\+Matrix3\+::\+To\+Euler\+Angles\+X\+ZY (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{rf\+Y\+Angle,  }\item[{\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{rf\+P\+Angle,  }\item[{\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{rf\+R\+Angle }\end{DoxyParamCaption}) const}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a799bda89a5b5e774aaeb6ba5197e61ba}\label{class_ogre_1_1_matrix3_a799bda89a5b5e774aaeb6ba5197e61ba}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!ToEulerAnglesYXZ@{ToEulerAnglesYXZ}}
\index{ToEulerAnglesYXZ@{ToEulerAnglesYXZ}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{ToEulerAnglesYXZ()}{ToEulerAnglesYXZ()}}
{\footnotesize\ttfamily bool Ogre\+::\+Matrix3\+::\+To\+Euler\+Angles\+Y\+XZ (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{rf\+Y\+Angle,  }\item[{\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{rf\+P\+Angle,  }\item[{\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{rf\+R\+Angle }\end{DoxyParamCaption}) const}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a458ebd34fea7df1eb987fee96b5ca2df}\label{class_ogre_1_1_matrix3_a458ebd34fea7df1eb987fee96b5ca2df}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!ToEulerAnglesYZX@{ToEulerAnglesYZX}}
\index{ToEulerAnglesYZX@{ToEulerAnglesYZX}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{ToEulerAnglesYZX()}{ToEulerAnglesYZX()}}
{\footnotesize\ttfamily bool Ogre\+::\+Matrix3\+::\+To\+Euler\+Angles\+Y\+ZX (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{rf\+Y\+Angle,  }\item[{\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{rf\+P\+Angle,  }\item[{\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{rf\+R\+Angle }\end{DoxyParamCaption}) const}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_ab76be51256dd3773aaaeba380f7969a8}\label{class_ogre_1_1_matrix3_ab76be51256dd3773aaaeba380f7969a8}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!ToEulerAnglesZXY@{ToEulerAnglesZXY}}
\index{ToEulerAnglesZXY@{ToEulerAnglesZXY}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{ToEulerAnglesZXY()}{ToEulerAnglesZXY()}}
{\footnotesize\ttfamily bool Ogre\+::\+Matrix3\+::\+To\+Euler\+Angles\+Z\+XY (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{rf\+Y\+Angle,  }\item[{\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{rf\+P\+Angle,  }\item[{\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{rf\+R\+Angle }\end{DoxyParamCaption}) const}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_ab1a1b9969db6acbb91178e9c25cfd28d}\label{class_ogre_1_1_matrix3_ab1a1b9969db6acbb91178e9c25cfd28d}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!ToEulerAnglesZYX@{ToEulerAnglesZYX}}
\index{ToEulerAnglesZYX@{ToEulerAnglesZYX}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{ToEulerAnglesZYX()}{ToEulerAnglesZYX()}}
{\footnotesize\ttfamily bool Ogre\+::\+Matrix3\+::\+To\+Euler\+Angles\+Z\+YX (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{rf\+Y\+Angle,  }\item[{\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{rf\+P\+Angle,  }\item[{\mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{rf\+R\+Angle }\end{DoxyParamCaption}) const}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a3f5abdecf648a54b164df112c7037ed7}\label{class_ogre_1_1_matrix3_a3f5abdecf648a54b164df112c7037ed7}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!FromEulerAnglesXYZ@{FromEulerAnglesXYZ}}
\index{FromEulerAnglesXYZ@{FromEulerAnglesXYZ}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{FromEulerAnglesXYZ()}{FromEulerAnglesXYZ()}}
{\footnotesize\ttfamily void Ogre\+::\+Matrix3\+::\+From\+Euler\+Angles\+X\+YZ (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{f\+Y\+Angle,  }\item[{const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{f\+P\+Angle,  }\item[{const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{f\+R\+Angle }\end{DoxyParamCaption})}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a209f31aa2e25d9b3d55d64d2d8304382}\label{class_ogre_1_1_matrix3_a209f31aa2e25d9b3d55d64d2d8304382}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!FromEulerAnglesXZY@{FromEulerAnglesXZY}}
\index{FromEulerAnglesXZY@{FromEulerAnglesXZY}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{FromEulerAnglesXZY()}{FromEulerAnglesXZY()}}
{\footnotesize\ttfamily void Ogre\+::\+Matrix3\+::\+From\+Euler\+Angles\+X\+ZY (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{f\+Y\+Angle,  }\item[{const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{f\+P\+Angle,  }\item[{const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{f\+R\+Angle }\end{DoxyParamCaption})}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a2e0ccd0f22689072aa4a64c7a441f694}\label{class_ogre_1_1_matrix3_a2e0ccd0f22689072aa4a64c7a441f694}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!FromEulerAnglesYXZ@{FromEulerAnglesYXZ}}
\index{FromEulerAnglesYXZ@{FromEulerAnglesYXZ}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{FromEulerAnglesYXZ()}{FromEulerAnglesYXZ()}}
{\footnotesize\ttfamily void Ogre\+::\+Matrix3\+::\+From\+Euler\+Angles\+Y\+XZ (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{f\+Y\+Angle,  }\item[{const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{f\+P\+Angle,  }\item[{const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{f\+R\+Angle }\end{DoxyParamCaption})}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a94b0b7264cc1572fff22f491ac6cc664}\label{class_ogre_1_1_matrix3_a94b0b7264cc1572fff22f491ac6cc664}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!FromEulerAnglesYZX@{FromEulerAnglesYZX}}
\index{FromEulerAnglesYZX@{FromEulerAnglesYZX}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{FromEulerAnglesYZX()}{FromEulerAnglesYZX()}}
{\footnotesize\ttfamily void Ogre\+::\+Matrix3\+::\+From\+Euler\+Angles\+Y\+ZX (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{f\+Y\+Angle,  }\item[{const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{f\+P\+Angle,  }\item[{const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{f\+R\+Angle }\end{DoxyParamCaption})}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_ac0148ffb86f185d7de044fd83e9647ce}\label{class_ogre_1_1_matrix3_ac0148ffb86f185d7de044fd83e9647ce}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!FromEulerAnglesZXY@{FromEulerAnglesZXY}}
\index{FromEulerAnglesZXY@{FromEulerAnglesZXY}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{FromEulerAnglesZXY()}{FromEulerAnglesZXY()}}
{\footnotesize\ttfamily void Ogre\+::\+Matrix3\+::\+From\+Euler\+Angles\+Z\+XY (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{f\+Y\+Angle,  }\item[{const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{f\+P\+Angle,  }\item[{const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{f\+R\+Angle }\end{DoxyParamCaption})}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a8308f99c3c13e067f016a45f26f15389}\label{class_ogre_1_1_matrix3_a8308f99c3c13e067f016a45f26f15389}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!FromEulerAnglesZYX@{FromEulerAnglesZYX}}
\index{FromEulerAnglesZYX@{FromEulerAnglesZYX}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{FromEulerAnglesZYX()}{FromEulerAnglesZYX()}}
{\footnotesize\ttfamily void Ogre\+::\+Matrix3\+::\+From\+Euler\+Angles\+Z\+YX (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{f\+Y\+Angle,  }\item[{const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{f\+P\+Angle,  }\item[{const \mbox{\hyperlink{class_ogre_1_1_radian}{Radian}} \&}]{f\+R\+Angle }\end{DoxyParamCaption})}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a7894ad662322338045ae796e418e9df2}\label{class_ogre_1_1_matrix3_a7894ad662322338045ae796e418e9df2}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!EigenSolveSymmetric@{EigenSolveSymmetric}}
\index{EigenSolveSymmetric@{EigenSolveSymmetric}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{EigenSolveSymmetric()}{EigenSolveSymmetric()}}
{\footnotesize\ttfamily void Ogre\+::\+Matrix3\+::\+Eigen\+Solve\+Symmetric (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}}]{af\+Eigenvalue\mbox{[}3\mbox{]},  }\item[{\mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}}}]{ak\+Eigenvector\mbox{[}3\mbox{]} }\end{DoxyParamCaption}) const}



Eigensolver, matrix must be symmetric. 

\mbox{\Hypertarget{class_ogre_1_1_matrix3_af1d217c48e8894227fa2cf2a7952cccc}\label{class_ogre_1_1_matrix3_af1d217c48e8894227fa2cf2a7952cccc}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!TensorProduct@{TensorProduct}}
\index{TensorProduct@{TensorProduct}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{TensorProduct()}{TensorProduct()}}
{\footnotesize\ttfamily static void Ogre\+::\+Matrix3\+::\+Tensor\+Product (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&}]{rkU,  }\item[{const \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&}]{rkV,  }\item[{\mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&}]{rk\+Product }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_adfc89d0edf39f55d9c8e30a8287efcb7}\label{class_ogre_1_1_matrix3_adfc89d0edf39f55d9c8e30a8287efcb7}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!hasScale@{hasScale}}
\index{hasScale@{hasScale}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{hasScale()}{hasScale()}}
{\footnotesize\ttfamily bool Ogre\+::\+Matrix3\+::has\+Scale (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Determines if this matrix involves a scaling. 



References Ogre\+::\+Math\+::\+Real\+Equal().



\doxysubsection{Friends And Related Function Documentation}
\mbox{\Hypertarget{class_ogre_1_1_matrix3_aed2829d86d2df8f9333d4c0087455880}\label{class_ogre_1_1_matrix3_aed2829d86d2df8f9333d4c0087455880}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!Matrix4@{Matrix4}}
\index{Matrix4@{Matrix4}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{Matrix4}{Matrix4}}
{\footnotesize\ttfamily friend class \mbox{\hyperlink{class_ogre_1_1_matrix4}{Matrix4}}\hspace{0.3cm}{\ttfamily [friend]}}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a9bc849d4891efcbb40253e790d8f5837}\label{class_ogre_1_1_matrix3_a9bc849d4891efcbb40253e790d8f5837}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!operator$\ast$@{operator$\ast$}}
\index{operator$\ast$@{operator$\ast$}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{operator$\ast$}{operator*}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \+\_\+\+Ogre\+Export friend \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} operator$\ast$ (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{namespace_ogre_ac94fc4008c1165dea017263fee56b273}{Vector3}} \&}]{rk\+Vector,  }\item[{const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&}]{rk\+Matrix }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}}



\mbox{\hyperlink{class_ogre_1_1_vector}{Vector}} $\ast$ matrix \mbox{[}1x3 $\ast$ 3x3 = 1x3\mbox{]}. 

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a475a485a770084ade97b8fd310b60011}\label{class_ogre_1_1_matrix3_a475a485a770084ade97b8fd310b60011}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!operator$\ast$@{operator$\ast$}}
\index{operator$\ast$@{operator$\ast$}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{operator$\ast$}{operator*}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \+\_\+\+Ogre\+Export friend \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} operator$\ast$ (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}}]{f\+Scalar,  }\item[{const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&}]{rk\+Matrix }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}}



Scalar $\ast$ matrix. 

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a82d787d8c98830db8a518a140e7ebbda}\label{class_ogre_1_1_matrix3_a82d787d8c98830db8a518a140e7ebbda}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!operator$<$$<$@{operator$<$$<$}}
\index{operator$<$$<$@{operator$<$$<$}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{operator$<$$<$}{operator<<}}
{\footnotesize\ttfamily std\+::ostream\& operator$<$$<$ (\begin{DoxyParamCaption}\item[{std\+::ostream \&}]{o,  }\item[{const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} \&}]{mat }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}}



Function for writing to a stream. 



\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{class_ogre_1_1_matrix3_a5bf17bf2239af2516e359dc6de22bf3d}\label{class_ogre_1_1_matrix3_a5bf17bf2239af2516e359dc6de22bf3d}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!EPSILON@{EPSILON}}
\index{EPSILON@{EPSILON}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{EPSILON}{EPSILON}}
{\footnotesize\ttfamily const \mbox{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}} Ogre\+::\+Matrix3\+::\+E\+P\+S\+I\+L\+ON\hspace{0.3cm}{\ttfamily [static]}}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_a4561d62d4d2c088ce2a3b6c3ec3d09af}\label{class_ogre_1_1_matrix3_a4561d62d4d2c088ce2a3b6c3ec3d09af}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!ZERO@{ZERO}}
\index{ZERO@{ZERO}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{ZERO}{ZERO}}
{\footnotesize\ttfamily const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} Ogre\+::\+Matrix3\+::\+Z\+E\+RO\hspace{0.3cm}{\ttfamily [static]}}

\mbox{\Hypertarget{class_ogre_1_1_matrix3_adcb2945d4f9b8995236be5a27dcfe343}\label{class_ogre_1_1_matrix3_adcb2945d4f9b8995236be5a27dcfe343}} 
\index{Ogre::Matrix3@{Ogre::Matrix3}!IDENTITY@{IDENTITY}}
\index{IDENTITY@{IDENTITY}!Ogre::Matrix3@{Ogre::Matrix3}}
\doxysubsubsection{\texorpdfstring{IDENTITY}{IDENTITY}}
{\footnotesize\ttfamily const \mbox{\hyperlink{class_ogre_1_1_matrix3}{Matrix3}} Ogre\+::\+Matrix3\+::\+I\+D\+E\+N\+T\+I\+TY\hspace{0.3cm}{\ttfamily [static]}}



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