\hypertarget{classACG_1_1Matrix3x3T}{}\section{A\+CG\+:\+:Matrix3x3T$<$ Scalar $>$ Class Template Reference}
\label{classACG_1_1Matrix3x3T}\index{A\+C\+G\+::\+Matrix3x3\+T$<$ Scalar $>$@{A\+C\+G\+::\+Matrix3x3\+T$<$ Scalar $>$}}


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

\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a7d49358924b67563222279d20bf25f25}\label{classACG_1_1Matrix3x3T_a7d49358924b67563222279d20bf25f25}} 
typedef \hyperlink{classOpenMesh_1_1VectorT}{Open\+Mesh\+::\+VectorT}$<$ Scalar, 3 $>$ {\bfseries Vec3}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
constexpr \hyperlink{classACG_1_1Matrix3x3T_a6cbfe0616f5c8f6fc79a30e2a9c182ec}{Matrix3x3T} (std\+::array$<$ Scalar, 9 $>$ row\+\_\+major)
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a8f3c8e8e661027005846ad42b5ecb9e8}\label{classACG_1_1Matrix3x3T_a8f3c8e8e661027005846ad42b5ecb9e8}} 
constexpr bool {\bfseries operator==} (const \hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T} \&rhs) const
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_ad62c3e68ea1c6cd94bce3213f4a51e6d}\label{classACG_1_1Matrix3x3T_ad62c3e68ea1c6cd94bce3213f4a51e6d}} 
constexpr const Scalar \& {\bfseries operator()} (uint\+\_\+fast8\+\_\+t r, uint\+\_\+fast8\+\_\+t c) const
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a08c8db5c2be8ed5c0c5d3ef8101aced0}\label{classACG_1_1Matrix3x3T_a08c8db5c2be8ed5c0c5d3ef8101aced0}} 
Scalar \& {\bfseries operator()} (uint\+\_\+fast8\+\_\+t r, uint\+\_\+fast8\+\_\+t c)
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a218c2d9e85fd4a3c917536e6accf65bd}\label{classACG_1_1Matrix3x3T_a218c2d9e85fd4a3c917536e6accf65bd}} 
constexpr const Scalar \& \hyperlink{classACG_1_1Matrix3x3T_a218c2d9e85fd4a3c917536e6accf65bd}{operator\mbox{[}$\,$\mbox{]}} (uint\+\_\+fast8\+\_\+t i) const
\begin{DoxyCompactList}\small\item\em Linearized row major access. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_afb087811274bafbbec1de3e7c66ff9bd}\label{classACG_1_1Matrix3x3T_afb087811274bafbbec1de3e7c66ff9bd}} 
Scalar \& \hyperlink{classACG_1_1Matrix3x3T_afb087811274bafbbec1de3e7c66ff9bd}{operator\mbox{[}$\,$\mbox{]}} (uint\+\_\+fast8\+\_\+t i)
\begin{DoxyCompactList}\small\item\em Linearized row major access. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a97b70c188c4c178b592e1f21d2411a1a}\label{classACG_1_1Matrix3x3T_a97b70c188c4c178b592e1f21d2411a1a}} 
\hyperlink{classOpenMesh_1_1VectorT}{Vec3} {\bfseries get\+Row} (uint\+\_\+fast8\+\_\+t r) const
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a0139fd178e5c22f215c11a39833e1379}\label{classACG_1_1Matrix3x3T_a0139fd178e5c22f215c11a39833e1379}} 
void {\bfseries set\+Row} (uint\+\_\+fast8\+\_\+t r, const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&v)
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a8fa556a861777799824143013de23d14}\label{classACG_1_1Matrix3x3T_a8fa556a861777799824143013de23d14}} 
\hyperlink{classOpenMesh_1_1VectorT}{Vec3} {\bfseries get\+Col} (uint\+\_\+fast8\+\_\+t c) const
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_acb3b065c72cec07dc94d8e024691599b}\label{classACG_1_1Matrix3x3T_acb3b065c72cec07dc94d8e024691599b}} 
void {\bfseries set\+Col} (uint\+\_\+fast8\+\_\+t c, const \hyperlink{classOpenMesh_1_1VectorT}{Vec3} \&v)
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a80160e66240f9d43eaa9e49063d460c6}\label{classACG_1_1Matrix3x3T_a80160e66240f9d43eaa9e49063d460c6}} 
constexpr \hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T} {\bfseries operator$\ast$} (const \hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T} \&rhs) const
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_aaddee0de6c276a2d44a0af5bc5e14787}\label{classACG_1_1Matrix3x3T_aaddee0de6c276a2d44a0af5bc5e14787}} 
{\footnotesize template$<$typename Other\+Scalar $>$ }\\constexpr auto {\bfseries operator$\ast$} (const \hyperlink{classOpenMesh_1_1VectorT}{VectorT}$<$ Other\+Scalar, 3 $>$ \&rhs) const -\/$>$ \hyperlink{classOpenMesh_1_1VectorT}{Open\+Mesh\+::\+VectorT}$<$ decltype(std\+::declval$<$ Scalar $>$() $\ast$rhs\mbox{[}0\mbox{]}), 3 $>$
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_ad7e541338c3126b21da5081203cd301c}\label{classACG_1_1Matrix3x3T_ad7e541338c3126b21da5081203cd301c}} 
constexpr \hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T} {\bfseries operator$\ast$} (Scalar c) const
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a5afa743d988b0b958795a9fef745066a}\label{classACG_1_1Matrix3x3T_a5afa743d988b0b958795a9fef745066a}} 
constexpr \hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T} {\bfseries operator+} (const \hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T} \&rhs) const
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a80c56bad532e77d2be0d169720810df4}\label{classACG_1_1Matrix3x3T_a80c56bad532e77d2be0d169720810df4}} 
constexpr \hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T} {\bfseries operator-\/} (const \hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T} \&rhs) const
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a97b067e19142afde5130de3f5dcedbb5}\label{classACG_1_1Matrix3x3T_a97b067e19142afde5130de3f5dcedbb5}} 
constexpr \hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T} {\bfseries operator-\/} () const
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_affb4d3fa1f2f3544ebaae032f2fbedec}\label{classACG_1_1Matrix3x3T_affb4d3fa1f2f3544ebaae032f2fbedec}} 
const \hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T} \& {\bfseries operator$\ast$=} (const \hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T} \&rhs)
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a83a748fd91ab41fcb3b9cd12436129ee}\label{classACG_1_1Matrix3x3T_a83a748fd91ab41fcb3b9cd12436129ee}} 
constexpr Scalar {\bfseries det} () const
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a68f0b23353aa3dfe83898e06fe3f7e52}\label{classACG_1_1Matrix3x3T_a68f0b23353aa3dfe83898e06fe3f7e52}} 
constexpr Scalar {\bfseries trace} () const
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a38fcd6f8d4d27244ef745e8ce4e59481}\label{classACG_1_1Matrix3x3T_a38fcd6f8d4d27244ef745e8ce4e59481}} 
void {\bfseries transpose} ()
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_aaee7de5998b2d475bdc34639d6835076}\label{classACG_1_1Matrix3x3T_aaee7de5998b2d475bdc34639d6835076}} 
constexpr \hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T} {\bfseries transposed} () const
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a59cf3c5360447a827ab05679dc5d4117}\label{classACG_1_1Matrix3x3T_a59cf3c5360447a827ab05679dc5d4117}} 
void {\bfseries invert} ()
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a1342688f0511bf2d2360b8efc6157844}\label{classACG_1_1Matrix3x3T_a1342688f0511bf2d2360b8efc6157844}} 
\hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T} {\bfseries inverse} () const
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_ad26d84ed0533c1fee3c6232539b95ce3}\label{classACG_1_1Matrix3x3T_ad26d84ed0533c1fee3c6232539b95ce3}} 
constexpr Scalar {\bfseries frobenius\+Squared} () const
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_af3838711b928bc51ff265c55ce059a05}\label{classACG_1_1Matrix3x3T_af3838711b928bc51ff265c55ce059a05}} 
constexpr double {\bfseries frobenius} () const
\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a52cef792f8e9688223fda8f6ac125c01}\label{classACG_1_1Matrix3x3T_a52cef792f8e9688223fda8f6ac125c01}} 
static \hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T}$<$ Scalar $>$ {\bfseries from\+Columns} (\hyperlink{classOpenMesh_1_1VectorT}{Vec3} c1, \hyperlink{classOpenMesh_1_1VectorT}{Vec3} c2, \hyperlink{classOpenMesh_1_1VectorT}{Vec3} c3)
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a87f3d0879e868ec4c9e08a8288428cf8}\label{classACG_1_1Matrix3x3T_a87f3d0879e868ec4c9e08a8288428cf8}} 
static \hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T}$<$ Scalar $>$ {\bfseries from\+Rows} (\hyperlink{classOpenMesh_1_1VectorT}{Vec3} r1, \hyperlink{classOpenMesh_1_1VectorT}{Vec3} r2, \hyperlink{classOpenMesh_1_1VectorT}{Vec3} r3)
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a4340a2aec0667c92f57fa94c3ca0e3e3}\label{classACG_1_1Matrix3x3T_a4340a2aec0667c92f57fa94c3ca0e3e3}} 
static constexpr \hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T}$<$ Scalar $>$ {\bfseries identity} ()
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a57c85665834479858774252c31bbfc80}\label{classACG_1_1Matrix3x3T_a57c85665834479858774252c31bbfc80}} 
static constexpr \hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T}$<$ Scalar $>$ {\bfseries zero} ()
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_adb35d306cd2911698d4571768482ee07}\label{classACG_1_1Matrix3x3T_adb35d306cd2911698d4571768482ee07}} 
static constexpr uint\+\_\+fast8\+\_\+t \hyperlink{classACG_1_1Matrix3x3T_adb35d306cd2911698d4571768482ee07}{indexof} (uint\+\_\+fast8\+\_\+t r, uint\+\_\+fast8\+\_\+t c)
\begin{DoxyCompactList}\small\item\em Map row/column index to linearized index. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_adb54fea3ec5ede72ec98fdd4257111d6}\label{classACG_1_1Matrix3x3T_adb54fea3ec5ede72ec98fdd4257111d6}} 
std\+::array$<$ Scalar, 9 $>$ {\bfseries values\+\_\+}
\end{DoxyCompactItemize}
\subsection*{Friends}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a36a920495c1e5693485205c740cc59c1}\label{classACG_1_1Matrix3x3T_a36a920495c1e5693485205c740cc59c1}} 
{\footnotesize template$<$typename Other\+Scalar $>$ }\\constexpr friend auto {\bfseries operator$\ast$} (\hyperlink{classOpenMesh_1_1VectorT}{VectorT}$<$ Other\+Scalar, 3 $>$ v, const \hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T} \&rhs) -\/$>$ \hyperlink{classOpenMesh_1_1VectorT}{Open\+Mesh\+::\+VectorT}$<$ decltype(std\+::declval$<$ Scalar $>$() $\ast$v\mbox{[}0\mbox{]}), 3 $>$
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a8ac6c97cdc7fdb2d747a9345557cf7a2}\label{classACG_1_1Matrix3x3T_a8ac6c97cdc7fdb2d747a9345557cf7a2}} 
constexpr friend \hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T} {\bfseries operator$\ast$} (Scalar c, const \hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T} \&rhs)
\item 
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a19a9ca31a52520ecf363dd6d45fe96e2}\label{classACG_1_1Matrix3x3T_a19a9ca31a52520ecf363dd6d45fe96e2}} 
std\+::ostream \& {\bfseries operator$<$$<$} (std\+::ostream \&os, const \hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T} \&m)
\end{DoxyCompactItemize}


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

