\doxysection{Geometry\texorpdfstring{$<$}{<} T \texorpdfstring{$>$}{>} Class Template Reference}
\hypertarget{class_geometry}{}\label{class_geometry}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}}


Class representing a geometric structure composed of vertices, normals, and properties.  




{\ttfamily \#include $<$Geometry.\+h$>$}

\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{class_geometry_a3ecae6746e4fb148d09a26a31588dadb}{Geometry}} ()
\begin{DoxyCompactList}\small\item\em Default constructor for \doxylink{class_geometry}{Geometry} class. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_geometry_a645065ff11b87095e005f1894cbded29}{Geometry}} (std\+::string filename)
\begin{DoxyCompactList}\small\item\em Constructor that loads geometry data from a binary STL file. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_geometry_aee17ddf36f281e49813dd2d3ba620b23}{\texorpdfstring{$\sim$}{\string~}\+Geometry}} ()
\begin{DoxyCompactList}\small\item\em Destructor for \doxylink{class_geometry}{Geometry} class. \end{DoxyCompactList}\item 
unsigned int \mbox{\hyperlink{class_geometry_afd3955430cb19adbb9ea3797e5d1ec61}{get\+\_\+num\+\_\+vertices}} () const
\begin{DoxyCompactList}\small\item\em Get the number of vertices (triangles) in the geometry. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_geometry_a291554967c1c34c8e4c603736b1a89d4}{shift}} (T \texorpdfstring{$\ast$}{*}offset)
\begin{DoxyCompactList}\small\item\em Shift the geometry by an offset. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_geometry_a4b99e5daf69aa2557b181e181d236949}{shift}} (\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ offset)
\begin{DoxyCompactList}\small\item\em Shift the geometry by a \doxylink{class_matrix}{Matrix} offset. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_geometry_ad7e2894795ff250886a98adbfb4a342e}{scale}} (T factor)
\begin{DoxyCompactList}\small\item\em Scale the geometry by a factor. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_geometry_a195c849697e0234844c07c49ef6cac87}{rotate}} (int axis, T angle)
\begin{DoxyCompactList}\small\item\em Rotate the geometry around a specific axis. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_geometry_a593b70236a2fe2da9c3ac9363c43dfea}{add\+\_\+\+GSI\+\_\+property}} (const char \texorpdfstring{$\ast$}{*}property\+\_\+name, T value)
\begin{DoxyCompactList}\small\item\em Add a scalar GSI property to the geometry. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_geometry_ad780497c5c7680ce273c9892557bd383}{add\+\_\+\+GSI\+\_\+property}} (const char \texorpdfstring{$\ast$}{*}property\+\_\+name, const \mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \&values)
\begin{DoxyCompactList}\small\item\em Add a matrix GSI property to the geometry. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_geometry_a29348287f2414cbd55f42fbc61884205}{add\+\_\+surface\+\_\+property}} (const char \texorpdfstring{$\ast$}{*}property\+\_\+name, T value)
\begin{DoxyCompactList}\small\item\em Add a scalar surface property to the geometry. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_geometry_af38951a5fa68abacd3ac8dc8de114dbd}{add\+\_\+surface\+\_\+property}} (const char \texorpdfstring{$\ast$}{*}property\+\_\+name, const \mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \&values)
\begin{DoxyCompactList}\small\item\em Add a matrix surface property to the geometry. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_geometry_ad74e0bc682547130b4b41be31f85b0c9}{set\+\_\+\+A\+\_\+ref}} (T A\+\_\+ref)
\begin{DoxyCompactList}\small\item\em Set the reference area for the geometry. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_geometry_a3c2eae1927ed7443d433fc8de3a8fba2}{set\+\_\+c\+\_\+ref}} (T c\+\_\+ref)
\begin{DoxyCompactList}\small\item\em Set the reference speed for the geometry. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_geometry_a3340f8bcbfb18a7d0b16a4f3c8cd6809}{compute\+\_\+bounding\+\_\+box}} ()
\begin{DoxyCompactList}\small\item\em Compute the bounding box for the geometry. \end{DoxyCompactList}\item 
T \mbox{\hyperlink{class_geometry_ac5e551600ca47ba80a6eb456d760a206}{get\+\_\+\+A\+\_\+ref}} ()
\begin{DoxyCompactList}\small\item\em Get the reference area. \end{DoxyCompactList}\item 
T \mbox{\hyperlink{class_geometry_a6d55f79ad40ed41cfbaec94c8201f743}{get\+\_\+c\+\_\+ref}} ()
\begin{DoxyCompactList}\small\item\em Get the reference speed. \end{DoxyCompactList}\item 
T \mbox{\hyperlink{class_geometry_acc19cfbed3a47428424c7250a0aa72f2}{compute\+\_\+area}} (unsigned int index)
\begin{DoxyCompactList}\small\item\em Compute the area of a specific triangle in the geometry. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_geometry_a0d3d9382f0d65fec1affcd539bfa0733}{print}} ()
\begin{DoxyCompactList}\small\item\em Print the geometry details, including vertices, normals, and properties. \end{DoxyCompactList}\item 
\Hypertarget{class_geometry_aee3b2b5edc39c8a419a62f350a8ac0d3}\label{class_geometry_aee3b2b5edc39c8a419a62f350a8ac0d3} 
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \& {\bfseries get\+\_\+p1\+\_\+x} ()
\item 
\Hypertarget{class_geometry_a9e9b6f9ecca5a36c2b9904a8d78e8958}\label{class_geometry_a9e9b6f9ecca5a36c2b9904a8d78e8958} 
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \& {\bfseries get\+\_\+p1\+\_\+y} ()
\item 
\Hypertarget{class_geometry_ad1cad0648b41c21a91014d7c82e6e1ff}\label{class_geometry_ad1cad0648b41c21a91014d7c82e6e1ff} 
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \& {\bfseries get\+\_\+p1\+\_\+z} ()
\item 
\Hypertarget{class_geometry_a7082d759958d17ab2fb4fa7c056ab404}\label{class_geometry_a7082d759958d17ab2fb4fa7c056ab404} 
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \& {\bfseries get\+\_\+p2\+\_\+x} ()
\item 
\Hypertarget{class_geometry_a87b1a497cbf6091f815bee8af14ad8ba}\label{class_geometry_a87b1a497cbf6091f815bee8af14ad8ba} 
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \& {\bfseries get\+\_\+p2\+\_\+y} ()
\item 
\Hypertarget{class_geometry_a59ffbb6e3773f608af3f5f2d3c3aa65e}\label{class_geometry_a59ffbb6e3773f608af3f5f2d3c3aa65e} 
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \& {\bfseries get\+\_\+p2\+\_\+z} ()
\item 
\Hypertarget{class_geometry_a7347a722c2fb0e69c41962b8b9881b15}\label{class_geometry_a7347a722c2fb0e69c41962b8b9881b15} 
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \& {\bfseries get\+\_\+p3\+\_\+x} ()
\item 
\Hypertarget{class_geometry_a49e9b44c9a457a839b44c290e0aac76c}\label{class_geometry_a49e9b44c9a457a839b44c290e0aac76c} 
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \& {\bfseries get\+\_\+p3\+\_\+y} ()
\item 
\Hypertarget{class_geometry_ae59e29e1d1d1163ceb30ecb61aadfac9}\label{class_geometry_ae59e29e1d1d1163ceb30ecb61aadfac9} 
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \& {\bfseries get\+\_\+p3\+\_\+z} ()
\item 
\Hypertarget{class_geometry_ade467633f35ed13d341812ffbf348798}\label{class_geometry_ade467633f35ed13d341812ffbf348798} 
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \& {\bfseries get\+\_\+norm\+\_\+x} ()
\item 
\Hypertarget{class_geometry_abac5cb7a0638b023ff419367a43fb77c}\label{class_geometry_abac5cb7a0638b023ff419367a43fb77c} 
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \& {\bfseries get\+\_\+norm\+\_\+y} ()
\item 
\Hypertarget{class_geometry_ae5519989aeef1af4532bd1a6612fd734}\label{class_geometry_ae5519989aeef1af4532bd1a6612fd734} 
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \& {\bfseries get\+\_\+norm\+\_\+z} ()
\item 
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \& \mbox{\hyperlink{class_geometry_a6ba9098a3d39fddbf021df490a6abbed}{get\+\_\+\+GSI\+\_\+property}} (int index)
\begin{DoxyCompactList}\small\item\em Get a GSI property by index. \end{DoxyCompactList}\item 
char \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{class_geometry_ac477caa4b4f34733bbe1752eaf966dcf}{get\+\_\+\+GSI\+\_\+property\+\_\+name}} (int index)
\begin{DoxyCompactList}\small\item\em Get the name of a GSI property by index. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \mbox{\hyperlink{class_geometry_ab2a662ec4c2150cdb79a2ca1569f9898}{get\+\_\+bounding\+\_\+box}} ()
\begin{DoxyCompactList}\small\item\em Get the bounding box of the geometry. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \mbox{\hyperlink{class_geometry_a0a0927b0b2eb33bf9eb8f66d9114d04e}{get\+\_\+center}} ()
\begin{DoxyCompactList}\small\item\em Get the center of the bounding box of the geometry. \end{DoxyCompactList}\item 
std\+::vector$<$ \mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ $>$ \& \mbox{\hyperlink{class_geometry_a04f06f9115074fd95c4f66db48572c30}{get\+\_\+\+GSI\+\_\+properties}} ()
\begin{DoxyCompactList}\small\item\em Get all GSI properties. \end{DoxyCompactList}\item 
std\+::vector$<$ const char \texorpdfstring{$\ast$}{*} $>$ \& \mbox{\hyperlink{class_geometry_adf82e0a1da5d92dfefcb1ab63ea2a23c}{get\+\_\+\+GSI\+\_\+property\+\_\+names}} ()
\begin{DoxyCompactList}\small\item\em Get all GSI property names. \end{DoxyCompactList}\item 
std\+::vector$<$ \mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ $>$ \& \mbox{\hyperlink{class_geometry_a729679f2bcc32ddd36d5b636cfdc79b6}{get\+\_\+surface\+\_\+properties}} ()
\begin{DoxyCompactList}\small\item\em Get all surface properties. \end{DoxyCompactList}\item 
std\+::vector$<$ const char \texorpdfstring{$\ast$}{*} $>$ \& \mbox{\hyperlink{class_geometry_a3830df67dee94fccb138a70fa52ea101}{get\+\_\+surface\+\_\+property\+\_\+names}} ()
\begin{DoxyCompactList}\small\item\em Get all surface property names. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
\subsubsection*{template$<$typename T$>$\newline
class Geometry$<$ T $>$}
Class representing a geometric structure composed of vertices, normals, and properties. 

