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


Class representing a \doxylink{class_ray}{Ray} for simulating particle movement in a geometric domain.  




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

\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{class_ray_a955149e799dfd119fbaf748bb8669306}{Ray}} ()
\begin{DoxyCompactList}\small\item\em Default constructor for the \doxylink{class_ray}{Ray} class. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_ray_a27a1dc01d17047d33591c7d06371d76f}{Ray}} (\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \&origin, \mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \&velocity, T m\+\_\+dot, unsigned int children, int spawn\+\_\+vertex\+\_\+index)
\begin{DoxyCompactList}\small\item\em Parameterized constructor for the \doxylink{class_ray}{Ray} class. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_ray_ae08522faeb26645e7be107fa1955241c}{Ray}} (const \mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$ \&other)
\begin{DoxyCompactList}\small\item\em Copy constructor for the \doxylink{class_ray}{Ray} class. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_ray_ad2cb9cc92c58722da53d6d445a54d1b9}{Ray}} (\mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$ \&\&other)
\begin{DoxyCompactList}\small\item\em Move constructor for the \doxylink{class_ray}{Ray} class. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_ray_afd7bbae2cfc1054fdc8fe9283304655c}{\texorpdfstring{$\sim$}{\string~}\+Ray}} ()
\begin{DoxyCompactList}\small\item\em Destructor for the \doxylink{class_ray}{Ray} class. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_ray}{Ray}} \& \mbox{\hyperlink{class_ray_ab5834ffcc129b2c1cf96e1fac85305cc}{operator=}} (const \mbox{\hyperlink{class_ray}{Ray}} \&other)
\begin{DoxyCompactList}\small\item\em Copy assignment operator for the \doxylink{class_ray}{Ray} class. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_ray}{Ray}} \& \mbox{\hyperlink{class_ray_aaf07180b920e5fc6a04ba08bf8249f06}{operator=}} (\mbox{\hyperlink{class_ray}{Ray}} \&\&other)
\begin{DoxyCompactList}\small\item\em Move assignment operator for the \doxylink{class_ray}{Ray} class. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \& \mbox{\hyperlink{class_ray_a4bc1a761f283f394fd0c166ca387ec08}{get\+\_\+velocity}} ()
\begin{DoxyCompactList}\small\item\em Gets the velocity of the ray. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_ray_a91096132b3916bc4343b5ba57b210ef0}{set\+\_\+velocity}} (\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ new\+\_\+velocity)
\begin{DoxyCompactList}\small\item\em Sets the velocity of the ray. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \& \mbox{\hyperlink{class_ray_afe655d44c6fdf82302a23277c70ad855}{get\+\_\+origin}} ()
\begin{DoxyCompactList}\small\item\em Gets the origin of the ray. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_ray_a147d4777c675a602d40d477b5a89ca1e}{set\+\_\+origin}} (\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ new\+\_\+origin)
\begin{DoxyCompactList}\small\item\em Sets the origin of the ray. \end{DoxyCompactList}\item 
T \mbox{\hyperlink{class_ray_a4f4554397e4d6cda881952bd19ee3ea6}{get\+\_\+mass\+\_\+flux}} ()
\begin{DoxyCompactList}\small\item\em Gets the mass flux of the ray. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_ray_a06880ade4cf7d629dae6c9b95f714735}{set\+\_\+mass\+\_\+flux}} (T mass\+\_\+flux)
\begin{DoxyCompactList}\small\item\em Sets the mass flux of the ray. \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{class_ray_a86c8b57e8e18c08a12cbdfa7595c29b6}{check\+\_\+vertex\+\_\+collision}} (\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \&p1, \mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \&p2, \mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \&p3, \mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \&normal, \mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \&col\+\_\+position, T \&distance)
\begin{DoxyCompactList}\small\item\em Checks if the ray collides with a triangle defined by three vertices. \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{class_ray_ae5c50e5329252b50b03ff0da1002287d}{check\+\_\+bb\+\_\+collision}} (\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \&bb)
\begin{DoxyCompactList}\small\item\em Checks if the ray collides with a bounding box. \end{DoxyCompactList}\item 
std\+::vector$<$ \mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$ $>$ \mbox{\hyperlink{class_ray_abd9d51036947e4b7e6e145d9095e51a1}{propagate}} (\mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$ \&geometry, const \mbox{\hyperlink{class_gas}{Gas}}$<$ T $>$ \&gas, void(\texorpdfstring{$\ast$}{*}kernel)(T \texorpdfstring{$\ast$}{*}, T \texorpdfstring{$\ast$}{*}, T \texorpdfstring{$\ast$}{*}, T \texorpdfstring{$\ast$}{*}, T \texorpdfstring{$\ast$}{*}), unsigned int \texorpdfstring{$\ast$}{*}collision\+\_\+index)
\begin{DoxyCompactList}\small\item\em Propagates the ray through the geometry and handles collision and reflection. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
\subsubsection*{template$<$typename T$>$\newline
class Ray$<$ T $>$}
Class representing a \doxylink{class_ray}{Ray} for simulating particle movement in a geometric domain. 