Small, kinda fast 3x3 matrix class. 

Definition at line 22 of file Matrix3x3\+T.\+hh.



\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classACG_1_1Matrix3x3T_a6cbfe0616f5c8f6fc79a30e2a9c182ec}\label{classACG_1_1Matrix3x3T_a6cbfe0616f5c8f6fc79a30e2a9c182ec}} 
\index{A\+C\+G\+::\+Matrix3x3T@{A\+C\+G\+::\+Matrix3x3T}!Matrix3x3T@{Matrix3x3T}}
\index{Matrix3x3T@{Matrix3x3T}!A\+C\+G\+::\+Matrix3x3T@{A\+C\+G\+::\+Matrix3x3T}}
\subsubsection{\texorpdfstring{Matrix3x3\+T()}{Matrix3x3T()}}
{\footnotesize\ttfamily template$<$typename Scalar$>$ \\
constexpr \hyperlink{classACG_1_1Matrix3x3T}{A\+C\+G\+::\+Matrix3x3T}$<$ Scalar $>$\+::\hyperlink{classACG_1_1Matrix3x3T}{Matrix3x3T} (\begin{DoxyParamCaption}\item[{std\+::array$<$ Scalar, 9 $>$}]{row\+\_\+major }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Initialize matrix from array in row major format. 

Definition at line 64 of file Matrix3x3\+T.\+hh.



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