\hypertarget{a00796}{\section{A\+C\+G\+:\+:Scene\+Graph\+:\+:A\+C\+G\+:\+:Matrix4x4\+T$<$ Scalar $>$ Class Template Reference}
\label{a00796}\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4\+T$<$ Scalar $>$@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4\+T$<$ Scalar $>$}}
}
Inheritance diagram for A\+C\+G\+:\+:Scene\+Graph\+:\+:A\+C\+G\+:\+:Matrix4x4\+T$<$ Scalar $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{a00796}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00796_aef20c73689f48be3255cfacfa55df47e}{\hyperlink{a00796_aef20c73689f48be3255cfacfa55df47e}{Matrix4x4\+T} ()}\label{a00796_aef20c73689f48be3255cfacfa55df47e}

\begin{DoxyCompactList}\small\item\em constructor\+: uninitialized values \end{DoxyCompactList}\item 
\hypertarget{a00796_ac774e40e30593b98cb74149b921ec501}{{\footnotesize template$<$class Other\+Scalar $>$ }\\\hyperlink{a00796_ac774e40e30593b98cb74149b921ec501}{Matrix4x4\+T} (const \hyperlink{a00796}{Matrix4x4\+T}$<$ Other\+Scalar $>$ \&\+\_\+rhs)}\label{a00796_ac774e40e30593b98cb74149b921ec501}

\begin{DoxyCompactList}\small\item\em construct from other matrix type \end{DoxyCompactList}\item 
\hyperlink{a00796_a6c9341b3be1a5fc6421e4df09fc1fc17}{Matrix4x4\+T} (const Scalar \+\_\+array\mbox{[}16\mbox{]})
\item 
\hypertarget{a00796_a9ecb308ca86ef1de40c4d118f82e40a2}{\hyperlink{a00796_a9ecb308ca86ef1de40c4d118f82e40a2}{$\sim$\+Matrix4x4\+T} ()}\label{a00796_a9ecb308ca86ef1de40c4d118f82e40a2}

\begin{DoxyCompactList}\small\item\em destructor \end{DoxyCompactList}\item 
\hypertarget{a00796_a25d4255cf72b3cec5d08a27ae494e1f9}{{\footnotesize template$<$typename other\+Scalar $>$ }\\\hyperlink{a00796}{Matrix4x4\+T}$<$ Scalar $>$ \& \hyperlink{a00796_a25d4255cf72b3cec5d08a27ae494e1f9}{operator=} (const \hyperlink{a00796}{Matrix4x4\+T}$<$ other\+Scalar $>$ \&\+\_\+rhs)}\label{a00796_a25d4255cf72b3cec5d08a27ae494e1f9}

\begin{DoxyCompactList}\small\item\em assignment from other matrix type \end{DoxyCompactList}\item 
\hypertarget{a00796_a640508e70c145d284f9fa4e797f4324e}{Scalar \& \hyperlink{a00796_a640508e70c145d284f9fa4e797f4324e}{operator()} (unsigned int row, unsigned int col)}\label{a00796_a640508e70c145d284f9fa4e797f4324e}

\begin{DoxyCompactList}\small\item\em access operator (read and write) \end{DoxyCompactList}\item 
\hypertarget{a00796_a827d000b79cd9b5fc762c0a4e430766a}{const Scalar \& \hyperlink{a00796_a827d000b79cd9b5fc762c0a4e430766a}{operator()} (unsigned int row, unsigned int col) const }\label{a00796_a827d000b79cd9b5fc762c0a4e430766a}

\begin{DoxyCompactList}\small\item\em access operator (read only) \end{DoxyCompactList}\item 
\hypertarget{a00796_ab09e929480632c27e9a710b5566007c1}{bool \hyperlink{a00796_ab09e929480632c27e9a710b5566007c1}{operator==} (const \hyperlink{a00796}{Matrix4x4\+T}$<$ Scalar $>$ \&\+\_\+rhs) const }\label{a00796_ab09e929480632c27e9a710b5566007c1}