This class is used to manage 3D geometries, typically loaded from STL files. It stores vertices, normals, gas-\/surface interaction (GSI) properties, and surface properties. The class provides methods for manipulating the geometry (shift, scale, rotate), adding properties, and calculating bounding boxes and areas.


\begin{DoxyTemplParams}{Template Parameters}
{\em T} & Type of the numeric values used for geometry (e.\+g., float, double). \\
\hline
\end{DoxyTemplParams}


\doxysubsection{Constructor \& Destructor Documentation}
\Hypertarget{class_geometry_a3ecae6746e4fb148d09a26a31588dadb}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!Geometry@{Geometry}}
\index{Geometry@{Geometry}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{Geometry()}{Geometry()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{class_geometry_a3ecae6746e4fb148d09a26a31588dadb} 
template$<$typename T $>$ \\
\mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\mbox{\hyperlink{class_geometry}{\+::\+Geometry}} (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})}



Default constructor for \doxylink{class_geometry}{Geometry} class. 

Default constructor for the \doxylink{class_geometry}{Geometry} class.

Initializes the geometry with zero vertices, and default values for reference area and speed.

Initializes the number of vertices to zero and sets default values for the reference area and speed. \Hypertarget{class_geometry_a645065ff11b87095e005f1894cbded29}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!Geometry@{Geometry}}
\index{Geometry@{Geometry}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{Geometry()}{Geometry()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{class_geometry_a645065ff11b87095e005f1894cbded29} 
template$<$typename T $>$ \\
\mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\mbox{\hyperlink{class_geometry}{\+::\+Geometry}} (\begin{DoxyParamCaption}\item[{std\+::string}]{filename}{}\end{DoxyParamCaption})}



Constructor that loads geometry data from a binary STL file. 


\begin{DoxyParams}{Parameters}
{\em filename} & The name of the STL file to load.\\
\hline
\end{DoxyParams}
This constructor reads an STL file, initializes the vertices, normals, and other properties, and computes the bounding box for the geometry.


\begin{DoxyParams}{Parameters}
{\em filename} & Name of the binary STL file to load. \\
\hline
\end{DoxyParams}
\Hypertarget{class_geometry_aee17ddf36f281e49813dd2d3ba620b23}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!````~Geometry@{\texorpdfstring{$\sim$}{\string~}Geometry}}
\index{````~Geometry@{\texorpdfstring{$\sim$}{\string~}Geometry}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{\texorpdfstring{$\sim$}{\string~}Geometry()}{\string~Geometry()}}
{\footnotesize\ttfamily \label{class_geometry_aee17ddf36f281e49813dd2d3ba620b23} 
template$<$typename T $>$ \\
\mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::\texorpdfstring{$\sim$}{\string~}\mbox{\hyperlink{class_geometry}{Geometry}} (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})}



