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


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

Inheritance diagram for A\+CG\+:\+:Matrix4x4T$<$ Scalar $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classACG_1_1Matrix4x4T}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_a1357c6d16a1cd94ae15aa9e46799b2e0}\label{classACG_1_1Matrix4x4T_a1357c6d16a1cd94ae15aa9e46799b2e0}} 
\hyperlink{classACG_1_1Matrix4x4T_a1357c6d16a1cd94ae15aa9e46799b2e0}{Matrix4x4T} ()
\begin{DoxyCompactList}\small\item\em constructor\+: uninitialized values \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_a8c1726a0ecadd9618534a4a75337e94f}\label{classACG_1_1Matrix4x4T_a8c1726a0ecadd9618534a4a75337e94f}} 
{\footnotesize template$<$class Other\+Scalar $>$ }\\\hyperlink{classACG_1_1Matrix4x4T_a8c1726a0ecadd9618534a4a75337e94f}{Matrix4x4T} (const \hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Other\+Scalar $>$ \&\+\_\+rhs)
\begin{DoxyCompactList}\small\item\em construct from other matrix type \end{DoxyCompactList}\item 
\hyperlink{classACG_1_1Matrix4x4T_a15d9a45fa1ccb2f2b8152e7c4ce417c9}{Matrix4x4T} (const Scalar \+\_\+array\mbox{[}16\mbox{]})
\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_a63e3a659d93cbc7633ad92aa435d966c}\label{classACG_1_1Matrix4x4T_a63e3a659d93cbc7633ad92aa435d966c}} 
\hyperlink{classACG_1_1Matrix4x4T_a63e3a659d93cbc7633ad92aa435d966c}{$\sim$\+Matrix4x4T} ()
\begin{DoxyCompactList}\small\item\em destructor \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_ab84fa0488c832327146990026cf42346}\label{classACG_1_1Matrix4x4T_ab84fa0488c832327146990026cf42346}} 
{\footnotesize template$<$typename other\+Scalar $>$ }\\\hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \& \hyperlink{classACG_1_1Matrix4x4T_ab84fa0488c832327146990026cf42346}{operator=} (const \hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ other\+Scalar $>$ \&\+\_\+rhs)
\begin{DoxyCompactList}\small\item\em assignment from other matrix type \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_ab00796eb64f7e8c544d0878b72e846b9}\label{classACG_1_1Matrix4x4T_ab00796eb64f7e8c544d0878b72e846b9}} 
Scalar \& \hyperlink{classACG_1_1Matrix4x4T_ab00796eb64f7e8c544d0878b72e846b9}{operator()} (unsigned int row, unsigned int col)
\begin{DoxyCompactList}\small\item\em access operator (read and write) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_a799e111ced5871d90e88c53050228e47}\label{classACG_1_1Matrix4x4T_a799e111ced5871d90e88c53050228e47}} 
const Scalar \& \hyperlink{classACG_1_1Matrix4x4T_a799e111ced5871d90e88c53050228e47}{operator()} (unsigned int row, unsigned int col) const
\begin{DoxyCompactList}\small\item\em access operator (read only) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_a9b0e675b2aadd5aa4872c9114f2e68bc}\label{classACG_1_1Matrix4x4T_a9b0e675b2aadd5aa4872c9114f2e68bc}} 
bool \hyperlink{classACG_1_1Matrix4x4T_a9b0e675b2aadd5aa4872c9114f2e68bc}{operator==} (const \hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs) const
\begin{DoxyCompactList}\small\item\em compare two matrices (up to some epsilon) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_acd0fe11d89ed826e0dcaaca0db5604e1}\label{classACG_1_1Matrix4x4T_acd0fe11d89ed826e0dcaaca0db5604e1}} 
bool \hyperlink{classACG_1_1Matrix4x4T_acd0fe11d89ed826e0dcaaca0db5604e1}{operator!=} (const \hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs) const
\begin{DoxyCompactList}\small\item\em compare two matrices \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_a072ccfe8f054f9804f50e5d7061893ce}\label{classACG_1_1Matrix4x4T_a072ccfe8f054f9804f50e5d7061893ce}} 
\hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T} \hyperlink{classACG_1_1Matrix4x4T_a072ccfe8f054f9804f50e5d7061893ce}{operator+} (\hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \+\_\+rhs) const
\begin{DoxyCompactList}\small\item\em self + \+\_\+rhs \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_a5a76b4aacd2484b86019a37d76ca8391}\label{classACG_1_1Matrix4x4T_a5a76b4aacd2484b86019a37d76ca8391}} 
\hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T} \hyperlink{classACG_1_1Matrix4x4T_a5a76b4aacd2484b86019a37d76ca8391}{operator-\/} (\hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \+\_\+rhs) const
\begin{DoxyCompactList}\small\item\em self -\/ \+\_\+rhs \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_ac9316e51dd64f0ef091dde60be400213}\label{classACG_1_1Matrix4x4T_ac9316e51dd64f0ef091dde60be400213}} 
\hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T} \hyperlink{classACG_1_1Matrix4x4T_ac9316e51dd64f0ef091dde60be400213}{operator$\ast$} (const \hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&inst) const
\begin{DoxyCompactList}\small\item\em self $\ast$ \+\_\+rhs \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_aea5fe4880aaded43afeb6da3752f5a87}\label{classACG_1_1Matrix4x4T_aea5fe4880aaded43afeb6da3752f5a87}} 
\hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T} \hyperlink{classACG_1_1Matrix4x4T_aea5fe4880aaded43afeb6da3752f5a87}{operator$\ast$} (const Scalar \&scalar)
\begin{DoxyCompactList}\small\item\em self $\ast$ scalar \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_a6f77efc7fc107ae9bebf7c629880dce2}\label{classACG_1_1Matrix4x4T_a6f77efc7fc107ae9bebf7c629880dce2}} 
\hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T} \& \hyperlink{classACG_1_1Matrix4x4T_a6f77efc7fc107ae9bebf7c629880dce2}{operator+=} (const \hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs)
\begin{DoxyCompactList}\small\item\em self += \+\_\+rhs \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_af0eaa6bfc55827dd8f8170b3eb3c8e84}\label{classACG_1_1Matrix4x4T_af0eaa6bfc55827dd8f8170b3eb3c8e84}} 
\hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T} \& \hyperlink{classACG_1_1Matrix4x4T_af0eaa6bfc55827dd8f8170b3eb3c8e84}{operator-\/=} (const \hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs)
\begin{DoxyCompactList}\small\item\em self -\/= \+\_\+rhs \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_a08d80b0967951d90fad1aae7f8bf2ab9}\label{classACG_1_1Matrix4x4T_a08d80b0967951d90fad1aae7f8bf2ab9}} 
\hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T} \& \hyperlink{classACG_1_1Matrix4x4T_a08d80b0967951d90fad1aae7f8bf2ab9}{operator$\ast$=} (const \hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs)
\begin{DoxyCompactList}\small\item\em self $\ast$= \+\_\+rhs \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_a4309e7c3372c3a49b7fc3c1479be7301}\label{classACG_1_1Matrix4x4T_a4309e7c3372c3a49b7fc3c1479be7301}} 
\hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T} \& \hyperlink{classACG_1_1Matrix4x4T_a4309e7c3372c3a49b7fc3c1479be7301}{left\+Mult} (const \hyperlink{classACG_1_1Matrix4x4T}{Matrix4x4T}$<$ Scalar $>$ \&\+\_\+rhs)
\begin{DoxyCompactList}\small\item\em multiply from left\+: self = \+\_\+rhs $\ast$ self \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_aff1615447fea69294b8544d2ba110ad9}\label{classACG_1_1Matrix4x4T_aff1615447fea69294b8544d2ba110ad9}} 
{\footnotesize template$<$typename T $>$ }\\\hyperlink{classOpenMesh_1_1VectorT}{VectorT}$<$ T, 4 $>$ \hyperlink{classACG_1_1Matrix4x4T_aff1615447fea69294b8544d2ba110ad9}{operator$\ast$} (const \hyperlink{classOpenMesh_1_1VectorT}{VectorT}$<$ T, 4 $>$ \&\+\_\+v) const
\begin{DoxyCompactList}\small\item\em matrix by vector multiplication \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_af9336d022fc4a3c6ec74227aac8ea9d0}\label{classACG_1_1Matrix4x4T_af9336d022fc4a3c6ec74227aac8ea9d0}} 
{\footnotesize template$<$typename T $>$ }\\\hyperlink{classOpenMesh_1_1VectorT}{VectorT}$<$ T, 3 $>$ \hyperlink{classACG_1_1Matrix4x4T_af9336d022fc4a3c6ec74227aac8ea9d0}{transform\+\_\+point} (const \hyperlink{classOpenMesh_1_1VectorT}{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{classACG_1_1Matrix4x4T_a4dbde94a7f9b7538c6e753b1cd8bedd7}\label{classACG_1_1Matrix4x4T_a4dbde94a7f9b7538c6e753b1cd8bedd7}} 
{\footnotesize template$<$typename T $>$ }\\\hyperlink{classOpenMesh_1_1VectorT}{VectorT}$<$ T, 3 $>$ \hyperlink{classACG_1_1Matrix4x4T_a4dbde94a7f9b7538c6e753b1cd8bedd7}{transform\+\_\+vector} (const \hyperlink{classOpenMesh_1_1VectorT}{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{classACG_1_1Matrix4x4T_ab4fc2ed3a1fa8f865036964ab414b82a}\label{classACG_1_1Matrix4x4T_ab4fc2ed3a1fa8f865036964ab414b82a}} 
void \hyperlink{classACG_1_1Matrix4x4T_ab4fc2ed3a1fa8f865036964ab414b82a}{clear} ()
\begin{DoxyCompactList}\small\item\em sets all elements to zero \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_a598f9a255f3aa4eab1f9e42f668cd375}\label{classACG_1_1Matrix4x4T_a598f9a255f3aa4eab1f9e42f668cd375}} 
void \hyperlink{classACG_1_1Matrix4x4T_a598f9a255f3aa4eab1f9e42f668cd375}{identity} ()
\begin{DoxyCompactList}\small\item\em setup an identity matrix \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_ab2df25de7eee30a1777c5f9076203032}\label{classACG_1_1Matrix4x4T_ab2df25de7eee30a1777c5f9076203032}} 
bool \hyperlink{classACG_1_1Matrix4x4T_ab2df25de7eee30a1777c5f9076203032}{is\+\_\+identity} () const
\begin{DoxyCompactList}\small\item\em check if the matrix is the identity ( up to an epsilon ) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_af4e3fb1633266600b1a9e5a527fb5c87}\label{classACG_1_1Matrix4x4T_af4e3fb1633266600b1a9e5a527fb5c87}} 
void \hyperlink{classACG_1_1Matrix4x4T_af4e3fb1633266600b1a9e5a527fb5c87}{transpose} ()
\begin{DoxyCompactList}\small\item\em transpose matrix \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_a7ba92ba2fbf4e9efcf592fe6630808c1}\label{classACG_1_1Matrix4x4T_a7ba92ba2fbf4e9efcf592fe6630808c1}} 
bool \hyperlink{classACG_1_1Matrix4x4T_a7ba92ba2fbf4e9efcf592fe6630808c1}{invert} ()
\begin{DoxyCompactList}\small\item\em matrix inversion (returns true on success) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_a5aa2f7bc6b19e000abb77b64972b5b3b}\label{classACG_1_1Matrix4x4T_a5aa2f7bc6b19e000abb77b64972b5b3b}} 
Scalar {\bfseries determinant} () const
\item 
const Scalar $\ast$ \hyperlink{classACG_1_1Matrix4x4T_a70b529a1131e5277895e58ec0ad3643e}{get\+\_\+raw\+\_\+data} () const
\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_a44a945e87d81d5fc0003c338b82613f6}\label{classACG_1_1Matrix4x4T_a44a945e87d81d5fc0003c338b82613f6}} 
const Scalar $\ast$ {\bfseries raw} () const
\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_a8317fdf42c4c6026c64a6c605df69920}\label{classACG_1_1Matrix4x4T_a8317fdf42c4c6026c64a6c605df69920}} 
const Scalar $\ast$ {\bfseries data} () const
\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_a36944167d1817c56506d6469c64d56f9}\label{classACG_1_1Matrix4x4T_a36944167d1817c56506d6469c64d56f9}} 
Scalar {\bfseries mat\+\_\+} \mbox{[}16\mbox{]}
\end{DoxyCompactItemize}


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

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

