\hypertarget{a01320}{\section{A\+C\+G\+:\+:Scene\+Graph\+:\+:Transform\+Node Class Reference}
\label{a01320}\index{A\+C\+G\+::\+Scene\+Graph\+::\+Transform\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Transform\+Node}}
}


{\ttfamily \#include $<$A\+C\+G/\+Scenegraph/\+Transform\+Node.\+hh$>$}

Inheritance diagram for A\+C\+G\+:\+:Scene\+Graph\+:\+:Transform\+Node\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.472406cm]{a01320}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01320_ad13f27719f2cbbb3bfa152e889b6b523}{\hyperlink{a01320_ad13f27719f2cbbb3bfa152e889b6b523}{Transform\+Node} (\hyperlink{a00327}{Base\+Node} $\ast$\+\_\+parent=0, const std\+::string \&\+\_\+name=\char`\"{}$<$Transform\+Node$>$\char`\"{})}\label{a01320_ad13f27719f2cbbb3bfa152e889b6b523}

\begin{DoxyCompactList}\small\item\em Constructor. \end{DoxyCompactList}\item 
\hypertarget{a01320_a1b578c0880b1763d1ec4284c6788eb82}{virtual \hyperlink{a01320_a1b578c0880b1763d1ec4284c6788eb82}{$\sim$\+Transform\+Node} ()}\label{a01320_a1b578c0880b1763d1ec4284c6788eb82}

\begin{DoxyCompactList}\small\item\em Destructor. \end{DoxyCompactList}\item 
\hypertarget{a01320_ae079650a5602f988c7f2fd52650a80a4}{\hyperlink{a01320_ae079650a5602f988c7f2fd52650a80a4}{A\+C\+G\+\_\+\+C\+L\+A\+S\+S\+N\+A\+M\+E} (\hyperlink{a01320}{Transform\+Node})}\label{a01320_ae079650a5602f988c7f2fd52650a80a4}

\begin{DoxyCompactList}\small\item\em set name \end{DoxyCompactList}\item 
\hypertarget{a01320_a604155f49d6b365300d8028d88e095b4}{void \hyperlink{a01320_a604155f49d6b365300d8028d88e095b4}{enter} (\hyperlink{a00643}{G\+L\+State} \&\+\_\+state, const \hyperlink{a00509}{Draw\+Modes\+::\+Draw\+Mode} \&\+\_\+drawmode)}\label{a01320_a604155f49d6b365300d8028d88e095b4}

\begin{DoxyCompactList}\small\item\em set current G\+L-\/color and G\+L-\/material \end{DoxyCompactList}\item 
\hypertarget{a01320_ade9575be6fc6e2d245ec02a1cb741cff}{void \hyperlink{a01320_ade9575be6fc6e2d245ec02a1cb741cff}{leave} (\hyperlink{a00643}{G\+L\+State} \&\+\_\+state, const \hyperlink{a00509}{Draw\+Modes\+::\+Draw\+Mode} \&\+\_\+drawmode)}\label{a01320_ade9575be6fc6e2d245ec02a1cb741cff}

\begin{DoxyCompactList}\small\item\em restores original G\+L-\/color and G\+L-\/material \end{DoxyCompactList}\item 
\hypertarget{a01320_a65593a70a000786d455e9e5faba41df4}{void \hyperlink{a01320_a65593a70a000786d455e9e5faba41df4}{set\+\_\+center} (const \hyperlink{a03336_ae4a56bb6b65d7f966934982a1e370213}{Vec3d} \&\+\_\+c)}\label{a01320_a65593a70a000786d455e9e5faba41df4}

\begin{DoxyCompactList}\small\item\em set center \end{DoxyCompactList}\item 
\hypertarget{a01320_ac2fd8f1d69f78764a4aa310f767caa2a}{const \hyperlink{a03336_ae4a56bb6b65d7f966934982a1e370213}{Vec3d} \& \hyperlink{a01320_ac2fd8f1d69f78764a4aa310f767caa2a}{center} () const }\label{a01320_ac2fd8f1d69f78764a4aa310f767caa2a}

\begin{DoxyCompactList}\small\item\em get center \end{DoxyCompactList}\item 
void \hyperlink{a01320_a29d9dbfbaaf43140b9fb1eb121246af3}{load\+Identity} ()
\item 
virtual void \hyperlink{a01320_a03c77db3e04b239e622a4bc8dfb19c5e}{set\+Identity} ()
\item 
\hypertarget{a01320_adfccba97fe1e7331403b7c4c08465d06}{void \hyperlink{a01320_adfccba97fe1e7331403b7c4c08465d06}{translate} (const \hyperlink{a03336_ae4a56bb6b65d7f966934982a1e370213}{Vec3d} \&\+\_\+v)}\label{a01320_adfccba97fe1e7331403b7c4c08465d06}

\begin{DoxyCompactList}\small\item\em Add a translation to the current Transformation. \end{DoxyCompactList}\item 
void \hyperlink{a01320_ac5cf6af1fc3f73c1d27ec924462233ce}{rotate} (double \+\_\+angle, const \hyperlink{a03336_ae4a56bb6b65d7f966934982a1e370213}{Vec3d} \&\+\_\+axis)
\item 
\hypertarget{a01320_a63f793da82545feaf58e99588c659ae4}{void \hyperlink{a01320_a63f793da82545feaf58e99588c659ae4}{scale} (double \+\_\+s)}\label{a01320_a63f793da82545feaf58e99588c659ae4}

\begin{DoxyCompactList}\small\item\em Add scaling to the current Transformation. \end{DoxyCompactList}\item 
\hypertarget{a01320_ab204399df938145abbfe986a125b7ef2}{void \hyperlink{a01320_ab204399df938145abbfe986a125b7ef2}{scale} (const \hyperlink{a03336_ae4a56bb6b65d7f966934982a1e370213}{Vec3d} \&\+\_\+s)}\label{a01320_ab204399df938145abbfe986a125b7ef2}

\begin{DoxyCompactList}\small\item\em Add scaling to the current Transformation. \end{DoxyCompactList}\item 
\hypertarget{a01320_a1a557a382eccb48c40c0b47b05762a61}{void \hyperlink{a01320_a1a557a382eccb48c40c0b47b05762a61}{scale} (const \hyperlink{a03336_a574eaee6f4eff166845ff5c654b0b852}{G\+L\+Matrixd} \&\+\_\+m)}\label{a01320_a1a557a382eccb48c40c0b47b05762a61}

\begin{DoxyCompactList}\small\item\em Add scaling to the current Transformation. \end{DoxyCompactList}\item 
\hypertarget{a01320_a241c7bcd838b7825acd2db84a4f1c4f5}{const \hyperlink{a03336_a574eaee6f4eff166845ff5c654b0b852}{G\+L\+Matrixd} \& \hyperlink{a01320_a241c7bcd838b7825acd2db84a4f1c4f5}{matrix} () const }\label{a01320_a241c7bcd838b7825acd2db84a4f1c4f5}

\begin{DoxyCompactList}\small\item\em Returns a const reference to the current transformation matrix. \end{DoxyCompactList}\item 
\hypertarget{a01320_a3039553c85709e4b13ac3d5bf3c60daf}{const \hyperlink{a03336_a574eaee6f4eff166845ff5c654b0b852}{G\+L\+Matrixd} \& \hyperlink{a01320_a3039553c85709e4b13ac3d5bf3c60daf}{inverse\+\_\+matrix} () const }\label{a01320_a3039553c85709e4b13ac3d5bf3c60daf}

\begin{DoxyCompactList}\small\item\em return inverse matrix \end{DoxyCompactList}\item 
\hypertarget{a01320_a2ff0403e56aa8d173c200b886787a01a}{void \hyperlink{a01320_a2ff0403e56aa8d173c200b886787a01a}{rotation} (\hyperlink{a03336_ae4a56bb6b65d7f966934982a1e370213}{Vec3d} \&\+\_\+axis, double \&\+\_\+angle) const }\label{a01320_a2ff0403e56aa8d173c200b886787a01a}

\begin{DoxyCompactList}\small\item\em return rotation axis \& angle \end{DoxyCompactList}\item 
\hypertarget{a01320_abf97e9ca464e3e7c3300b188e0979ec1}{const \hyperlink{a03336_a574eaee6f4eff166845ff5c654b0b852}{G\+L\+Matrixd} \& \hyperlink{a01320_abf97e9ca464e3e7c3300b188e0979ec1}{rotation} () const }\label{a01320_abf97e9ca464e3e7c3300b188e0979ec1}

\begin{DoxyCompactList}\small\item\em return rotation matrix \end{DoxyCompactList}\item 
\hypertarget{a01320_a280715a95a0dd01cb8938f9ca096c70f}{const \hyperlink{a03336_a574eaee6f4eff166845ff5c654b0b852}{G\+L\+Matrixd} \& \hyperlink{a01320_a280715a95a0dd01cb8938f9ca096c70f}{inverse\+\_\+rotation} () const }\label{a01320_a280715a95a0dd01cb8938f9ca096c70f}

\begin{DoxyCompactList}\small\item\em return inverse rotation matrix \end{DoxyCompactList}\item 
\hypertarget{a01320_aa620d369faaf574953ddc2dcbc5999f9}{const \hyperlink{a03336_ae4a56bb6b65d7f966934982a1e370213}{Vec3d} \& \hyperlink{a01320_aa620d369faaf574953ddc2dcbc5999f9}{translation} () const }\label{a01320_aa620d369faaf574953ddc2dcbc5999f9}

\begin{DoxyCompactList}\small\item\em returns ref. to translation vector \end{DoxyCompactList}\item 
\hypertarget{a01320_a1edb566c8fc809eae464f62b0d5a4858}{const \hyperlink{a03336_a574eaee6f4eff166845ff5c654b0b852}{G\+L\+Matrixd} \& \hyperlink{a01320_a1edb566c8fc809eae464f62b0d5a4858}{scale} () const }\label{a01320_a1edb566c8fc809eae464f62b0d5a4858}

\begin{DoxyCompactList}\small\item\em return scale matrix \end{DoxyCompactList}\item 
\hypertarget{a01320_afb0fd1bfbe1604eb959e1bb6913ddb15}{const \hyperlink{a03336_a574eaee6f4eff166845ff5c654b0b852}{G\+L\+Matrixd} \& \hyperlink{a01320_afb0fd1bfbe1604eb959e1bb6913ddb15}{inverse\+\_\+scale} () const }\label{a01320_afb0fd1bfbe1604eb959e1bb6913ddb15}

\begin{DoxyCompactList}\small\item\em return inverse scale matrix \end{DoxyCompactList}\item 
\hypertarget{a01320_ad64aa4ebd59cac0e431bd0dbbc33cc18}{bool {\bfseries apply\+\_\+transformation} ()}\label{a01320_ad64aa4ebd59cac0e431bd0dbbc33cc18}

\item 
\hypertarget{a01320_a670084dc86799657818dc97aaba7496e}{void {\bfseries apply\+\_\+transformation} (bool \+\_\+apply\+Transformation)}\label{a01320_a670084dc86799657818dc97aaba7496e}

\item 
\hypertarget{a01320_a21e32a56c9ed455e5ca485a1ce2206f0}{bool {\bfseries is2\+D} ()}\label{a01320_a21e32a56c9ed455e5ca485a1ce2206f0}

\item 
\hypertarget{a01320_aaeb34cf45de0d3a60496aa050a4bc1a3}{void {\bfseries set2\+D} (bool \+\_\+2d)}\label{a01320_aaeb34cf45de0d3a60496aa050a4bc1a3}

\item 
\hypertarget{a01320_a3aac4ee9acfa90e687358c2814c75793}{bool {\bfseries is\+Per\+Skeleton\+Object} ()}\label{a01320_a3aac4ee9acfa90e687358c2814c75793}

\item 
\hypertarget{a01320_a263d2a1a569509debf03187ced07eff7}{void {\bfseries set\+Per\+Skeleton\+Object} (bool \+\_\+is)}\label{a01320_a263d2a1a569509debf03187ced07eff7}

\item 
\hypertarget{a01320_a13ed6e6fc821e22e6e41731ace915ba7}{void {\bfseries set\+Per\+Skeleton\+Model\+View} (\hyperlink{a03336_a574eaee6f4eff166845ff5c654b0b852}{G\+L\+Matrixd} \+\_\+is)}\label{a01320_a13ed6e6fc821e22e6e41731ace915ba7}

\item 
\hypertarget{a01320_a683731afd0e96009f6ca5e0a2a8d3057}{void {\bfseries ortho2\+D\+Mode} (\hyperlink{a00643}{G\+L\+State} \&\+\_\+state)}\label{a01320_a683731afd0e96009f6ca5e0a2a8d3057}

\item 
\hypertarget{a01320_ad316cfe2f087370a754693328f095d66}{void {\bfseries per\+Skeleton\+Mode} (\hyperlink{a00643}{G\+L\+State} \&\+\_\+state)}\label{a01320_ad316cfe2f087370a754693328f095d66}

\item 
\hypertarget{a01320_a7f60b732158cf38c30a6d24b6e1e78dc}{void {\bfseries update2\+D\+Offset} (\hyperlink{a01409}{A\+C\+G\+::\+Vec2d} \+\_\+offset)}\label{a01320_a7f60b732158cf38c30a6d24b6e1e78dc}

\item 
\hypertarget{a01320_a30b97fc4121ca4737928ac77a2b05e01}{void {\bfseries scale2\+D} (double \+\_\+scale)}\label{a01320_a30b97fc4121ca4737928ac77a2b05e01}

\item 
\hypertarget{a01320_a875cac6f0c636d14ade25f781b999012}{void {\bfseries set\+Image\+Dimensions} (\hyperlink{a01409}{A\+C\+G\+::\+Vec2i} \+\_\+dim)}\label{a01320_a875cac6f0c636d14ade25f781b999012}

\end{DoxyCompactItemize}
\subsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01320_aa837092409375c29edc21adf73d51d4f}{bool {\bfseries is2\+D\+Object\+\_\+}}\label{a01320_aa837092409375c29edc21adf73d51d4f}

\item 
\hypertarget{a01320_a809e9787b83cbe8e8cc174701b178363}{bool {\bfseries is\+Per\+Skeleton\+Object\+\_\+}}\label{a01320_a809e9787b83cbe8e8cc174701b178363}

\item 
\hypertarget{a01320_abdffa0b1f6373f5df0e57c78e5325d63}{\hyperlink{a03336_a574eaee6f4eff166845ff5c654b0b852}{G\+L\+Matrixd} {\bfseries per\+Skeleton\+Model\+View\+\_\+}}\label{a01320_abdffa0b1f6373f5df0e57c78e5325d63}

\item 
\hypertarget{a01320_a80e45d56542c685cf3393ce32544682b}{double {\bfseries scale\+Factor2\+D\+\_\+}}\label{a01320_a80e45d56542c685cf3393ce32544682b}

\item 
\hypertarget{a01320_aee681b61fcc385403134551ab54c3567}{\hyperlink{a01409}{A\+C\+G\+::\+Vec2i} {\bfseries image\+Dimensions\+\_\+}}\label{a01320_aee681b61fcc385403134551ab54c3567}

\item 
\hypertarget{a01320_ac6b5182a800d54f2ef53981839e4d898}{\hyperlink{a01409}{A\+C\+G\+::\+Vec2d} {\bfseries offset\+\_\+}}\label{a01320_ac6b5182a800d54f2ef53981839e4d898}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01320_aaaf9345bbdcdbb13bf98e16ddd5f938d}{void \hyperlink{a01320_aaaf9345bbdcdbb13bf98e16ddd5f938d}{update\+Matrix} ()}\label{a01320_aaaf9345bbdcdbb13bf98e16ddd5f938d}