Destructor for \doxylink{class_geometry}{Geometry} class. 

Destructor for the \doxylink{class_geometry}{Geometry} class.

Resets the number of vertices to zero.

Resets the number of vertices to zero, effectively clearing the geometry data. 

\doxysubsection{Member Function Documentation}
\Hypertarget{class_geometry_ad780497c5c7680ce273c9892557bd383}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!add\_GSI\_property@{add\_GSI\_property}}
\index{add\_GSI\_property@{add\_GSI\_property}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{add\_GSI\_property()}{add\_GSI\_property()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{class_geometry_ad780497c5c7680ce273c9892557bd383} 
template$<$typename T $>$ \\
void \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::add\+\_\+\+GSI\+\_\+property (\begin{DoxyParamCaption}\item[{const char \texorpdfstring{$\ast$}{*}}]{property\+\_\+name}{, }\item[{const \mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \&}]{values}{}\end{DoxyParamCaption})}



Add a matrix GSI property to the geometry. 

Adds a matrix GSI (Gas-\/\+Surface Interaction) property to the geometry.


\begin{DoxyParams}{Parameters}
{\em property\+\_\+name} & The name of the GSI property. \\
\hline
{\em values} & \doxylink{class_matrix}{Matrix} of values for the GSI property.\\
\hline
\end{DoxyParams}
This function adds a matrix of values as a GSI property to the list of GSI properties.


\begin{DoxyParams}{Parameters}
{\em property\+\_\+name} & The name of the GSI property. \\
\hline
{\em values} & \doxylink{class_matrix}{Matrix} of values for the GSI property. \\
\hline
\end{DoxyParams}
\Hypertarget{class_geometry_a593b70236a2fe2da9c3ac9363c43dfea}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!add\_GSI\_property@{add\_GSI\_property}}
\index{add\_GSI\_property@{add\_GSI\_property}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{add\_GSI\_property()}{add\_GSI\_property()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{class_geometry_a593b70236a2fe2da9c3ac9363c43dfea} 
template$<$typename T $>$ \\
void \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::add\+\_\+\+GSI\+\_\+property (\begin{DoxyParamCaption}\item[{const char \texorpdfstring{$\ast$}{*}}]{property\+\_\+name}{, }\item[{T}]{value}{}\end{DoxyParamCaption})}



Add a scalar GSI property to the geometry. 

Adds a scalar GSI (Gas-\/\+Surface Interaction) property to the geometry.


\begin{DoxyParams}{Parameters}
{\em property\+\_\+name} & The name of the GSI property. \\
\hline
{\em value} & The scalar value to assign to the property.\\
\hline
\end{DoxyParams}
This function creates a GSI property with a scalar value and adds it to the list of GSI properties.


\begin{DoxyParams}{Parameters}
{\em property\+\_\+name} & The name of the GSI property. \\
\hline
{\em value} & Scalar value of the GSI property. \\
\hline
\end{DoxyParams}
\Hypertarget{class_geometry_af38951a5fa68abacd3ac8dc8de114dbd}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!add\_surface\_property@{add\_surface\_property}}
\index{add\_surface\_property@{add\_surface\_property}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{add\_surface\_property()}{add\_surface\_property()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{class_geometry_af38951a5fa68abacd3ac8dc8de114dbd} 
template$<$typename T $>$ \\
void \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::add\+\_\+surface\+\_\+property (\begin{DoxyParamCaption}\item[{const char \texorpdfstring{$\ast$}{*}}]{property\+\_\+name}{, }\item[{const \mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \&}]{values}{}\end{DoxyParamCaption})}



Add a matrix surface property to the geometry. 

Adds a matrix surface property to the geometry.


\begin{DoxyParams}{Parameters}
{\em property\+\_\+name} & The name of the surface property. \\
\hline
{\em values} & \doxylink{class_matrix}{Matrix} of values for the surface property.\\
\hline
\end{DoxyParams}
This function adds a matrix of values as a surface property to the list of surface properties.


\begin{DoxyParams}{Parameters}
{\em property\+\_\+name} & The name of the surface property. \\
\hline
{\em values} & \doxylink{class_matrix}{Matrix} of values for the surface property. \\
\hline
\end{DoxyParams}
\Hypertarget{class_geometry_a29348287f2414cbd55f42fbc61884205}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!add\_surface\_property@{add\_surface\_property}}
\index{add\_surface\_property@{add\_surface\_property}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{add\_surface\_property()}{add\_surface\_property()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{class_geometry_a29348287f2414cbd55f42fbc61884205} 
template$<$typename T $>$ \\
void \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::add\+\_\+surface\+\_\+property (\begin{DoxyParamCaption}\item[{const char \texorpdfstring{$\ast$}{*}}]{property\+\_\+name}{, }\item[{T}]{value}{}\end{DoxyParamCaption})}



Add a scalar surface property to the geometry. 

Adds a scalar surface property to the geometry.


\begin{DoxyParams}{Parameters}
{\em property\+\_\+name} & The name of the surface property. \\
\hline
{\em value} & The scalar value to assign to the property.\\
\hline
\end{DoxyParams}
This function creates a surface property with a scalar value and adds it to the list of surface properties.


\begin{DoxyParams}{Parameters}
{\em property\+\_\+name} & The name of the surface property. \\
\hline
{\em value} & Scalar value of the surface property. \\
\hline
\end{DoxyParams}
\Hypertarget{class_geometry_acc19cfbed3a47428424c7250a0aa72f2}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!compute\_area@{compute\_area}}
\index{compute\_area@{compute\_area}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{compute\_area()}{compute\_area()}}
{\footnotesize\ttfamily \label{class_geometry_acc19cfbed3a47428424c7250a0aa72f2} 
template$<$typename T $>$ \\
T \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::compute\+\_\+area (\begin{DoxyParamCaption}\item[{unsigned int}]{index}{}\end{DoxyParamCaption})}