Definition at line 92 of file Matrix4x4\+T.\+hh.



\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_a15d9a45fa1ccb2f2b8152e7c4ce417c9}\label{classACG_1_1Matrix4x4T_a15d9a45fa1ccb2f2b8152e7c4ce417c9}} 
\index{A\+C\+G\+::\+Matrix4x4T@{A\+C\+G\+::\+Matrix4x4T}!Matrix4x4T@{Matrix4x4T}}
\index{Matrix4x4T@{Matrix4x4T}!A\+C\+G\+::\+Matrix4x4T@{A\+C\+G\+::\+Matrix4x4T}}
\subsubsection{\texorpdfstring{Matrix4x4\+T()}{Matrix4x4T()}}
{\footnotesize\ttfamily template$<$class Scalar$>$ \\
\hyperlink{classACG_1_1Matrix4x4T}{A\+C\+G\+::\+Matrix4x4T}$<$ Scalar $>$\+::\hyperlink{classACG_1_1Matrix4x4T}{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 Matrix4x4\+T.\+hh.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{classACG_1_1Matrix4x4T_a70b529a1131e5277895e58ec0ad3643e}\label{classACG_1_1Matrix4x4T_a70b529a1131e5277895e58ec0ad3643e}} 
\index{A\+C\+G\+::\+Matrix4x4T@{A\+C\+G\+::\+Matrix4x4T}!get\+\_\+raw\+\_\+data@{get\+\_\+raw\+\_\+data}}
\index{get\+\_\+raw\+\_\+data@{get\+\_\+raw\+\_\+data}!A\+C\+G\+::\+Matrix4x4T@{A\+C\+G\+::\+Matrix4x4T}}
\subsubsection{\texorpdfstring{get\+\_\+raw\+\_\+data()}{get\_raw\_data()}}
{\footnotesize\ttfamily template$<$class Scalar$>$ \\
const Scalar$\ast$ \hyperlink{classACG_1_1Matrix4x4T}{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 Matrix4x4\+T.\+hh.



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