\begin{DoxyCompactList}\small\item\em update matrix \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01320_a09ad60bc5f8b224a40b5414d31b1278e}{\hyperlink{a03336_a574eaee6f4eff166845ff5c654b0b852}{G\+L\+Matrixd} {\bfseries matrix\+\_\+}}\label{a01320_a09ad60bc5f8b224a40b5414d31b1278e}

\item 
\hypertarget{a01320_a94980aa0a7a2d22d80450e72d748f3de}{\hyperlink{a03336_a574eaee6f4eff166845ff5c654b0b852}{G\+L\+Matrixd} {\bfseries inverse\+\_\+matrix\+\_\+}}\label{a01320_a94980aa0a7a2d22d80450e72d748f3de}

\item 
\hypertarget{a01320_a26c650a87214bd9d7a3199722ab49f3e}{\hyperlink{a03336_a574eaee6f4eff166845ff5c654b0b852}{G\+L\+Matrixd} {\bfseries rotation\+\_\+matrix\+\_\+}}\label{a01320_a26c650a87214bd9d7a3199722ab49f3e}

\item 
\hypertarget{a01320_aa8108bdd93ae3ee56d83f102a598451b}{\hyperlink{a03336_a574eaee6f4eff166845ff5c654b0b852}{G\+L\+Matrixd} {\bfseries inverse\+\_\+rotation\+\_\+matrix\+\_\+}}\label{a01320_aa8108bdd93ae3ee56d83f102a598451b}