The \doxylink{class_ray}{Ray} class models the behavior of particles moving in space, handling properties such as velocity, mass flux, and collision detection.


\begin{DoxyTemplParams}{Template Parameters}
{\em T} & The data type used for computations (e.\+g., float, double). \\
\hline
\end{DoxyTemplParams}


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



Default constructor for the \doxylink{class_ray}{Ray} class. 

Initializes the ray with default values for origin, velocity, and other properties.

Initializes the ray with default values for origin, velocity, mass flux, and other properties. \Hypertarget{class_ray_a27a1dc01d17047d33591c7d06371d76f}\index{Ray$<$ T $>$@{Ray$<$ T $>$}!Ray@{Ray}}
\index{Ray@{Ray}!Ray$<$ T $>$@{Ray$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{Ray()}{Ray()}\hspace{0.1cm}{\footnotesize\ttfamily [2/4]}}
{\footnotesize\ttfamily \label{class_ray_a27a1dc01d17047d33591c7d06371d76f} 
template$<$typename T $>$ \\
\mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$\mbox{\hyperlink{class_ray}{\+::\+Ray}} (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \&}]{origin}{, }\item[{\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \&}]{velocity}{, }\item[{T}]{m\+\_\+dot}{, }\item[{unsigned int}]{children}{, }\item[{int}]{spawn\+\_\+vertex\+\_\+index}{}\end{DoxyParamCaption})}



Parameterized constructor for the \doxylink{class_ray}{Ray} class. 

Initializes the ray with specific origin, velocity, mass flux, number of children, and spawn vertex index.


\begin{DoxyParams}{Parameters}
{\em origin} & Origin point of the ray. \\
\hline
{\em velocity} & Velocity vector of the ray. \\
\hline
{\em m\+\_\+dot} & Mass flux carried by the ray. \\
\hline
{\em children} & Number of child rays this ray can spawn. \\
\hline
{\em spawn\+\_\+vertex\+\_\+index} & Index of the vertex where this ray was spawned. \\
\hline
\end{DoxyParams}
\Hypertarget{class_ray_ae08522faeb26645e7be107fa1955241c}\index{Ray$<$ T $>$@{Ray$<$ T $>$}!Ray@{Ray}}
\index{Ray@{Ray}!Ray$<$ T $>$@{Ray$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{Ray()}{Ray()}\hspace{0.1cm}{\footnotesize\ttfamily [3/4]}}
{\footnotesize\ttfamily \label{class_ray_ae08522faeb26645e7be107fa1955241c} 
template$<$typename T $>$ \\
\mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$\mbox{\hyperlink{class_ray}{\+::\+Ray}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$ \&}]{other}{}\end{DoxyParamCaption})}



Copy constructor for the \doxylink{class_ray}{Ray} class. 

Initializes a new ray by copying the properties of another ray.


\begin{DoxyParams}{Parameters}
{\em other} & The ray object to copy from. \\
\hline
\end{DoxyParams}
\Hypertarget{class_ray_ad2cb9cc92c58722da53d6d445a54d1b9}\index{Ray$<$ T $>$@{Ray$<$ T $>$}!Ray@{Ray}}
\index{Ray@{Ray}!Ray$<$ T $>$@{Ray$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{Ray()}{Ray()}\hspace{0.1cm}{\footnotesize\ttfamily [4/4]}}
{\footnotesize\ttfamily \label{class_ray_ad2cb9cc92c58722da53d6d445a54d1b9} 
template$<$typename T $>$ \\
\mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$\mbox{\hyperlink{class_ray}{\+::\+Ray}} (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$ \&\&}]{other}{}\end{DoxyParamCaption})}



Move constructor for the \doxylink{class_ray}{Ray} class. 

Initializes a new ray by moving the properties of another ray.