\begin{DoxyCompactList}\small\item\em compare two matrices (up to some epsilon) \end{DoxyCompactList}\item 
\hypertarget{a00796_a262098e73d2b66356339471482d9b1fc}{bool \hyperlink{a00796_a262098e73d2b66356339471482d9b1fc}{operator!=} (const \hyperlink{a00796}{Matrix4x4\+T}$<$ Scalar $>$ \&\+\_\+rhs) const }\label{a00796_a262098e73d2b66356339471482d9b1fc}

\begin{DoxyCompactList}\small\item\em compare two matrices \end{DoxyCompactList}\item 
\hypertarget{a00796_a297d2dfaad9382e9bc343cf76494d96b}{\hyperlink{a00796}{Matrix4x4\+T} \hyperlink{a00796_a297d2dfaad9382e9bc343cf76494d96b}{operator+} (\hyperlink{a00796}{Matrix4x4\+T}$<$ Scalar $>$ \+\_\+rhs) const }\label{a00796_a297d2dfaad9382e9bc343cf76494d96b}

\begin{DoxyCompactList}\small\item\em self + \+\_\+rhs \end{DoxyCompactList}\item 
\hypertarget{a00796_a7b427e9df56c54d04d61508563515a42}{\hyperlink{a00796}{Matrix4x4\+T} \hyperlink{a00796_a7b427e9df56c54d04d61508563515a42}{operator-\/} (\hyperlink{a00796}{Matrix4x4\+T}$<$ Scalar $>$ \+\_\+rhs) const }\label{a00796_a7b427e9df56c54d04d61508563515a42}

\begin{DoxyCompactList}\small\item\em self -\/ \+\_\+rhs \end{DoxyCompactList}\item 
\hypertarget{a00796_ab2ee08f9bbac56f827cf701e8ec90120}{\hyperlink{a00796}{Matrix4x4\+T} \hyperlink{a00796_ab2ee08f9bbac56f827cf701e8ec90120}{operator$\ast$} (const \hyperlink{a00796}{Matrix4x4\+T}$<$ Scalar $>$ \&inst) const }\label{a00796_ab2ee08f9bbac56f827cf701e8ec90120}

\begin{DoxyCompactList}\small\item\em self $\ast$ \+\_\+rhs \end{DoxyCompactList}\item 
\hypertarget{a00796_a42b2c8b91c48a6ef14e95d275c40681d}{\hyperlink{a00796}{Matrix4x4\+T} \hyperlink{a00796_a42b2c8b91c48a6ef14e95d275c40681d}{operator$\ast$} (const Scalar \&scalar)}\label{a00796_a42b2c8b91c48a6ef14e95d275c40681d}

\begin{DoxyCompactList}\small\item\em self $\ast$ scalar \end{DoxyCompactList}\item 
\hypertarget{a00796_a660b28431b4cbf8c0e84cdb180f8a6f7}{\hyperlink{a00796}{Matrix4x4\+T} \& \hyperlink{a00796_a660b28431b4cbf8c0e84cdb180f8a6f7}{operator+=} (const \hyperlink{a00796}{Matrix4x4\+T}$<$ Scalar $>$ \&\+\_\+rhs)}\label{a00796_a660b28431b4cbf8c0e84cdb180f8a6f7}

\begin{DoxyCompactList}\small\item\em self += \+\_\+rhs \end{DoxyCompactList}\item 
\hypertarget{a00796_ad408ba2afaeda4638f7762a3d803c430}{\hyperlink{a00796}{Matrix4x4\+T} \& \hyperlink{a00796_ad408ba2afaeda4638f7762a3d803c430}{operator-\/=} (const \hyperlink{a00796}{Matrix4x4\+T}$<$ Scalar $>$ \&\+\_\+rhs)}\label{a00796_ad408ba2afaeda4638f7762a3d803c430}

\begin{DoxyCompactList}\small\item\em self -\/= \+\_\+rhs \end{DoxyCompactList}\item 
\hypertarget{a00796_a3a9444151342d1aab29157af5a439a82}{\hyperlink{a00796}{Matrix4x4\+T} \& \hyperlink{a00796_a3a9444151342d1aab29157af5a439a82}{operator$\ast$=} (const \hyperlink{a00796}{Matrix4x4\+T}$<$ Scalar $>$ \&\+\_\+rhs)}\label{a00796_a3a9444151342d1aab29157af5a439a82}

