\hypertarget{a07852}{}\section{A\+CG\+:\+:Scene\+Graph\+:\+:A\+CG\+:\+:Matrix4x4T$<$ Scalar $>$ Class Template Reference}
\label{a07852}\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4\+T$<$ Scalar $>$@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4\+T$<$ Scalar $>$}}


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

Inheritance diagram for A\+CG\+:\+:Scene\+Graph\+:\+:A\+CG\+:\+:Matrix4x4T$<$ Scalar $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{a07852}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a07852_aef20c73689f48be3255cfacfa55df47e}\label{a07852_aef20c73689f48be3255cfacfa55df47e}} 
\hyperlink{a07852_aef20c73689f48be3255cfacfa55df47e}{Matrix4x4T} ()
\begin{DoxyCompactList}\small\item\em constructor\+: uninitialized values \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_ac774e40e30593b98cb74149b921ec501}\label{a07852_ac774e40e30593b98cb74149b921ec501}} 
{\footnotesize template$<$class Other\+Scalar $>$ }\\\hyperlink{a07852_ac774e40e30593b98cb74149b921ec501}{Matrix4x4T} (const \hyperlink{a07852}{Matrix4x4T}$<$ Other\+Scalar $>$ \&\+\_\+rhs)
\begin{DoxyCompactList}\small\item\em construct from other matrix type \end{DoxyCompactList}\item 
\hyperlink{a07852_a6c9341b3be1a5fc6421e4df09fc1fc17}{Matrix4x4T} (const Scalar \+\_\+array\mbox{[}16\mbox{]})
\item 
\mbox{\Hypertarget{a07852_a9ecb308ca86ef1de40c4d118f82e40a2}\label{a07852_a9ecb308ca86ef1de40c4d118f82e40a2}} 
\hyperlink{a07852_a9ecb308ca86ef1de40c4d118f82e40a2}{$\sim$\+Matrix4x4T} ()
\begin{DoxyCompactList}\small\item\em destructor \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_a25d4255cf72b3cec5d08a27ae494e1f9}\label{a07852_a25d4255cf72b3cec5d08a27ae494e1f9}} 
{\footnotesize template$<$typename other\+Scalar $>$ }\\\hyperlink{a07852}{Matrix4x4T}$<$ Scalar $>$ \& \hyperlink{a07852_a25d4255cf72b3cec5d08a27ae494e1f9}{operator=} (const \hyperlink{a07852}{Matrix4x4T}$<$ other\+Scalar $>$ \&\+\_\+rhs)
\begin{DoxyCompactList}\small\item\em assignment from other matrix type \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_a640508e70c145d284f9fa4e797f4324e}\label{a07852_a640508e70c145d284f9fa4e797f4324e}} 
Scalar \& \hyperlink{a07852_a640508e70c145d284f9fa4e797f4324e}{operator()} (unsigned int row, unsigned int col)
\begin{DoxyCompactList}\small\item\em access operator (read and write) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_ae8be72a9bb4b04bdef25276d1c4fe4ab}\label{a07852_ae8be72a9bb4b04bdef25276d1c4fe4ab}} 
const Scalar \& \hyperlink{a07852_ae8be72a9bb4b04bdef25276d1c4fe4ab}{operator()} (unsigned int row, unsigned int col) const
\begin{DoxyCompactList}\small\item\em access operator (read only) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_a1795298cf4b5c6a5aebdf815fc90ddd6}\label{a07852_a1795298cf4b5c6a5aebdf815fc90ddd6}} 
bool \hyperlink{a07852_a1795298cf4b5c6a5aebdf815fc90ddd6}{operator==} (const \hyperlink{a07852}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs) const
\begin{DoxyCompactList}\small\item\em compare two matrices (up to some epsilon) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_ac014c5dd23b50906908f53018bd4a434}\label{a07852_ac014c5dd23b50906908f53018bd4a434}} 
bool \hyperlink{a07852_ac014c5dd23b50906908f53018bd4a434}{operator!=} (const \hyperlink{a07852}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs) const
\begin{DoxyCompactList}\small\item\em compare two matrices \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_af0a42e5dba476878f21c6c2052e1b6de}\label{a07852_af0a42e5dba476878f21c6c2052e1b6de}} 
\hyperlink{a07852}{Matrix4x4T} \hyperlink{a07852_af0a42e5dba476878f21c6c2052e1b6de}{operator+} (\hyperlink{a07852}{Matrix4x4T}$<$ Scalar $>$ \+\_\+rhs) const
\begin{DoxyCompactList}\small\item\em self + \+\_\+rhs \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_a7aae44f13929feb6f084dc9731357e1f}\label{a07852_a7aae44f13929feb6f084dc9731357e1f}} 
\hyperlink{a07852}{Matrix4x4T} \hyperlink{a07852_a7aae44f13929feb6f084dc9731357e1f}{operator-\/} (\hyperlink{a07852}{Matrix4x4T}$<$ Scalar $>$ \+\_\+rhs) const
\begin{DoxyCompactList}\small\item\em self -\/ \+\_\+rhs \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_ac2a3cff3c3cf31b3b3c66bca223f9de4}\label{a07852_ac2a3cff3c3cf31b3b3c66bca223f9de4}} 
\hyperlink{a07852}{Matrix4x4T} \hyperlink{a07852_ac2a3cff3c3cf31b3b3c66bca223f9de4}{operator$\ast$} (const \hyperlink{a07852}{Matrix4x4T}$<$ Scalar $>$ \&inst) const
\begin{DoxyCompactList}\small\item\em self $\ast$ \+\_\+rhs \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_a42b2c8b91c48a6ef14e95d275c40681d}\label{a07852_a42b2c8b91c48a6ef14e95d275c40681d}} 
\hyperlink{a07852}{Matrix4x4T} \hyperlink{a07852_a42b2c8b91c48a6ef14e95d275c40681d}{operator$\ast$} (const Scalar \&scalar)
\begin{DoxyCompactList}\small\item\em self $\ast$ scalar \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_a660b28431b4cbf8c0e84cdb180f8a6f7}\label{a07852_a660b28431b4cbf8c0e84cdb180f8a6f7}} 
\hyperlink{a07852}{Matrix4x4T} \& \hyperlink{a07852_a660b28431b4cbf8c0e84cdb180f8a6f7}{operator+=} (const \hyperlink{a07852}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs)
\begin{DoxyCompactList}\small\item\em self += \+\_\+rhs \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_ad408ba2afaeda4638f7762a3d803c430}\label{a07852_ad408ba2afaeda4638f7762a3d803c430}} 
\hyperlink{a07852}{Matrix4x4T} \& \hyperlink{a07852_ad408ba2afaeda4638f7762a3d803c430}{operator-\/=} (const \hyperlink{a07852}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs)
\begin{DoxyCompactList}\small\item\em self -\/= \+\_\+rhs \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_a3a9444151342d1aab29157af5a439a82}\label{a07852_a3a9444151342d1aab29157af5a439a82}} 
\hyperlink{a07852}{Matrix4x4T} \& \hyperlink{a07852_a3a9444151342d1aab29157af5a439a82}{operator$\ast$=} (const \hyperlink{a07852}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs)
\begin{DoxyCompactList}\small\item\em self $\ast$= \+\_\+rhs \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_a199dbe68d12f3d325c7f67b591cfdcd8}\label{a07852_a199dbe68d12f3d325c7f67b591cfdcd8}} 
\hyperlink{a07852}{Matrix4x4T} \& \hyperlink{a07852_a199dbe68d12f3d325c7f67b591cfdcd8}{left\+Mult} (const \hyperlink{a07852}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs)
\begin{DoxyCompactList}\small\item\em multiply from left\+: self = \+\_\+rhs $\ast$ self \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_aad887cbdcc33e7b7aaea6bad982b2b5d}\label{a07852_aad887cbdcc33e7b7aaea6bad982b2b5d}} 
{\footnotesize template$<$typename T $>$ }\\\hyperlink{a08448}{VectorT}$<$ T, 4 $>$ \hyperlink{a07852_aad887cbdcc33e7b7aaea6bad982b2b5d}{operator$\ast$} (const \hyperlink{a08448}{VectorT}$<$ T, 4 $>$ \&\+\_\+v) const
\begin{DoxyCompactList}\small\item\em matrix by vector multiplication \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_ac1c0684e94606029b0c9700ddfb497cf}\label{a07852_ac1c0684e94606029b0c9700ddfb497cf}} 
{\footnotesize template$<$typename T $>$ }\\\hyperlink{a08448}{VectorT}$<$ T, 3 $>$ \hyperlink{a07852_ac1c0684e94606029b0c9700ddfb497cf}{transform\+\_\+point} (const \hyperlink{a08448}{VectorT}$<$ T, 3 $>$ \&\+\_\+v) const
\begin{DoxyCompactList}\small\item\em transform point (x\textquotesingle{},y\textquotesingle{},z\textquotesingle{},1) = M $\ast$ (x,y,z,1) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_a0c25cdf3a37ea66ad0d696264552164d}\label{a07852_a0c25cdf3a37ea66ad0d696264552164d}} 
{\footnotesize template$<$typename T $>$ }\\\hyperlink{a08448}{VectorT}$<$ T, 3 $>$ \hyperlink{a07852_a0c25cdf3a37ea66ad0d696264552164d}{transform\+\_\+vector} (const \hyperlink{a08448}{VectorT}$<$ T, 3 $>$ \&\+\_\+v) const
\begin{DoxyCompactList}\small\item\em transform vector (x\textquotesingle{},y\textquotesingle{},z\textquotesingle{},0) = A $\ast$ (x,y,z,0) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_accb9f5ee64879e5aa353eed53c3e34cc}\label{a07852_accb9f5ee64879e5aa353eed53c3e34cc}} 
void \hyperlink{a07852_accb9f5ee64879e5aa353eed53c3e34cc}{clear} ()
\begin{DoxyCompactList}\small\item\em sets all elements to zero \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_aa19876a87264263e95834ea50f716b55}\label{a07852_aa19876a87264263e95834ea50f716b55}} 
void \hyperlink{a07852_aa19876a87264263e95834ea50f716b55}{identity} ()
\begin{DoxyCompactList}\small\item\em setup an identity matrix \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_a81a66de91d371d6d11030ae17865d193}\label{a07852_a81a66de91d371d6d11030ae17865d193}} 
bool \hyperlink{a07852_a81a66de91d371d6d11030ae17865d193}{is\+\_\+identity} () const
\begin{DoxyCompactList}\small\item\em check if the matrix is the identity ( up to an epsilon ) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_a5261c4a8619ef0084f98b49a35e92058}\label{a07852_a5261c4a8619ef0084f98b49a35e92058}} 
void \hyperlink{a07852_a5261c4a8619ef0084f98b49a35e92058}{transpose} ()
\begin{DoxyCompactList}\small\item\em transpose matrix \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_aed5a4712a5fa717fa95f6be3f5ebd1f7}\label{a07852_aed5a4712a5fa717fa95f6be3f5ebd1f7}} 
bool \hyperlink{a07852_aed5a4712a5fa717fa95f6be3f5ebd1f7}{invert} ()
\begin{DoxyCompactList}\small\item\em matrix inversion (returns true on success) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07852_a2c947a3f60f954de0d148e984e195baa}\label{a07852_a2c947a3f60f954de0d148e984e195baa}} 
Scalar {\bfseries determinant} () const
\item 
const Scalar $\ast$ \hyperlink{a07852_a0ceaddc5d300030f638338d021ee08b6}{get\+\_\+raw\+\_\+data} () const
\item 
\mbox{\Hypertarget{a07852_a16fe80749567ba2633d72dfd4624c57f}\label{a07852_a16fe80749567ba2633d72dfd4624c57f}} 
const Scalar $\ast$ {\bfseries raw} () const
\item 
\mbox{\Hypertarget{a07852_adb169c1df9b80cbb2987c3e3e1acbf11}\label{a07852_adb169c1df9b80cbb2987c3e3e1acbf11}} 
const Scalar $\ast$ {\bfseries data} () const
\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a07852_a6f84bf8d432ca64f0a7de46117cabedd}\label{a07852_a6f84bf8d432ca64f0a7de46117cabedd}} 
Scalar {\bfseries mat\+\_\+} \mbox{[}16\mbox{]}
\end{DoxyCompactItemize}


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

