\hypertarget{classACG_1_1GLMatrixT}{}\section{A\+CG\+:\+:G\+L\+MatrixT$<$ Scalar $>$ Class Template Reference}
\label{classACG_1_1GLMatrixT}\index{A\+C\+G\+::\+G\+L\+Matrix\+T$<$ Scalar $>$@{A\+C\+G\+::\+G\+L\+Matrix\+T$<$ Scalar $>$}}


4x4 matrix implementing Open\+GL commands.  




{\ttfamily \#include $<$Open\+Flipper/libs\+\_\+required/\+A\+C\+G/\+Math/\+G\+L\+Matrix\+T.\+hh$>$}

Inheritance diagram for A\+CG\+:\+:G\+L\+MatrixT$<$ Scalar $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classACG_1_1GLMatrixT}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_add6bdb8b19b62765a99f36d8a63e03b2}\label{classACG_1_1GLMatrixT_add6bdb8b19b62765a99f36d8a63e03b2}} 
typedef \hyperlink{classOpenMesh_1_1VectorT}{VectorT}$<$ Scalar, 3 $>$ {\bfseries Vec3}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a329b8aa0268a9b5d71cc744826cd13f2}\label{classACG_1_1GLMatrixT_a329b8aa0268a9b5d71cc744826cd13f2}} 
\hyperlink{classACG_1_1GLMatrixT_a329b8aa0268a9b5d71cc744826cd13f2}{G\+L\+MatrixT} ()
\begin{DoxyCompactList}\small\item\em constructor\+: uninitialized values \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a5e15d03a112de01c9f5c2476b80064cf}\label{classACG_1_1GLMatrixT_a5e15d03a112de01c9f5c2476b80064cf}} 
{\footnotesize template$<$class Other\+Scalar $>$ }\\\hyperlink{classACG_1_1GLMatrixT_a5e15d03a112de01c9f5c2476b80064cf}{G\+L\+MatrixT} (const \hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Other\+Scalar $>$ \&\+\_\+rhs)
\begin{DoxyCompactList}\small\item\em construct from other matrix type \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_aa3a8fd170d7e9d7b419e4f7e05be49f4}\label{classACG_1_1GLMatrixT_aa3a8fd170d7e9d7b419e4f7e05be49f4}} 
\hyperlink{classACG_1_1GLMatrixT_aa3a8fd170d7e9d7b419e4f7e05be49f4}{G\+L\+MatrixT} (const \hyperlink{classACG_1_1GLMatrixT}{G\+L\+MatrixT}$<$ Scalar $>$ \&\+\_\+rhs)
\begin{DoxyCompactList}\small\item\em copy constructor \end{DoxyCompactList}\item 
\hyperlink{classACG_1_1GLMatrixT_aa4cd528f4cc9b69cd56305491ef1417d}{G\+L\+MatrixT} (const Scalar \+\_\+array\mbox{[}16\mbox{]})
\item 
\hyperlink{classACG_1_1GLMatrixT_af3714d439cc41cddaeee8ec0ce54d47e}{G\+L\+MatrixT} (const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&col1, const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&col2, const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&col3)
\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_adddbbbcc5ced1766fe7bf496fe8a6885}\label{classACG_1_1GLMatrixT_adddbbbcc5ced1766fe7bf496fe8a6885}} 
\hyperlink{classACG_1_1GLMatrixT_adddbbbcc5ced1766fe7bf496fe8a6885}{$\sim$\+G\+L\+MatrixT} ()
\begin{DoxyCompactList}\small\item\em destructor \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a34e29f7201c8ae3f1a50f99569f8ec53}\label{classACG_1_1GLMatrixT_a34e29f7201c8ae3f1a50f99569f8ec53}} 
{\footnotesize template$<$typename other\+Scalar $>$ }\\\hyperlink{classACG_1_1GLMatrixT}{G\+L\+MatrixT}$<$ Scalar $>$ \& \hyperlink{classACG_1_1GLMatrixT_a34e29f7201c8ae3f1a50f99569f8ec53}{operator=} (const \hyperlink{classACG_1_1GLMatrixT}{G\+L\+MatrixT}$<$ other\+Scalar $>$ \&\+\_\+rhs)
\begin{DoxyCompactList}\small\item\em assignement from other matrix type \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_ace160787b3b0c1c17635a8a264584ed7}\label{classACG_1_1GLMatrixT_ace160787b3b0c1c17635a8a264584ed7}} 
{\footnotesize template$<$typename other\+Scalar $>$ }\\\hyperlink{classACG_1_1GLMatrixT}{G\+L\+MatrixT}$<$ Scalar $>$ \& \hyperlink{classACG_1_1GLMatrixT_ace160787b3b0c1c17635a8a264584ed7}{operator=} (const \hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ other\+Scalar $>$ \&\+\_\+rhs)
\begin{DoxyCompactList}\small\item\em assignement from other matrix type \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a0f47eb11ebbabff2109301c771c79a7f}\label{classACG_1_1GLMatrixT_a0f47eb11ebbabff2109301c771c79a7f}} 
void \hyperlink{classACG_1_1GLMatrixT_a0f47eb11ebbabff2109301c771c79a7f}{scale} (Scalar \+\_\+x, Scalar \+\_\+y, Scalar \+\_\+z, \hyperlink{namespaceACG_adda93d34c3eb7b2c524b28f383009a7c}{Multiply\+From} \+\_\+mult\+\_\+from=M\+U\+L\+T\+\_\+\+F\+R\+O\+M\+\_\+\+R\+I\+G\+HT)
\begin{DoxyCompactList}\small\item\em multiply self with scaling matrix (x,y,z) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a55fc460d47a8665c40e328db96dbf9b1}\label{classACG_1_1GLMatrixT_a55fc460d47a8665c40e328db96dbf9b1}} 
void \hyperlink{classACG_1_1GLMatrixT_a55fc460d47a8665c40e328db96dbf9b1}{scale} (const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&\+\_\+v, \hyperlink{namespaceACG_adda93d34c3eb7b2c524b28f383009a7c}{Multiply\+From} \+\_\+mult\+\_\+from=M\+U\+L\+T\+\_\+\+F\+R\+O\+M\+\_\+\+R\+I\+G\+HT)
\begin{DoxyCompactList}\small\item\em multiply self with scaling matrix (x,y,z) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a9e16fcd910d4dcf64b801e249518288d}\label{classACG_1_1GLMatrixT_a9e16fcd910d4dcf64b801e249518288d}} 
void \hyperlink{classACG_1_1GLMatrixT_a9e16fcd910d4dcf64b801e249518288d}{translate} (Scalar \+\_\+x, Scalar \+\_\+y, Scalar \+\_\+z, \hyperlink{namespaceACG_adda93d34c3eb7b2c524b28f383009a7c}{Multiply\+From} \+\_\+mult\+\_\+from=M\+U\+L\+T\+\_\+\+F\+R\+O\+M\+\_\+\+R\+I\+G\+HT)
\begin{DoxyCompactList}\small\item\em multiply self with translation matrix (x,y,z) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a58f3514e1cb21de67c5b93fc629081c3}\label{classACG_1_1GLMatrixT_a58f3514e1cb21de67c5b93fc629081c3}} 
void \hyperlink{classACG_1_1GLMatrixT_a58f3514e1cb21de67c5b93fc629081c3}{translate} (const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&\+\_\+v, \hyperlink{namespaceACG_adda93d34c3eb7b2c524b28f383009a7c}{Multiply\+From} \+\_\+mult\+\_\+from=M\+U\+L\+T\+\_\+\+F\+R\+O\+M\+\_\+\+R\+I\+G\+HT)
\begin{DoxyCompactList}\small\item\em multiply self with translation matrix (x,y,z) \end{DoxyCompactList}\item 
void \hyperlink{classACG_1_1GLMatrixT_a00a5672ec60726a386be957ee9bd4312}{rotate} (Scalar angle, Scalar x, Scalar y, Scalar z, \hyperlink{namespaceACG_adda93d34c3eb7b2c524b28f383009a7c}{Multiply\+From} \+\_\+mult\+\_\+from=M\+U\+L\+T\+\_\+\+F\+R\+O\+M\+\_\+\+R\+I\+G\+HT)
\item 
void \hyperlink{classACG_1_1GLMatrixT_a7cd30ee58b220154b9f5d7414a362bee}{rotate} (Scalar \+\_\+angle, const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&\+\_\+axis, \hyperlink{namespaceACG_adda93d34c3eb7b2c524b28f383009a7c}{Multiply\+From} \+\_\+mult\+\_\+from=M\+U\+L\+T\+\_\+\+F\+R\+O\+M\+\_\+\+R\+I\+G\+HT)
\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a33adf3931a134b3c0019dc4c124ee5ad}\label{classACG_1_1GLMatrixT_a33adf3931a134b3c0019dc4c124ee5ad}} 
void \hyperlink{classACG_1_1GLMatrixT_a33adf3931a134b3c0019dc4c124ee5ad}{rotateX} (Scalar \+\_\+angle, \hyperlink{namespaceACG_adda93d34c3eb7b2c524b28f383009a7c}{Multiply\+From} \+\_\+mult\+\_\+from=M\+U\+L\+T\+\_\+\+F\+R\+O\+M\+\_\+\+R\+I\+G\+HT)
\begin{DoxyCompactList}\small\item\em multiply self with a rotation matrix (angle in degree, x-\/axis) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a8bad76b1548884453a907eecd2cf4223}\label{classACG_1_1GLMatrixT_a8bad76b1548884453a907eecd2cf4223}} 
void \hyperlink{classACG_1_1GLMatrixT_a8bad76b1548884453a907eecd2cf4223}{rotateY} (Scalar \+\_\+angle, \hyperlink{namespaceACG_adda93d34c3eb7b2c524b28f383009a7c}{Multiply\+From} \+\_\+mult\+\_\+from=M\+U\+L\+T\+\_\+\+F\+R\+O\+M\+\_\+\+R\+I\+G\+HT)
\begin{DoxyCompactList}\small\item\em multiply self with a rotation matrix (angle in degree, y-\/axis) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_abb57f30c97c8ff5df5a8cc47befcca38}\label{classACG_1_1GLMatrixT_abb57f30c97c8ff5df5a8cc47befcca38}} 
void \hyperlink{classACG_1_1GLMatrixT_abb57f30c97c8ff5df5a8cc47befcca38}{rotateZ} (Scalar \+\_\+angle, \hyperlink{namespaceACG_adda93d34c3eb7b2c524b28f383009a7c}{Multiply\+From} \+\_\+mult\+\_\+from=M\+U\+L\+T\+\_\+\+F\+R\+O\+M\+\_\+\+R\+I\+G\+HT)
\begin{DoxyCompactList}\small\item\em multiply self with a rotation matrix (angle in degree, z-\/axis) \end{DoxyCompactList}\item 
void \hyperlink{classACG_1_1GLMatrixT_a8a3b535f32747eec560538a3afe98336}{look\+At} (const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&eye, const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&center, const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&up)
\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_abe7e11cdf642910bf552e802b7b8347e}\label{classACG_1_1GLMatrixT_abe7e11cdf642910bf552e802b7b8347e}} 
void \hyperlink{classACG_1_1GLMatrixT_abe7e11cdf642910bf552e802b7b8347e}{inverse\+\_\+look\+At} (const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&eye, const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&center, const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&up)
\begin{DoxyCompactList}\small\item\em multiply self from left with inverse look\+At matrix \end{DoxyCompactList}\item 
void \hyperlink{classACG_1_1GLMatrixT_a94a91a351c96ce8c79d04c5293ec9ec1}{perspective} (Scalar fovY, Scalar aspect, Scalar near\+\_\+plane, Scalar far\+\_\+plane)
\begin{DoxyCompactList}\small\item\em multiply self with a perspective projection matrix \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_ac38d19ae0815471d361337719959eeea}\label{classACG_1_1GLMatrixT_ac38d19ae0815471d361337719959eeea}} 
void \hyperlink{classACG_1_1GLMatrixT_ac38d19ae0815471d361337719959eeea}{inverse\+\_\+perspective} (Scalar fovY, Scalar aspect, Scalar near\+\_\+plane, Scalar far\+\_\+plane)
\begin{DoxyCompactList}\small\item\em multiply self from left with inverse of perspective projection matrix \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a1d004de8dcf25c793be41293c5c1b8dd}\label{classACG_1_1GLMatrixT_a1d004de8dcf25c793be41293c5c1b8dd}} 
void \hyperlink{classACG_1_1GLMatrixT_a1d004de8dcf25c793be41293c5c1b8dd}{frustum} (Scalar left, Scalar right, Scalar bottom, Scalar top, Scalar near\+\_\+plane, Scalar far\+\_\+plane)
\begin{DoxyCompactList}\small\item\em multiply self with a perspective projection matrix \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a6912ccbd4f0305fc06b3120823ed7358}\label{classACG_1_1GLMatrixT_a6912ccbd4f0305fc06b3120823ed7358}} 
void \hyperlink{classACG_1_1GLMatrixT_a6912ccbd4f0305fc06b3120823ed7358}{inverse\+\_\+frustum} (Scalar left, Scalar right, Scalar bottom, Scalar top, Scalar near\+\_\+plane, Scalar far\+\_\+plane)
\begin{DoxyCompactList}\small\item\em multiply self from left with inverse of perspective projection matrix \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a99ad49c427c62b07a6fa4ffd7a47d3aa}\label{classACG_1_1GLMatrixT_a99ad49c427c62b07a6fa4ffd7a47d3aa}} 
void \hyperlink{classACG_1_1GLMatrixT_a99ad49c427c62b07a6fa4ffd7a47d3aa}{ortho} (Scalar left, Scalar right, Scalar bottom, Scalar top, Scalar near\+\_\+plane, Scalar far\+\_\+plane)
\begin{DoxyCompactList}\small\item\em multiply self with orthographic projection matrix \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a4a1d0f269af909262ffad256ba10e5b0}\label{classACG_1_1GLMatrixT_a4a1d0f269af909262ffad256ba10e5b0}} 
void \hyperlink{classACG_1_1GLMatrixT_a4a1d0f269af909262ffad256ba10e5b0}{inverse\+\_\+ortho} (Scalar left, Scalar right, Scalar bottom, Scalar top, Scalar near\+\_\+plane, Scalar far\+\_\+plane)
\begin{DoxyCompactList}\small\item\em multiply self from left with inverse orthographic projection matrix \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a9a3ae5fccff97ca36bb1cede57bd8d48}\label{classACG_1_1GLMatrixT_a9a3ae5fccff97ca36bb1cede57bd8d48}} 
\hyperlink{classOpenMesh_1_1VectorT}{VectorT}$<$ Scalar, 2 $>$ \hyperlink{classACG_1_1GLMatrixT_a9a3ae5fccff97ca36bb1cede57bd8d48}{extract\+\_\+planes\+\_\+perspective} () const
\begin{DoxyCompactList}\small\item\em extract near and far clipping planes from a perspective projection matrix \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a3446f5b03ec9dde1c389032489f502b3}\label{classACG_1_1GLMatrixT_a3446f5b03ec9dde1c389032489f502b3}} 
\hyperlink{classOpenMesh_1_1VectorT}{VectorT}$<$ Scalar, 2 $>$ \hyperlink{classACG_1_1GLMatrixT_a3446f5b03ec9dde1c389032489f502b3}{extract\+\_\+planes\+\_\+ortho} () const
\begin{DoxyCompactList}\small\item\em extract near and far clipping planes from an orthographic projection matrix \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_ae749245d4a6fd4ac0339aace05ac8220}\label{classACG_1_1GLMatrixT_ae749245d4a6fd4ac0339aace05ac8220}} 
bool \hyperlink{classACG_1_1GLMatrixT_ae749245d4a6fd4ac0339aace05ac8220}{is\+Perspective} () const
\begin{DoxyCompactList}\small\item\em check if the matrix is a perspective projection matrix \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a1e867a956287aaecfa06c341823f6305}\label{classACG_1_1GLMatrixT_a1e867a956287aaecfa06c341823f6305}} 
bool \hyperlink{classACG_1_1GLMatrixT_a1e867a956287aaecfa06c341823f6305}{is\+Ortho} () const
\begin{DoxyCompactList}\small\item\em check if the matrix is an orthographic projection matrix \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_ad069453f421c9501d807aee08b84cde9}\label{classACG_1_1GLMatrixT_ad069453f421c9501d807aee08b84cde9}} 
\hyperlink{classOpenMesh_1_1VectorT}{VectorT}$<$ Scalar, 2 $>$ \hyperlink{classACG_1_1GLMatrixT_ad069453f421c9501d807aee08b84cde9}{extract\+\_\+planes} () const
\begin{DoxyCompactList}\small\item\em detect type of projection matrix and extract near and far clipping planes \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_af362191b7b5a60d2bc9fc52bab4e894e}\label{classACG_1_1GLMatrixT_af362191b7b5a60d2bc9fc52bab4e894e}} 
\hyperlink{classACG_1_1GLMatrixT}{G\+L\+MatrixT} \& {\bfseries operator+=} (const \hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs)
\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a00b4c650ad052382b6ade1deefbff097}\label{classACG_1_1GLMatrixT_a00b4c650ad052382b6ade1deefbff097}} 
\hyperlink{classACG_1_1GLMatrixT}{G\+L\+MatrixT} \& {\bfseries operator-\/=} (const \hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs)
\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_aac03f1e614d81874ce71c808a160435f}\label{classACG_1_1GLMatrixT_aac03f1e614d81874ce71c808a160435f}} 
\hyperlink{classACG_1_1GLMatrixT}{G\+L\+MatrixT} \& {\bfseries operator$\ast$=} (const \hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs)
\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a9b19863ad825ba2e56a098eb01a7beb8}\label{classACG_1_1GLMatrixT_a9b19863ad825ba2e56a098eb01a7beb8}} 
\hyperlink{classACG_1_1GLMatrixT}{G\+L\+MatrixT} \& {\bfseries left\+Mult} (const \hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs)
\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_abd6a30f2c9b28c75e73b78263206f40c}\label{classACG_1_1GLMatrixT_abd6a30f2c9b28c75e73b78263206f40c}} 
\hyperlink{classACG_1_1GLMatrixT}{G\+L\+MatrixT} {\bfseries operator+} (const \hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs) const
\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a9328920fe3fcce3f972f2341969d6df1}\label{classACG_1_1GLMatrixT_a9328920fe3fcce3f972f2341969d6df1}} 
\hyperlink{classACG_1_1GLMatrixT}{G\+L\+MatrixT} {\bfseries operator-\/} (const \hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs) const
\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_ab7c32ff76ae0de103daa760b3a9121d7}\label{classACG_1_1GLMatrixT_ab7c32ff76ae0de103daa760b3a9121d7}} 
\hyperlink{classACG_1_1GLMatrixT}{G\+L\+MatrixT} {\bfseries operator$\ast$} (const \hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs) const
\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a3e41818d53495a77d8a3e74d55b622d8}\label{classACG_1_1GLMatrixT_a3e41818d53495a77d8a3e74d55b622d8}} 
{\footnotesize template$<$typename T $>$ }\\\hyperlink{classOpenMesh_1_1VectorT}{VectorT}$<$ T, 4 $>$ {\bfseries operator$\ast$} (const \hyperlink{classOpenMesh_1_1VectorT}{VectorT}$<$ T, 4 $>$ \&\+\_\+v) const
\end{DoxyCompactItemize}
\subsection*{Private Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_abfaedeb833ebd085421bd1cdd93520d8}\label{classACG_1_1GLMatrixT_abfaedeb833ebd085421bd1cdd93520d8}} 
enum {\bfseries Axis} \{ {\bfseries X}, 
{\bfseries Y}, 
{\bfseries Z}
 \}