\begin{DoxyParams}{Parameters}
{\em other} & The ray object to move from. \\
\hline
\end{DoxyParams}
\Hypertarget{class_ray_afd7bbae2cfc1054fdc8fe9283304655c}\index{Ray$<$ T $>$@{Ray$<$ T $>$}!````~Ray@{\texorpdfstring{$\sim$}{\string~}Ray}}
\index{````~Ray@{\texorpdfstring{$\sim$}{\string~}Ray}!Ray$<$ T $>$@{Ray$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{\texorpdfstring{$\sim$}{\string~}Ray()}{\string~Ray()}}
{\footnotesize\ttfamily \label{class_ray_afd7bbae2cfc1054fdc8fe9283304655c} 
template$<$typename T $>$ \\
\mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$\+::\texorpdfstring{$\sim$}{\string~}\mbox{\hyperlink{class_ray}{Ray}} (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})}



Destructor for the \doxylink{class_ray}{Ray} class. 

Resets the properties of the ray to default values. 

\doxysubsection{Member Function Documentation}
\Hypertarget{class_ray_ae5c50e5329252b50b03ff0da1002287d}\index{Ray$<$ T $>$@{Ray$<$ T $>$}!check\_bb\_collision@{check\_bb\_collision}}
\index{check\_bb\_collision@{check\_bb\_collision}!Ray$<$ T $>$@{Ray$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{check\_bb\_collision()}{check\_bb\_collision()}}
{\footnotesize\ttfamily \label{class_ray_ae5c50e5329252b50b03ff0da1002287d} 
template$<$typename T $>$ \\
bool \mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$\+::check\+\_\+bb\+\_\+collision (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \&}]{bb}{}\end{DoxyParamCaption})}



Checks if the ray collides with a bounding box. 


\begin{DoxyParams}{Parameters}
{\em bb} & The bounding box to check collision with. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true If the ray collides with the bounding box, false otherwise. 
\end{DoxyReturn}
\Hypertarget{class_ray_a86c8b57e8e18c08a12cbdfa7595c29b6}\index{Ray$<$ T $>$@{Ray$<$ T $>$}!check\_vertex\_collision@{check\_vertex\_collision}}
\index{check\_vertex\_collision@{check\_vertex\_collision}!Ray$<$ T $>$@{Ray$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{check\_vertex\_collision()}{check\_vertex\_collision()}}
{\footnotesize\ttfamily \label{class_ray_a86c8b57e8e18c08a12cbdfa7595c29b6} 
template$<$typename T $>$ \\
bool \mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$\+::check\+\_\+vertex\+\_\+collision (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \&}]{p1}{, }\item[{\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \&}]{p2}{, }\item[{\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \&}]{p3}{, }\item[{\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \&}]{normal}{, }\item[{\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \&}]{col\+\_\+position}{, }\item[{T \&}]{distance}{}\end{DoxyParamCaption})}



Checks if the ray collides with a triangle defined by three vertices. 

This function checks if the ray intersects with the triangle defined by points p1, p2, and p3, and updates the collision position and distance if a collision occurs.


\begin{DoxyParams}{Parameters}
{\em p1} & The first vertex of the triangle. \\
\hline
{\em p2} & The second vertex of the triangle. \\
\hline
{\em p3} & The third vertex of the triangle. \\
\hline
{\em normal} & The normal vector of the triangle. \\
\hline
{\em col\+\_\+position} & The position of the collision, if it occurs. \\
\hline
{\em distance} & The distance from the ray origin to the collision point. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true If a collision occurs, false otherwise.
\end{DoxyReturn}
This function determines if the ray intersects with the triangle formed by vertices p1, p2, and p3. If a collision occurs, the position of the collision and the distance to the collision point are updated.