Compute the area of a specific triangle in the geometry. 

Computes the area of a triangle at the specified index.


\begin{DoxyParams}{Parameters}
{\em index} & The index of the triangle. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The computed area of the triangle.
\end{DoxyReturn}
This function computes the area of the triangle at the specified index using the vertex coordinates.


\begin{DoxyParams}{Parameters}
{\em index} & Index of the triangle. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The computed area of the triangle. 
\end{DoxyReturn}
\Hypertarget{class_geometry_a3340f8bcbfb18a7d0b16a4f3c8cd6809}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!compute\_bounding\_box@{compute\_bounding\_box}}
\index{compute\_bounding\_box@{compute\_bounding\_box}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{compute\_bounding\_box()}{compute\_bounding\_box()}}
{\footnotesize\ttfamily \label{class_geometry_a3340f8bcbfb18a7d0b16a4f3c8cd6809} 
template$<$typename T $>$ \\
void \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::compute\+\_\+bounding\+\_\+box (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})}



Compute the bounding box for the geometry. 

Compute the bounding box of the geometry.

This method calculates the minimum and maximum coordinates of the vertices in all three dimensions and stores them in the bounding box matrix. \Hypertarget{class_geometry_ac5e551600ca47ba80a6eb456d760a206}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!get\_A\_ref@{get\_A\_ref}}
\index{get\_A\_ref@{get\_A\_ref}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{get\_A\_ref()}{get\_A\_ref()}}
{\footnotesize\ttfamily \label{class_geometry_ac5e551600ca47ba80a6eb456d760a206} 
template$<$typename T $>$ \\
T \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::get\+\_\+\+A\+\_\+ref (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Get the reference area. 

\begin{DoxyReturn}{Returns}
The reference area. 
\end{DoxyReturn}
\Hypertarget{class_geometry_ab2a662ec4c2150cdb79a2ca1569f9898}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!get\_bounding\_box@{get\_bounding\_box}}
\index{get\_bounding\_box@{get\_bounding\_box}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{get\_bounding\_box()}{get\_bounding\_box()}}
{\footnotesize\ttfamily \label{class_geometry_ab2a662ec4c2150cdb79a2ca1569f9898} 
template$<$typename T $>$ \\
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::get\+\_\+bounding\+\_\+box (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})}