\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1GLMatrixT_aedca4c9e70ca913905fd6915ecaf6fe7}\label{classACG_1_1GLMatrixT_aedca4c9e70ca913905fd6915ecaf6fe7}} 
void {\bfseries rotate\+X\+YZ} (Axis \+\_\+axis, Scalar \+\_\+angle, \hyperlink{namespaceACG_adda93d34c3eb7b2c524b28f383009a7c}{Multiply\+From} \+\_\+mult\+\_\+from)
\end{DoxyCompactItemize}
\subsection*{Additional Inherited Members}


\subsection{Detailed Description}
\subsubsection*{template$<$class Scalar$>$\newline
class A\+C\+G\+::\+G\+L\+Matrix\+T$<$ Scalar $>$}

4x4 matrix implementing Open\+GL commands. 

Definition at line 79 of file G\+L\+Matrix\+T.\+hh.



\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classACG_1_1GLMatrixT_aa4cd528f4cc9b69cd56305491ef1417d}\label{classACG_1_1GLMatrixT_aa4cd528f4cc9b69cd56305491ef1417d}} 
\index{A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+G\+L\+MatrixT}!G\+L\+MatrixT@{G\+L\+MatrixT}}
\index{G\+L\+MatrixT@{G\+L\+MatrixT}!A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+G\+L\+MatrixT}}
\subsubsection{\texorpdfstring{G\+L\+Matrix\+T()}{GLMatrixT()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily template$<$class Scalar$>$ \\
\hyperlink{classACG_1_1GLMatrixT}{A\+C\+G\+::\+G\+L\+MatrixT}$<$ Scalar $>$\+::\hyperlink{classACG_1_1GLMatrixT}{G\+L\+MatrixT} (\begin{DoxyParamCaption}\item[{const Scalar}]{\+\_\+array\mbox{[}16\mbox{]} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

setup matrix using an array of N$\ast$N scalar values. elements are ordered \textquotesingle{}column first\textquotesingle{} (like Open\+GL) 

Definition at line 102 of file G\+L\+Matrix\+T.\+hh.

\mbox{\Hypertarget{classACG_1_1GLMatrixT_af3714d439cc41cddaeee8ec0ce54d47e}\label{classACG_1_1GLMatrixT_af3714d439cc41cddaeee8ec0ce54d47e}} 
\index{A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+G\+L\+MatrixT}!G\+L\+MatrixT@{G\+L\+MatrixT}}
\index{G\+L\+MatrixT@{G\+L\+MatrixT}!A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+G\+L\+MatrixT}}
\subsubsection{\texorpdfstring{G\+L\+Matrix\+T()}{GLMatrixT()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily template$<$class Scalar$>$ \\
\hyperlink{classACG_1_1GLMatrixT}{A\+C\+G\+::\+G\+L\+MatrixT}$<$ Scalar $>$\+::\hyperlink{classACG_1_1GLMatrixT}{G\+L\+MatrixT} (\begin{DoxyParamCaption}\item[{const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&}]{col1,  }\item[{const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&}]{col2,  }\item[{const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&}]{col3 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Initialize an affine matrix from column vectors. 

Definition at line 107 of file G\+L\+Matrix\+T.\+hh.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{classACG_1_1GLMatrixT_a8a3b535f32747eec560538a3afe98336}\label{classACG_1_1GLMatrixT_a8a3b535f32747eec560538a3afe98336}} 
\index{A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+G\+L\+MatrixT}!look\+At@{look\+At}}
\index{look\+At@{look\+At}!A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+G\+L\+MatrixT}}
\subsubsection{\texorpdfstring{look\+At()}{lookAt()}}
{\footnotesize\ttfamily template$<$typename Scalar $>$ \\
void \hyperlink{classACG_1_1GLMatrixT}{A\+C\+G\+::\+G\+L\+MatrixT}$<$ Scalar $>$\+::look\+At (\begin{DoxyParamCaption}\item[{const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&}]{eye,  }\item[{const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&}]{center,  }\item[{const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&}]{up }\end{DoxyParamCaption})}

multiply self with a viewing transformation given by eye position, reference point (center) and an up vector. (similar to glu\+Look\+At) 

Definition at line 216 of file G\+L\+Matrix\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1GLMatrixT_a94a91a351c96ce8c79d04c5293ec9ec1}\label{classACG_1_1GLMatrixT_a94a91a351c96ce8c79d04c5293ec9ec1}} 
\index{A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+G\+L\+MatrixT}!perspective@{perspective}}
\index{perspective@{perspective}!A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+G\+L\+MatrixT}}
\subsubsection{\texorpdfstring{perspective()}{perspective()}}
{\footnotesize\ttfamily template$<$typename Scalar$>$ \\
void \hyperlink{classACG_1_1GLMatrixT}{A\+C\+G\+::\+G\+L\+MatrixT}$<$ Scalar $>$\+::perspective (\begin{DoxyParamCaption}\item[{Scalar}]{fovY,  }\item[{Scalar}]{aspect,  }\item[{Scalar}]{near\+\_\+plane,  }\item[{Scalar}]{far\+\_\+plane }\end{DoxyParamCaption})}