\begin{DoxyParams}{Parameters}
{\em p1} & The first vertex of the triangle. \\
\hline
{\em p2} & The second vertex of the triangle. \\
\hline
{\em p3} & The third vertex of the triangle. \\
\hline
{\em normal} & The normal vector of the triangle. \\
\hline
{\em col\+\_\+position} & The position of the collision (output parameter). \\
\hline
{\em distance} & The distance from the ray origin to the collision point (output parameter). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true If a collision occurs, false otherwise. 
\end{DoxyReturn}
\Hypertarget{class_ray_a4f4554397e4d6cda881952bd19ee3ea6}\index{Ray$<$ T $>$@{Ray$<$ T $>$}!get\_mass\_flux@{get\_mass\_flux}}
\index{get\_mass\_flux@{get\_mass\_flux}!Ray$<$ T $>$@{Ray$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{get\_mass\_flux()}{get\_mass\_flux()}}
{\footnotesize\ttfamily \label{class_ray_a4f4554397e4d6cda881952bd19ee3ea6} 
template$<$typename T $>$ \\
T \mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$\+::get\+\_\+mass\+\_\+flux (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Gets the mass flux of the ray. 

\begin{DoxyReturn}{Returns}
T The current mass flux of the ray. 
\end{DoxyReturn}
\Hypertarget{class_ray_afe655d44c6fdf82302a23277c70ad855}\index{Ray$<$ T $>$@{Ray$<$ T $>$}!get\_origin@{get\_origin}}
\index{get\_origin@{get\_origin}!Ray$<$ T $>$@{Ray$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{get\_origin()}{get\_origin()}}
{\footnotesize\ttfamily \label{class_ray_afe655d44c6fdf82302a23277c70ad855} 
template$<$typename T $>$ \\
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \& \mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$\+::get\+\_\+origin (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Gets the origin of the ray. 

\begin{DoxyReturn}{Returns}
Matrix$<$\+T$>$\& The current origin point of the ray. 
\end{DoxyReturn}
\Hypertarget{class_ray_a4bc1a761f283f394fd0c166ca387ec08}\index{Ray$<$ T $>$@{Ray$<$ T $>$}!get\_velocity@{get\_velocity}}
\index{get\_velocity@{get\_velocity}!Ray$<$ T $>$@{Ray$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{get\_velocity()}{get\_velocity()}}
{\footnotesize\ttfamily \label{class_ray_a4bc1a761f283f394fd0c166ca387ec08} 
template$<$typename T $>$ \\
\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$ \& \mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$\+::get\+\_\+velocity (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Gets the velocity of the ray. 

\begin{DoxyReturn}{Returns}
Matrix$<$\+T$>$\& The current velocity vector of the ray. 
\end{DoxyReturn}
\Hypertarget{class_ray_ab5834ffcc129b2c1cf96e1fac85305cc}\index{Ray$<$ T $>$@{Ray$<$ T $>$}!operator=@{operator=}}
\index{operator=@{operator=}!Ray$<$ T $>$@{Ray$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{class_ray_ab5834ffcc129b2c1cf96e1fac85305cc} 
template$<$typename T $>$ \\
\mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$ \& \mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$ \&}]{other}{}\end{DoxyParamCaption})}



Copy assignment operator for the \doxylink{class_ray}{Ray} class. 

Copies the properties from another ray.


\begin{DoxyParams}{Parameters}
{\em other} & The ray object to copy from. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\doxylink{class_ray}{Ray}\& Reference to the current ray object. 
\end{DoxyReturn}
\Hypertarget{class_ray_aaf07180b920e5fc6a04ba08bf8249f06}\index{Ray$<$ T $>$@{Ray$<$ T $>$}!operator=@{operator=}}
\index{operator=@{operator=}!Ray$<$ T $>$@{Ray$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{class_ray_aaf07180b920e5fc6a04ba08bf8249f06} 
template$<$typename T $>$ \\
\mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$ \& \mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$\+::operator= (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$ \&\&}]{other}{}\end{DoxyParamCaption})}



Move assignment operator for the \doxylink{class_ray}{Ray} class. 

Moves the properties from another ray, resetting the source ray.


\begin{DoxyParams}{Parameters}
{\em other} & The ray object to move from. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\doxylink{class_ray}{Ray}\& Reference to the current ray object.
\end{DoxyReturn}
Moves the properties from another ray, resetting the source ray\textquotesingle{}s properties.


\begin{DoxyParams}{Parameters}
{\em other} & The ray object to move from. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\doxylink{class_ray}{Ray}\& Reference to the current ray object. 
\end{DoxyReturn}
\Hypertarget{class_ray_abd9d51036947e4b7e6e145d9095e51a1}\index{Ray$<$ T $>$@{Ray$<$ T $>$}!propagate@{propagate}}
\index{propagate@{propagate}!Ray$<$ T $>$@{Ray$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{propagate()}{propagate()}}
{\footnotesize\ttfamily \label{class_ray_abd9d51036947e4b7e6e145d9095e51a1} 
template$<$typename T $>$ \\
std\+::vector$<$ \mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$ $>$ \mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$\+::propagate (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_geometry}{Geometry}}$<$ T $>$ \&}]{geometry}{, }\item[{const \mbox{\hyperlink{class_gas}{Gas}}$<$ T $>$ \&}]{gas}{, }\item[{void(\texorpdfstring{$\ast$}{*}}]{kernel~}{)(T \texorpdfstring{$\ast$}{*}, T \texorpdfstring{$\ast$}{*}, T \texorpdfstring{$\ast$}{*}, T \texorpdfstring{$\ast$}{*}, T \texorpdfstring{$\ast$}{*}), }\item[{unsigned int \texorpdfstring{$\ast$}{*}}]{collision\+\_\+index}{}\end{DoxyParamCaption})}



Propagates the ray through the geometry and handles collision and reflection. 

This function propagates the ray, checking for collisions with the geometry, and applies a kernel function to compute the reflected ray properties.


\begin{DoxyParams}{Parameters}
{\em geometry} & The geometry through which the ray propagates. \\
\hline
{\em gas} & The gas properties influencing the ray\textquotesingle{}s behavior. \\
\hline
{\em kernel} & The function used to compute reflection or scattering after collision. \\
\hline
{\em collision\+\_\+index} & Pointer to store the index of the vertex where the collision occurred. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
std\+::vector$<$\+Ray$<$\+T$>$$>$ A vector of child rays spawned after collision.
\end{DoxyReturn}
This function propagates the ray through the given geometry, checking for collisions with the vertices of the geometry. If a collision occurs, the position, distance, and other properties of the collision are computed. The kernel function is used to calculate the reflected velocity of the ray based on the gas and surface properties at the collision point. After collision, child rays are generated and returned.


\begin{DoxyParams}{Parameters}
{\em geometry} & The geometry through which the ray propagates. \\
\hline
{\em gas} & The gas properties that affect the ray\textquotesingle{}s behavior during propagation. \\
\hline
{\em kernel} & The kernel function used to compute reflection or scattering after collision. \\
\hline
{\em collision\+\_\+index} & Pointer to store the index of the vertex where the collision occurred. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
std\+::vector$<$\+Ray$<$\+T$>$$>$ A vector containing child rays generated after the collision. 
\end{DoxyReturn}
\Hypertarget{class_ray_a06880ade4cf7d629dae6c9b95f714735}\index{Ray$<$ T $>$@{Ray$<$ T $>$}!set\_mass\_flux@{set\_mass\_flux}}
\index{set\_mass\_flux@{set\_mass\_flux}!Ray$<$ T $>$@{Ray$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{set\_mass\_flux()}{set\_mass\_flux()}}
{\footnotesize\ttfamily \label{class_ray_a06880ade4cf7d629dae6c9b95f714735} 
template$<$typename T $>$ \\
void \mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$\+::set\+\_\+mass\+\_\+flux (\begin{DoxyParamCaption}\item[{T}]{mass\+\_\+flux}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Sets the mass flux of the ray. 


\begin{DoxyParams}{Parameters}
{\em mass\+\_\+flux} & The new mass flux to set. \\
\hline
\end{DoxyParams}
\Hypertarget{class_ray_a147d4777c675a602d40d477b5a89ca1e}\index{Ray$<$ T $>$@{Ray$<$ T $>$}!set\_origin@{set\_origin}}
\index{set\_origin@{set\_origin}!Ray$<$ T $>$@{Ray$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{set\_origin()}{set\_origin()}}
{\footnotesize\ttfamily \label{class_ray_a147d4777c675a602d40d477b5a89ca1e} 
template$<$typename T $>$ \\
void \mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$\+::set\+\_\+origin (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$}]{new\+\_\+origin}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Sets the origin of the ray. 


\begin{DoxyParams}{Parameters}
{\em new\+\_\+origin} & The new origin point to set. \\
\hline
\end{DoxyParams}
\Hypertarget{class_ray_a91096132b3916bc4343b5ba57b210ef0}\index{Ray$<$ T $>$@{Ray$<$ T $>$}!set\_velocity@{set\_velocity}}
\index{set\_velocity@{set\_velocity}!Ray$<$ T $>$@{Ray$<$ T $>$}}
\doxysubsubsection{\texorpdfstring{set\_velocity()}{set\_velocity()}}
{\footnotesize\ttfamily \label{class_ray_a91096132b3916bc4343b5ba57b210ef0} 
template$<$typename T $>$ \\
void \mbox{\hyperlink{class_ray}{Ray}}$<$ T $>$\+::set\+\_\+velocity (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_matrix}{Matrix}}$<$ T $>$}]{new\+\_\+velocity}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Sets the velocity of the ray. 


\begin{DoxyParams}{Parameters}
{\em new\+\_\+velocity} & The new velocity vector to set. \\
\hline
\end{DoxyParams}


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