Get the bounding box of the geometry. 

Returns the bounding box of the geometry.

\begin{DoxyReturn}{Returns}
The bounding box matrix.
\end{DoxyReturn}
This function provides the bounding box matrix, which contains the minimum and maximum coordinates in x, y, and z directions.

\begin{DoxyReturn}{Returns}
Matrix$<$\+T$>$ The bounding box of the geometry. 
\end{DoxyReturn}
\Hypertarget{class_geometry_a6d55f79ad40ed41cfbaec94c8201f743}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!get\_c\_ref@{get\_c\_ref}}
\index{get\_c\_ref@{get\_c\_ref}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{get\_c\_ref()}{get\_c\_ref()}}
{\footnotesize\ttfamily \label{class_geometry_a6d55f79ad40ed41cfbaec94c8201f743} 
template$<$typename T $>$ \\
T \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::get\+\_\+c\+\_\+ref (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Get the reference speed. 

\begin{DoxyReturn}{Returns}
The reference speed. 
\end{DoxyReturn}
\Hypertarget{class_geometry_a0a0927b0b2eb33bf9eb8f66d9114d04e}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!get\_center@{get\_center}}
\index{get\_center@{get\_center}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{get\_center()}{get\_center()}}
{\footnotesize\ttfamily \label{class_geometry_a0a0927b0b2eb33bf9eb8f66d9114d04e} 
template$<$typename T $>$ \\
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::get\+\_\+center (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})}



