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


4x4 matrix implementing Open\+GL commands.  




{\ttfamily \#include $<$Open\+Flipper/libs\+\_\+required/\+A\+C\+G/\+Scenegraph/\+Mesh\+Node2\+T\+\_\+impl.\+hh$>$}

Inheritance diagram for A\+CG\+:\+:Scene\+Graph\+:\+:A\+CG\+:\+:G\+L\+MatrixT$<$ Scalar $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a12836c7005d1503d6623e40b4e1f6d7d}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a12836c7005d1503d6623e40b4e1f6d7d}} 
typedef \hyperlink{classOpenMesh_1_1VectorT}{VectorT}$<$ Scalar, 3 $>$ {\bfseries Vec3}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a679d79b2bf0cee55750557f04614e843}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a679d79b2bf0cee55750557f04614e843}} 
\hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a679d79b2bf0cee55750557f04614e843}{G\+L\+MatrixT} ()
\begin{DoxyCompactList}\small\item\em constructor\+: uninitialized values \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a8c6453a3b144e2705499c7cfdcc41f51}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a8c6453a3b144e2705499c7cfdcc41f51}} 
{\footnotesize template$<$class Other\+Scalar $>$ }\\\hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a8c6453a3b144e2705499c7cfdcc41f51}{G\+L\+MatrixT} (const \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Other\+Scalar $>$ \&\+\_\+rhs)
\begin{DoxyCompactList}\small\item\em construct from other matrix type \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a9cadc9f6ccf27621a5e368e4be08f4bb}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a9cadc9f6ccf27621a5e368e4be08f4bb}} 
\hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a9cadc9f6ccf27621a5e368e4be08f4bb}{G\+L\+MatrixT} (const \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT}{G\+L\+MatrixT}$<$ Scalar $>$ \&\+\_\+rhs)
\begin{DoxyCompactList}\small\item\em copy constructor \end{DoxyCompactList}\item 
\hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a3d4e66b038afde3d1dd182d80db27c29}{G\+L\+MatrixT} (const Scalar \+\_\+array\mbox{[}16\mbox{]})
\item 
\hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a3329953f12449d8512b2b4dcb8a41948}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_a503f5b79ceae7a472c0e430ee4c13d9a}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a503f5b79ceae7a472c0e430ee4c13d9a}} 
\hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a503f5b79ceae7a472c0e430ee4c13d9a}{$\sim$\+G\+L\+MatrixT} ()
\begin{DoxyCompactList}\small\item\em destructor \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a297109567bd1370c83b8ad3977e05057}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a297109567bd1370c83b8ad3977e05057}} 
{\footnotesize template$<$typename other\+Scalar $>$ }\\\hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT}{G\+L\+MatrixT}$<$ Scalar $>$ \& \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a297109567bd1370c83b8ad3977e05057}{operator=} (const \hyperlink{classACG_1_1SceneGraph_1_1ACG_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_1SceneGraph_1_1ACG_1_1GLMatrixT_afbff8abadc4ddca48d11d4adb623ef43}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_afbff8abadc4ddca48d11d4adb623ef43}} 
{\footnotesize template$<$typename other\+Scalar $>$ }\\\hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT}{G\+L\+MatrixT}$<$ Scalar $>$ \& \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_afbff8abadc4ddca48d11d4adb623ef43}{operator=} (const \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1Matrix4x4T}{Matrix4x4T}$<$ other\+Scalar $>$ \&\+\_\+rhs)
\begin{DoxyCompactList}\small\item\em assignement from other matrix type \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_aed360339d498922dfb69068facb8a293}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_aed360339d498922dfb69068facb8a293}} 
void \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_aed360339d498922dfb69068facb8a293}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_aeaa8643dacac9458ac770069037ac551}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_aeaa8643dacac9458ac770069037ac551}} 
void \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_aeaa8643dacac9458ac770069037ac551}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_a8b474c55fbead93b322f23954b086032}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a8b474c55fbead93b322f23954b086032}} 
void \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a8b474c55fbead93b322f23954b086032}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_ab5651bf659b139062f429c2f94a0ec97}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_ab5651bf659b139062f429c2f94a0ec97}} 
void \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_ab5651bf659b139062f429c2f94a0ec97}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_a729020c7169f50fd5f6193966207684d}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_ae40854b1f36f031cb2ea03f72d66b78e}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_ab392f9c54551af169588362b3abe6ca0}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_ab392f9c54551af169588362b3abe6ca0}} 
void \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_ab392f9c54551af169588362b3abe6ca0}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_a4483d776dca3e86d4937f44fa993043d}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a4483d776dca3e86d4937f44fa993043d}} 
void \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a4483d776dca3e86d4937f44fa993043d}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_af4c80daba26fd4f77750247bcc61d7d1}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_af4c80daba26fd4f77750247bcc61d7d1}} 
void \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_af4c80daba26fd4f77750247bcc61d7d1}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_a9d9bf7cb0bca54aa00898417b271e3b4}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_a8df3e1fb4735f8ce03a0685318f46773}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a8df3e1fb4735f8ce03a0685318f46773}} 
void \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a8df3e1fb4735f8ce03a0685318f46773}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_aeaba4e795972aff3a37975202a3718ef}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_abe6d7ece282dcaaa581760ffe5dd3df0}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_abe6d7ece282dcaaa581760ffe5dd3df0}} 
void \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_abe6d7ece282dcaaa581760ffe5dd3df0}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_ac7dd9510381786530d7f3046388554e0}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_ac7dd9510381786530d7f3046388554e0}} 
void \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_ac7dd9510381786530d7f3046388554e0}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_a8110d12ab0619d3be127d3cbebc648b0}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a8110d12ab0619d3be127d3cbebc648b0}} 
void \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a8110d12ab0619d3be127d3cbebc648b0}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_aff838d685ccf2e7ff53bff5d021f2428}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_aff838d685ccf2e7ff53bff5d021f2428}} 
void \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_aff838d685ccf2e7ff53bff5d021f2428}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_a79fa6d9ee33d6b2829e24b77bf68ba6c}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a79fa6d9ee33d6b2829e24b77bf68ba6c}} 
void \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a79fa6d9ee33d6b2829e24b77bf68ba6c}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_a1cec48875b67c2bbd696d3b24e61f141}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a1cec48875b67c2bbd696d3b24e61f141}} 
\hyperlink{classOpenMesh_1_1VectorT}{VectorT}$<$ Scalar, 2 $>$ \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a1cec48875b67c2bbd696d3b24e61f141}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_aa5142cd06732b1a4cc5675ba72c822f7}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_aa5142cd06732b1a4cc5675ba72c822f7}} 
\hyperlink{classOpenMesh_1_1VectorT}{VectorT}$<$ Scalar, 2 $>$ \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_aa5142cd06732b1a4cc5675ba72c822f7}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_a2574cc6b08b51168b168d224fcb845c2}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a2574cc6b08b51168b168d224fcb845c2}} 
bool \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a2574cc6b08b51168b168d224fcb845c2}{is\+Perspective} () const
\begin{DoxyCompactList}\small\item\em check if the matrix is a perspective projection matrix \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a31bb6ab2c4b02e12b61dc6b6a9de61ce}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a31bb6ab2c4b02e12b61dc6b6a9de61ce}} 
bool \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a31bb6ab2c4b02e12b61dc6b6a9de61ce}{is\+Ortho} () const
\begin{DoxyCompactList}\small\item\em check if the matrix is an orthographic projection matrix \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a37ce44e560bc8e123a4ff74d1752ae08}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a37ce44e560bc8e123a4ff74d1752ae08}} 
\hyperlink{classOpenMesh_1_1VectorT}{VectorT}$<$ Scalar, 2 $>$ \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a37ce44e560bc8e123a4ff74d1752ae08}{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_1SceneGraph_1_1ACG_1_1GLMatrixT_a7b73eb688559bb7c9200412abbdf8629}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a7b73eb688559bb7c9200412abbdf8629}} 
\hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT}{G\+L\+MatrixT} \& {\bfseries operator+=} (const \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs)
\item 
\mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a3de60a37c73f62b310d2d1ce77c9d6ec}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a3de60a37c73f62b310d2d1ce77c9d6ec}} 
\hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT}{G\+L\+MatrixT} \& {\bfseries operator-\/=} (const \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs)
\item 
\mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_affccc707e42b423a2e96738a80b61d21}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_affccc707e42b423a2e96738a80b61d21}} 
\hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT}{G\+L\+MatrixT} \& {\bfseries operator$\ast$=} (const \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs)
\item 
\mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_aeaec387496eb38d604159d20a8013cbf}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_aeaec387496eb38d604159d20a8013cbf}} 
\hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT}{G\+L\+MatrixT} \& {\bfseries left\+Mult} (const \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs)
\item 
\mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_ab2526b98c166e01790dd44564af526c6}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_ab2526b98c166e01790dd44564af526c6}} 
\hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT}{G\+L\+MatrixT} {\bfseries operator+} (const \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs) const
\item 
\mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a804e0041d05fae381ad448fcaea77eeb}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a804e0041d05fae381ad448fcaea77eeb}} 
\hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT}{G\+L\+MatrixT} {\bfseries operator-\/} (const \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs) const
\item 
\mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a87025279d980fe257de1c88df21c88c9}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a87025279d980fe257de1c88df21c88c9}} 
\hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT}{G\+L\+MatrixT} {\bfseries operator$\ast$} (const \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs) const
\item 
\mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a6cffc9a37c3a9449a04be71b1ae21150}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a6cffc9a37c3a9449a04be71b1ae21150}} 
{\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_1SceneGraph_1_1ACG_1_1GLMatrixT_ad444923605665a5a4029c82e020d97c7}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_ad444923605665a5a4029c82e020d97c7}} 
enum {\bfseries Axis} \{ {\bfseries X}, 
{\bfseries Y}, 
{\bfseries Z}
 \}