\begin{DoxyCompactList}\small\item\em self $\ast$= \+\_\+rhs \end{DoxyCompactList}\item 
\hypertarget{a00796_a199dbe68d12f3d325c7f67b591cfdcd8}{\hyperlink{a00796}{Matrix4x4\+T} \& \hyperlink{a00796_a199dbe68d12f3d325c7f67b591cfdcd8}{left\+Mult} (const \hyperlink{a00796}{Matrix4x4\+T}$<$ Scalar $>$ \&\+\_\+rhs)}\label{a00796_a199dbe68d12f3d325c7f67b591cfdcd8}

\begin{DoxyCompactList}\small\item\em multiply from left\+: self = \+\_\+rhs $\ast$ self \end{DoxyCompactList}\item 
\hypertarget{a00796_a9d6d04db2d52a9f2df745f2008a62a52}{{\footnotesize template$<$typename T $>$ }\\\hyperlink{a01409}{Vector\+T}$<$ T, 4 $>$ \hyperlink{a00796_a9d6d04db2d52a9f2df745f2008a62a52}{operator$\ast$} (const \hyperlink{a01409}{Vector\+T}$<$ T, 4 $>$ \&\+\_\+v) const }\label{a00796_a9d6d04db2d52a9f2df745f2008a62a52}

\begin{DoxyCompactList}\small\item\em matrix by vector multiplication \end{DoxyCompactList}\item 
\hypertarget{a00796_a2cc5963da34df9fd2b3249909c60b24f}{{\footnotesize template$<$typename T $>$ }\\\hyperlink{a01409}{Vector\+T}$<$ T, 3 $>$ \hyperlink{a00796_a2cc5963da34df9fd2b3249909c60b24f}{transform\+\_\+point} (const \hyperlink{a01409}{Vector\+T}$<$ T, 3 $>$ \&\+\_\+v) const }\label{a00796_a2cc5963da34df9fd2b3249909c60b24f}