Get the center of the bounding box of the geometry. 

Get the center point of the geometry\textquotesingle{}s bounding box.

\begin{DoxyReturn}{Returns}
A matrix representing the center of the bounding box.

\doxylink{class_matrix}{Matrix} representing the center coordinates of the bounding box. 
\end{DoxyReturn}
\Hypertarget{class_geometry_a04f06f9115074fd95c4f66db48572c30}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!get\_GSI\_properties@{get\_GSI\_properties}}
\index{get\_GSI\_properties@{get\_GSI\_properties}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{get\_GSI\_properties()}{get\_GSI\_properties()}}
{\footnotesize\ttfamily \label{class_geometry_a04f06f9115074fd95c4f66db48572c30} 
template$<$typename T $>$ \\
std\+::vector$<$ \mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ $>$ \& \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::get\+\_\+\+GSI\+\_\+properties (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Get all GSI properties. 

\begin{DoxyReturn}{Returns}
A vector of GSI property matrices. 
\end{DoxyReturn}
\Hypertarget{class_geometry_a6ba9098a3d39fddbf021df490a6abbed}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!get\_GSI\_property@{get\_GSI\_property}}
\index{get\_GSI\_property@{get\_GSI\_property}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{get\_GSI\_property()}{get\_GSI\_property()}}
{\footnotesize\ttfamily \label{class_geometry_a6ba9098a3d39fddbf021df490a6abbed} 
template$<$typename T $>$ \\
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \& \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::get\+\_\+\+GSI\+\_\+property (\begin{DoxyParamCaption}\item[{int}]{index}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Get a GSI property by index. 


\begin{DoxyParams}{Parameters}
{\em index} & Index of the GSI property. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The GSI property matrix. 
\end{DoxyReturn}
\Hypertarget{class_geometry_ac477caa4b4f34733bbe1752eaf966dcf}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!get\_GSI\_property\_name@{get\_GSI\_property\_name}}
\index{get\_GSI\_property\_name@{get\_GSI\_property\_name}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{get\_GSI\_property\_name()}{get\_GSI\_property\_name()}}
{\footnotesize\ttfamily \label{class_geometry_ac477caa4b4f34733bbe1752eaf966dcf} 
template$<$typename T $>$ \\
char \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::get\+\_\+\+GSI\+\_\+property\+\_\+name (\begin{DoxyParamCaption}\item[{int}]{index}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Get the name of a GSI property by index. 


\begin{DoxyParams}{Parameters}
{\em index} & Index of the GSI property. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The name of the GSI property. 
\end{DoxyReturn}
\Hypertarget{class_geometry_adf82e0a1da5d92dfefcb1ab63ea2a23c}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!get\_GSI\_property\_names@{get\_GSI\_property\_names}}
\index{get\_GSI\_property\_names@{get\_GSI\_property\_names}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{get\_GSI\_property\_names()}{get\_GSI\_property\_names()}}
{\footnotesize\ttfamily \label{class_geometry_adf82e0a1da5d92dfefcb1ab63ea2a23c} 
template$<$typename T $>$ \\
std\+::vector$<$ const char \texorpdfstring{$\ast$}{*} $>$ \& \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::get\+\_\+\+GSI\+\_\+property\+\_\+names (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Get all GSI property names. 

\begin{DoxyReturn}{Returns}
A vector of GSI property names. 
\end{DoxyReturn}
\Hypertarget{class_geometry_afd3955430cb19adbb9ea3797e5d1ec61}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!get\_num\_vertices@{get\_num\_vertices}}
\index{get\_num\_vertices@{get\_num\_vertices}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{get\_num\_vertices()}{get\_num\_vertices()}}
{\footnotesize\ttfamily \label{class_geometry_afd3955430cb19adbb9ea3797e5d1ec61} 
template$<$typename T $>$ \\
unsigned int \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::get\+\_\+num\+\_\+vertices (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get the number of vertices (triangles) in the geometry. 

\begin{DoxyReturn}{Returns}
The number of vertices. 
\end{DoxyReturn}
\Hypertarget{class_geometry_a729679f2bcc32ddd36d5b636cfdc79b6}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!get\_surface\_properties@{get\_surface\_properties}}
\index{get\_surface\_properties@{get\_surface\_properties}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{get\_surface\_properties()}{get\_surface\_properties()}}
{\footnotesize\ttfamily \label{class_geometry_a729679f2bcc32ddd36d5b636cfdc79b6} 
template$<$typename T $>$ \\
std\+::vector$<$ \mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ $>$ \& \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::get\+\_\+surface\+\_\+properties (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Get all surface properties. 

\begin{DoxyReturn}{Returns}
A vector of surface property matrices. 
\end{DoxyReturn}
\Hypertarget{class_geometry_a3830df67dee94fccb138a70fa52ea101}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!get\_surface\_property\_names@{get\_surface\_property\_names}}
\index{get\_surface\_property\_names@{get\_surface\_property\_names}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{get\_surface\_property\_names()}{get\_surface\_property\_names()}}
{\footnotesize\ttfamily \label{class_geometry_a3830df67dee94fccb138a70fa52ea101} 
template$<$typename T $>$ \\
std\+::vector$<$ const char \texorpdfstring{$\ast$}{*} $>$ \& \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::get\+\_\+surface\+\_\+property\+\_\+names (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Get all surface property names. 

\begin{DoxyReturn}{Returns}
A vector of surface property names. 
\end{DoxyReturn}
\Hypertarget{class_geometry_a0d3d9382f0d65fec1affcd539bfa0733}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!print@{print}}
\index{print@{print}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{print()}{print()}}
{\footnotesize\ttfamily \label{class_geometry_a0d3d9382f0d65fec1affcd539bfa0733} 
template$<$typename T $>$ \\
void \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::print (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})}



Print the geometry details, including vertices, normals, and properties. 

Prints the details of the geometry, including vertices, normals, and properties.

This function outputs the details for each triangle in the geometry, such as the vertex coordinates (p1, p2, p3), normal vectors, GSI properties, and surface properties. Each triangle is printed with its corresponding properties. \Hypertarget{class_geometry_a195c849697e0234844c07c49ef6cac87}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!rotate@{rotate}}
\index{rotate@{rotate}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{rotate()}{rotate()}}
{\footnotesize\ttfamily \label{class_geometry_a195c849697e0234844c07c49ef6cac87} 
template$<$typename T $>$ \\
void \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::rotate (\begin{DoxyParamCaption}\item[{int}]{axis}{, }\item[{T}]{angle}{}\end{DoxyParamCaption})}



Rotate the geometry around a specific axis. 

Rotates the geometry around the specified axis by the given angle.


\begin{DoxyParams}{Parameters}
{\em axis} & Axis of rotation (0 for x, 1 for y, 2 for z). \\
\hline
{\em angle} & Angle of rotation in radians.\\
\hline
\end{DoxyParams}
This function rotates the vertices and normals of the geometry based on the given axis (0\+: x-\/axis, 1\+: y-\/axis, 2\+: z-\/axis) and angle (in radians). After the rotation, the bounding box is recomputed.


\begin{DoxyParams}{Parameters}
{\em axis} & The axis of rotation (0\+: x-\/axis, 1\+: y-\/axis, 2\+: z-\/axis). \\
\hline
{\em angle} & The rotation angle (in radians). \\
\hline
\end{DoxyParams}
\Hypertarget{class_geometry_ad7e2894795ff250886a98adbfb4a342e}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!scale@{scale}}
\index{scale@{scale}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{scale()}{scale()}}
{\footnotesize\ttfamily \label{class_geometry_ad7e2894795ff250886a98adbfb4a342e} 
template$<$typename T $>$ \\
void \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::scale (\begin{DoxyParamCaption}\item[{T}]{factor}{}\end{DoxyParamCaption})}



Scale the geometry by a factor. 


\begin{DoxyParams}{Parameters}
{\em factor} & The scaling factor to apply.\\
\hline
\end{DoxyParams}
This method scales all vertices (p1, p2, p3) and the bounding box of the geometry by the given factor.


\begin{DoxyParams}{Parameters}
{\em factor} & The scaling factor to apply to the geometry. \\
\hline
\end{DoxyParams}
\Hypertarget{class_geometry_ad74e0bc682547130b4b41be31f85b0c9}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!set\_A\_ref@{set\_A\_ref}}
\index{set\_A\_ref@{set\_A\_ref}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{set\_A\_ref()}{set\_A\_ref()}}
{\footnotesize\ttfamily \label{class_geometry_ad74e0bc682547130b4b41be31f85b0c9} 
template$<$typename T $>$ \\
void \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::set\+\_\+\+A\+\_\+ref (\begin{DoxyParamCaption}\item[{T}]{A\+\_\+ref}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Set the reference area for the geometry. 


\begin{DoxyParams}{Parameters}
{\em A\+\_\+ref} & The reference area to set. \\
\hline
\end{DoxyParams}
\Hypertarget{class_geometry_a3c2eae1927ed7443d433fc8de3a8fba2}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!set\_c\_ref@{set\_c\_ref}}
\index{set\_c\_ref@{set\_c\_ref}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{set\_c\_ref()}{set\_c\_ref()}}
{\footnotesize\ttfamily \label{class_geometry_a3c2eae1927ed7443d433fc8de3a8fba2} 
template$<$typename T $>$ \\
void \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::set\+\_\+c\+\_\+ref (\begin{DoxyParamCaption}\item[{T}]{c\+\_\+ref}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Set the reference speed for the geometry. 


\begin{DoxyParams}{Parameters}
{\em c\+\_\+ref} & The reference speed to set. \\
\hline
\end{DoxyParams}
\Hypertarget{class_geometry_a4b99e5daf69aa2557b181e181d236949}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!shift@{shift}}
\index{shift@{shift}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{shift()}{shift()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{class_geometry_a4b99e5daf69aa2557b181e181d236949} 
template$<$typename T $>$ \\
void \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::shift (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$}]{offset}{}\end{DoxyParamCaption})}



Shift the geometry by a \doxylink{class_matrix}{Matrix} offset. 

Shift the geometry by an offset (\doxylink{class_matrix}{Matrix} version).


\begin{DoxyParams}{Parameters}
{\em offset} & \doxylink{class_matrix}{Matrix} representing x, y, z offset values.\\
\hline
\end{DoxyParams}
This method shifts the positions of all vertices (p1, p2, p3) using a \doxylink{class_matrix}{Matrix} that contains x, y, z offsets. It also updates the bounding box of the geometry.


\begin{DoxyParams}{Parameters}
{\em offset} & \doxylink{class_matrix}{Matrix} containing the offset values for x, y, and z. \\
\hline
\end{DoxyParams}
\Hypertarget{class_geometry_a291554967c1c34c8e4c603736b1a89d4}\index{Geometry$<$ T $>$@{Geometry$<$ T $>$}!shift@{shift}}
\index{shift@{shift}!Geometry$<$ T $>$@{Geometry$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{shift()}{shift()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{class_geometry_a291554967c1c34c8e4c603736b1a89d4} 
template$<$typename T $>$ \\
void \mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$\+::shift (\begin{DoxyParamCaption}\item[{T \texorpdfstring{$\ast$}{*}}]{offset}{}\end{DoxyParamCaption})}



Shift the geometry by an offset. 

Shift the geometry by an offset (array version).


\begin{DoxyParams}{Parameters}
{\em offset} & Array containing x, y, z offset values.\\
\hline
\end{DoxyParams}
This method shifts the positions of all vertices (p1, p2, p3) by a specified x, y, z offset. It also updates the bounding box of the geometry.


\begin{DoxyParams}{Parameters}
{\em offset} & Array containing the offset values for x, y, and z. \\
\hline
\end{DoxyParams}


The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
src/Geometry.\+h\end{DoxyCompactItemize}