\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a9f296cb3fa4a308b7d3c9e466b86629e}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a9f296cb3fa4a308b7d3c9e466b86629e}} 
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\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+Matrix\+T$<$ Scalar $>$}

4x4 matrix implementing Open\+GL commands. 

Definition at line 79 of file Mesh\+Node2\+T\+\_\+impl.\+hh.



\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a3d4e66b038afde3d1dd182d80db27c29}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a3d4e66b038afde3d1dd182d80db27c29}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT}!G\+L\+MatrixT@{G\+L\+MatrixT}}
\index{G\+L\+MatrixT@{G\+L\+MatrixT}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+Scene\+Graph\+::\+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_1SceneGraph_1_1ACG_1_1GLMatrixT}{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT}$<$ Scalar $>$\+::\hyperlink{classACG_1_1SceneGraph_1_1ACG_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 Mesh\+Node2\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a3329953f12449d8512b2b4dcb8a41948}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a3329953f12449d8512b2b4dcb8a41948}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT}!G\+L\+MatrixT@{G\+L\+MatrixT}}
\index{G\+L\+MatrixT@{G\+L\+MatrixT}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+Scene\+Graph\+::\+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_1SceneGraph_1_1ACG_1_1GLMatrixT}{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT}$<$ Scalar $>$\+::\hyperlink{classACG_1_1SceneGraph_1_1ACG_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 Mesh\+Node2\+T\+\_\+impl.\+hh.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a9d9bf7cb0bca54aa00898417b271e3b4}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a9d9bf7cb0bca54aa00898417b271e3b4}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT}!look\+At@{look\+At}}
\index{look\+At@{look\+At}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT}}
\subsubsection{\texorpdfstring{look\+At()}{lookAt()}}
{\footnotesize\ttfamily template$<$class Scalar$>$ \\
void \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT}{A\+C\+G\+::\+Scene\+Graph\+::\+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) \mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_aeaba4e795972aff3a37975202a3718ef}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_aeaba4e795972aff3a37975202a3718ef}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT}!perspective@{perspective}}
\index{perspective@{perspective}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT}}
\subsubsection{\texorpdfstring{perspective()}{perspective()}}
{\footnotesize\ttfamily template$<$class Scalar$>$ \\
void \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT}{A\+C\+G\+::\+Scene\+Graph\+::\+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}
\mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a729020c7169f50fd5f6193966207684d}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_a729020c7169f50fd5f6193966207684d}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT}!rotate@{rotate}}
\index{rotate@{rotate}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT}}
\subsubsection{\texorpdfstring{rotate()}{rotate()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily template$<$class Scalar$>$ \\
void \hyperlink{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT}{A\+C\+G\+::\+Scene\+Graph\+::\+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) \mbox{\Hypertarget{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_ae40854b1f36f031cb2ea03f72d66b78e}\label{classACG_1_1SceneGraph_1_1ACG_1_1GLMatrixT_ae40854b1f36f031cb2ea03f72d66b78e}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT}!rotate@{rotate}}
\index{rotate@{rotate}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+G\+L\+MatrixT@{A\+C\+G\+::\+Scene\+Graph\+::\+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_1SceneGraph_1_1ACG_1_1GLMatrixT}{A\+C\+G\+::\+Scene\+Graph\+::\+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 Mesh\+Node2\+T\+\_\+impl.\+hh.



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