multiply self with a perspective projection matrix 

The specified perspective projection will be multiplied with the matrix already stored in this matix.


\begin{DoxyParams}{Parameters}
{\em fovY} & Half of the Field of View in y direction angle (Degree) \\
\hline
{\em aspect} & aspect ratio\+: x = y $\ast$ aspect \\
\hline
{\em near\+\_\+plane} & Distance to near plane ( $>$ 0 ) \\
\hline
{\em far\+\_\+plane} & Distance to far plane ( $>$ near\+\_\+plane $>$ 0 ) \\
\hline
\end{DoxyParams}


Definition at line 277 of file G\+L\+Matrix\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1GLMatrixT_a00a5672ec60726a386be957ee9bd4312}\label{classACG_1_1GLMatrixT_a00a5672ec60726a386be957ee9bd4312}} 
\index{A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+G\+L\+MatrixT}!rotate@{rotate}}
\index{rotate@{rotate}!A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+G\+L\+MatrixT}}
\subsubsection{\texorpdfstring{rotate()}{rotate()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily template$<$typename Scalar$>$ \\
void \hyperlink{classACG_1_1GLMatrixT}{A\+C\+G\+::\+G\+L\+MatrixT}$<$ Scalar $>$\+::rotate (\begin{DoxyParamCaption}\item[{Scalar}]{angle,  }\item[{Scalar}]{x,  }\item[{Scalar}]{y,  }\item[{Scalar}]{z,  }\item[{\hyperlink{namespaceACG_adda93d34c3eb7b2c524b28f383009a7c}{Multiply\+From}}]{\+\_\+mult\+\_\+from = {\ttfamily MULT\+\_\+FROM\+\_\+RIGHT} }\end{DoxyParamCaption})}

multiply self with a rotation matrix (angle in degree, arbitrary axis given by xyz) 

Definition at line 155 of file G\+L\+Matrix\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1GLMatrixT_a7cd30ee58b220154b9f5d7414a362bee}\label{classACG_1_1GLMatrixT_a7cd30ee58b220154b9f5d7414a362bee}} 
\index{A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+G\+L\+MatrixT}!rotate@{rotate}}
\index{rotate@{rotate}!A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+G\+L\+MatrixT}}
\subsubsection{\texorpdfstring{rotate()}{rotate()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily template$<$class Scalar$>$ \\
void \hyperlink{classACG_1_1GLMatrixT}{A\+C\+G\+::\+G\+L\+MatrixT}$<$ Scalar $>$\+::rotate (\begin{DoxyParamCaption}\item[{Scalar}]{\+\_\+angle,  }\item[{const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&}]{\+\_\+axis,  }\item[{\hyperlink{namespaceACG_adda93d34c3eb7b2c524b28f383009a7c}{Multiply\+From}}]{\+\_\+mult\+\_\+from = {\ttfamily MULT\+\_\+FROM\+\_\+RIGHT} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

multiply self with a rotation matrix (angle in degree, arbitrary axis given by xyz) 

Definition at line 184 of file G\+L\+Matrix\+T.\+hh.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
Open\+Flipper/libs\+\_\+required/\+A\+C\+G/\+Math/G\+L\+Matrix\+T.\+hh\item 
Open\+Flipper/libs\+\_\+required/\+A\+C\+G/\+Math/G\+L\+Matrix\+T\+\_\+impl.\+hh\end{DoxyCompactItemize}