Simple 4x4 Matrix. Inherited by G\+L\+Matrix. 

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



\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{a07852_a6c9341b3be1a5fc6421e4df09fc1fc17}\label{a07852_a6c9341b3be1a5fc6421e4df09fc1fc17}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4T@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4T}!Matrix4x4T@{Matrix4x4T}}
\index{Matrix4x4T@{Matrix4x4T}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4T@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4T}}
\subsubsection{\texorpdfstring{Matrix4x4\+T()}{Matrix4x4T()}}
{\footnotesize\ttfamily template$<$class Scalar$>$ \\
\hyperlink{a07852}{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4T}$<$ Scalar $>$\+::\hyperlink{a07852}{Matrix4x4T} (\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 107 of file Mesh\+Node2\+T\+\_\+impl.\+hh.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{a07852_a0ceaddc5d300030f638338d021ee08b6}\label{a07852_a0ceaddc5d300030f638338d021ee08b6}} 
\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4T@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4T}!get\+\_\+raw\+\_\+data@{get\+\_\+raw\+\_\+data}}
\index{get\+\_\+raw\+\_\+data@{get\+\_\+raw\+\_\+data}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4T@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4T}}
\subsubsection{\texorpdfstring{get\+\_\+raw\+\_\+data()}{get\_raw\_data()}}
{\footnotesize\ttfamily template$<$class Scalar$>$ \\
const Scalar$\ast$ \hyperlink{a07852}{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4T}$<$ Scalar $>$\+::get\+\_\+raw\+\_\+data (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

access to data array. not very nice, but in case of 4x4 matrices this member can be used to pass matrices to Open\+GL e.\+g. gl\+Load\+Matrixf(m.\+get\+\_\+raw\+\_\+data()); 

Definition at line 256 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}