\item 
\hypertarget{a01320_a8da0af44e4ecb1a31bb3c6f089b3d098}{\hyperlink{a03336_a574eaee6f4eff166845ff5c654b0b852}{G\+L\+Matrixd} {\bfseries scale\+\_\+matrix\+\_\+}}\label{a01320_a8da0af44e4ecb1a31bb3c6f089b3d098}

\item 
\hypertarget{a01320_aac5248a3880a27fe3d50e283161798a6}{\hyperlink{a03336_a574eaee6f4eff166845ff5c654b0b852}{G\+L\+Matrixd} {\bfseries inverse\+\_\+scale\+\_\+matrix\+\_\+}}\label{a01320_aac5248a3880a27fe3d50e283161798a6}

\item 
\hypertarget{a01320_ac2d9f02945f2571a61ab5e7f729c73fe}{\hyperlink{a03336_ae4a56bb6b65d7f966934982a1e370213}{Vec3d} {\bfseries center\+\_\+}}\label{a01320_ac2d9f02945f2571a61ab5e7f729c73fe}

\item 
\hypertarget{a01320_a4cdc390b1829f974bb9961abfeb4d74e}{\hyperlink{a03336_ae4a56bb6b65d7f966934982a1e370213}{Vec3d} {\bfseries translation\+\_\+}}\label{a01320_a4cdc390b1829f974bb9961abfeb4d74e}