\begin{DoxyCompactList}\small\item\em transform point (x',y',z',1) = M $\ast$ (x,y,z,1) \end{DoxyCompactList}\item 
\hypertarget{a00796_a9b6e8b6fff21cb27b548b2be2c2745a1}{{\footnotesize template$<$typename T $>$ }\\\hyperlink{a01409}{Vector\+T}$<$ T, 3 $>$ \hyperlink{a00796_a9b6e8b6fff21cb27b548b2be2c2745a1}{transform\+\_\+vector} (const \hyperlink{a01409}{Vector\+T}$<$ T, 3 $>$ \&\+\_\+v) const }\label{a00796_a9b6e8b6fff21cb27b548b2be2c2745a1}

\begin{DoxyCompactList}\small\item\em transform vector (x',y',z',0) = A $\ast$ (x,y,z,0) \end{DoxyCompactList}\item 
\hypertarget{a00796_accb9f5ee64879e5aa353eed53c3e34cc}{void \hyperlink{a00796_accb9f5ee64879e5aa353eed53c3e34cc}{clear} ()}\label{a00796_accb9f5ee64879e5aa353eed53c3e34cc}

\begin{DoxyCompactList}\small\item\em sets all elements to zero \end{DoxyCompactList}\item 
\hypertarget{a00796_aa19876a87264263e95834ea50f716b55}{void \hyperlink{a00796_aa19876a87264263e95834ea50f716b55}{identity} ()}\label{a00796_aa19876a87264263e95834ea50f716b55}

\begin{DoxyCompactList}\small\item\em setup an identity matrix \end{DoxyCompactList}\item 
\hypertarget{a00796_aa72c46ebacfdd019e8b9a9f94a67e591}{bool \hyperlink{a00796_aa72c46ebacfdd019e8b9a9f94a67e591}{is\+\_\+identity} () const }\label{a00796_aa72c46ebacfdd019e8b9a9f94a67e591}

\begin{DoxyCompactList}\small\item\em check if the matrix is the identity ( up to an epsilon ) \end{DoxyCompactList}\item 
\hypertarget{a00796_a5261c4a8619ef0084f98b49a35e92058}{void \hyperlink{a00796_a5261c4a8619ef0084f98b49a35e92058}{transpose} ()}\label{a00796_a5261c4a8619ef0084f98b49a35e92058}

\begin{DoxyCompactList}\small\item\em transpose matrix \end{DoxyCompactList}\item 
\hypertarget{a00796_aed5a4712a5fa717fa95f6be3f5ebd1f7}{bool \hyperlink{a00796_aed5a4712a5fa717fa95f6be3f5ebd1f7}{invert} ()}\label{a00796_aed5a4712a5fa717fa95f6be3f5ebd1f7}

\begin{DoxyCompactList}\small\item\em matrix inversion (returns true on success) \end{DoxyCompactList}\item 
\hypertarget{a00796_aa659048a5a8fbde7fe370f634e0be095}{Scalar {\bfseries determinant} () const }\label{a00796_aa659048a5a8fbde7fe370f634e0be095}

\item 
const Scalar $\ast$ \hyperlink{a00796_abb99505d5160126c39691044aea43f86}{get\+\_\+raw\+\_\+data} () const 
\item 
\hypertarget{a00796_a4a0b2934d651e4ccb6c1df50e41a2eaf}{const Scalar $\ast$ {\bfseries raw} () const }\label{a00796_a4a0b2934d651e4ccb6c1df50e41a2eaf}

\item 
\hypertarget{a00796_a3c57a19fbb74ff9fc2ceb47d83afa899}{const Scalar $\ast$ {\bfseries data} () const }\label{a00796_a3c57a19fbb74ff9fc2ceb47d83afa899}

\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00796_a6f84bf8d432ca64f0a7de46117cabedd}{Scalar {\bfseries mat\+\_\+} \mbox{[}16\mbox{]}}\label{a00796_a6f84bf8d432ca64f0a7de46117cabedd}

\end{DoxyCompactItemize}


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

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

Definition at line 98 of file Mesh\+Node2\+T.\+cc.



\subsection{Constructor \& Destructor Documentation}
\hypertarget{a00796_a6c9341b3be1a5fc6421e4df09fc1fc17}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4\+T@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4\+T}!Matrix4x4\+T@{Matrix4x4\+T}}
\index{Matrix4x4\+T@{Matrix4x4\+T}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4\+T@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4\+T}}
\subsubsection[{Matrix4x4\+T}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Scalar$>$ {\bf A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4\+T}$<$ Scalar $>$\+::{\bf Matrix4x4\+T} (
\begin{DoxyParamCaption}
\item[{const Scalar}]{\+\_\+array\mbox{[}16\mbox{]}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00796_a6c9341b3be1a5fc6421e4df09fc1fc17}
setup matrix using an array of N$\ast$\+N scalar values. elements are ordered 'column first' (like Open\+G\+L) 

Definition at line 113 of file Mesh\+Node2\+T.\+cc.



\subsection{Member Function Documentation}
\hypertarget{a00796_abb99505d5160126c39691044aea43f86}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4\+T@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4\+T}!get\+\_\+raw\+\_\+data@{get\+\_\+raw\+\_\+data}}
\index{get\+\_\+raw\+\_\+data@{get\+\_\+raw\+\_\+data}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4\+T@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4\+T}}
\subsubsection[{get\+\_\+raw\+\_\+data}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Scalar$>$ const Scalar$\ast$ {\bf A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Matrix4x4\+T}$<$ Scalar $>$\+::get\+\_\+raw\+\_\+data (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00796_abb99505d5160126c39691044aea43f86}
access to data array. not very nice, but in case of 4x4 matrices this member can be used to pass matrices to Open\+G\+L e.\+g. gl\+Load\+Matrixf(m.\+get\+\_\+raw\+\_\+data()); 

Definition at line 262 of file Mesh\+Node2\+T.\+cc.



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
A\+C\+G/\+Scenegraph/Mesh\+Node2\+T.\+cc\end{DoxyCompactItemize}
