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


{\ttfamily \#include $<$A\+C\+G/\+Math/\+Matrix4x4\+T.\+hh$>$}

Inheritance diagram for A\+C\+G\+:\+:Matrix4x4\+T$<$ Scalar $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{a00797}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00797_a1357c6d16a1cd94ae15aa9e46799b2e0}{\hyperlink{a00797_a1357c6d16a1cd94ae15aa9e46799b2e0}{Matrix4x4\+T} ()}\label{a00797_a1357c6d16a1cd94ae15aa9e46799b2e0}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

\end{DoxyCompactItemize}


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

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

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



\subsection{Constructor \& Destructor Documentation}
\hypertarget{a00797_a15d9a45fa1ccb2f2b8152e7c4ce417c9}{\index{A\+C\+G\+::\+Matrix4x4\+T@{A\+C\+G\+::\+Matrix4x4\+T}!Matrix4x4\+T@{Matrix4x4\+T}}
\index{Matrix4x4\+T@{Matrix4x4\+T}!A\+C\+G\+::\+Matrix4x4\+T@{A\+C\+G\+::\+Matrix4x4\+T}}
\subsubsection[{Matrix4x4\+T}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Scalar$>$ {\bf 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{a00797_a15d9a45fa1ccb2f2b8152e7c4ce417c9}
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 Matrix4x4\+T.\+hh.



\subsection{Member Function Documentation}
\hypertarget{a00797_af44b2f888354d4a107e294ca02b9e876}{\index{A\+C\+G\+::\+Matrix4x4\+T@{A\+C\+G\+::\+Matrix4x4\+T}!get\+\_\+raw\+\_\+data@{get\+\_\+raw\+\_\+data}}
\index{get\+\_\+raw\+\_\+data@{get\+\_\+raw\+\_\+data}!A\+C\+G\+::\+Matrix4x4\+T@{A\+C\+G\+::\+Matrix4x4\+T}}
\subsubsection[{get\+\_\+raw\+\_\+data}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Scalar$>$ const Scalar$\ast$ {\bf A\+C\+G\+::\+Matrix4x4\+T}$<$ Scalar $>$\+::get\+\_\+raw\+\_\+data (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00797_af44b2f888354d4a107e294ca02b9e876}
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 Matrix4x4\+T.\+hh.



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