\item 
\hypertarget{a01320_a006c5b66f2077286fc55e8c667223afa}{\hyperlink{a01092}{Quaterniond} {\bfseries quaternion\+\_\+}}\label{a01320_a006c5b66f2077286fc55e8c667223afa}

\item 
\hypertarget{a01320_a8c02408f73488007a83739a9d8aee653}{bool {\bfseries apply\+Transformation\+\_\+}}\label{a01320_a8c02408f73488007a83739a9d8aee653}

\end{DoxyCompactItemize}
\subsection*{Additional Inherited Members}


\subsection{Detailed Description}
\hyperlink{a01320}{Transform\+Node} -\/ general 3\+D geometric transformation node. Provides functionality to translate, scale or rotate around a specified center. This is the base class for e.\+g. the \hyperlink{a01317}{Trackball\+Node} and the \hyperlink{a00788}{Manipulator\+Node}, that only add a G\+U\+I for generating the transformations.

Note that in order for the transformations to apply in each traversal of the scenegraph, one has to call apply\+\_\+transformation(true) once. 

Definition at line 95 of file Transform\+Node.\+hh.



\subsection{Member Function Documentation}
\hypertarget{a01320_a29d9dbfbaaf43140b9fb1eb121246af3}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+Transform\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Transform\+Node}!load\+Identity@{load\+Identity}}
\index{load\+Identity@{load\+Identity}!A\+C\+G\+::\+Scene\+Graph\+::\+Transform\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Transform\+Node}}
\subsubsection[{load\+Identity}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Scene\+Graph\+::\+Transform\+Node\+::load\+Identity (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a01320_a29d9dbfbaaf43140b9fb1eb121246af3}
Reset transformation to identity, i.\+e. reset rotation, translating and scaling factor. 

Definition at line 97 of file Transform\+Node.\+cc.

\hypertarget{a01320_ac5cf6af1fc3f73c1d27ec924462233ce}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+Transform\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Transform\+Node}!rotate@{rotate}}
\index{rotate@{rotate}!A\+C\+G\+::\+Scene\+Graph\+::\+Transform\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Transform\+Node}}
\subsubsection[{rotate}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Scene\+Graph\+::\+Transform\+Node\+::rotate (
\begin{DoxyParamCaption}
\item[{double}]{\+\_\+angle, }
\item[{const {\bf Vec3d} \&}]{\+\_\+axis}
\end{DoxyParamCaption}
)}}\label{a01320_ac5cf6af1fc3f73c1d27ec924462233ce}
Add a rotation to the current Transformation. Assume angle in degree and axis normalized 

Definition at line 143 of file Transform\+Node.\+cc.

\hypertarget{a01320_a03c77db3e04b239e622a4bc8dfb19c5e}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+Transform\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Transform\+Node}!set\+Identity@{set\+Identity}}
\index{set\+Identity@{set\+Identity}!A\+C\+G\+::\+Scene\+Graph\+::\+Transform\+Node@{A\+C\+G\+::\+Scene\+Graph\+::\+Transform\+Node}}
\subsubsection[{set\+Identity}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Scene\+Graph\+::\+Transform\+Node\+::set\+Identity (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{a01320_a03c77db3e04b239e622a4bc8dfb19c5e}
set the current transformation to the identity transformation, i.\+e. change the \hyperlink{a01320_ac2fd8f1d69f78764a4aa310f767caa2a}{center()} to the transfomed center and \hyperlink{a01320_a29d9dbfbaaf43140b9fb1eb121246af3}{load\+Identity()}. 

Reimplemented in \hyperlink{a01321_a2efccfa938d54db24c82b6d370637065}{A\+C\+G\+::\+Scene\+Graph\+::\+Translation\+Manipulator\+Node}, \hyperlink{a01317_a21b905f368464c909f72d47ce75fab16}{A\+C\+G\+::\+Scene\+Graph\+::\+Trackball\+Node}, and \hyperlink{a00788_a0b1241fcd57e7e473e1c68ed24a40be3}{A\+C\+G\+::\+Scene\+Graph\+::\+Manipulator\+Node}.



Definition at line 118 of file Transform\+Node.\+cc.



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