\hypertarget{a00370}{\section{B\+S\+P\+Impl\+T$<$ B\+S\+P\+Core $>$ Class Template Reference}
\label{a00370}\index{B\+S\+P\+Impl\+T$<$ B\+S\+P\+Core $>$@{B\+S\+P\+Impl\+T$<$ B\+S\+P\+Core $>$}}
}
Inheritance diagram for B\+S\+P\+Impl\+T$<$ B\+S\+P\+Core $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{a00370}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{a00762}{less\+\_\+pair\+\_\+second}
\item 
struct \hyperlink{a00873}{Nearest\+Neighbor}
\begin{DoxyCompactList}\small\item\em Store nearest neighbor information. \end{DoxyCompactList}\item 
struct \hyperlink{a00874}{Nearest\+Neighbor\+Data}
\begin{DoxyCompactList}\small\item\em Store nearest neighbor information. \end{DoxyCompactList}\item 
struct \hyperlink{a01100}{Ray\+Collision\+Data}
\begin{DoxyCompactList}\small\item\em Store ray collide information. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00370_ac9fd4b82175ccf363a98475c4c5dd177}{typedef B\+S\+P\+Core\+::\+Traits {\bfseries Traits}}\label{a00370_ac9fd4b82175ccf363a98475c4c5dd177}

\item 
\hypertarget{a00370_ae71507e7b200f995c769d9ebed28fa3d}{typedef B\+S\+P\+Core\+::\+Handle {\bfseries Handle}}\label{a00370_ae71507e7b200f995c769d9ebed28fa3d}

\item 
\hypertarget{a00370_a660d68d2b5f445176449f388bee09f44}{typedef B\+S\+P\+Core\+::\+Point {\bfseries Point}}\label{a00370_a660d68d2b5f445176449f388bee09f44}

\item 
\hypertarget{a00370_a131e04889ac752d3a8a9b794579f44c2}{typedef B\+S\+P\+Core\+::\+Scalar {\bfseries Scalar}}\label{a00370_a131e04889ac752d3a8a9b794579f44c2}

\item 
\hypertarget{a00370_afee4f978c7cf308c1c8f75df2c0dd139}{typedef B\+S\+P\+Core\+::\+Node {\bfseries Node}}\label{a00370_afee4f978c7cf308c1c8f75df2c0dd139}

\item 
\hypertarget{a00370_a5a3c8f365e59630b95fb7ea57eb297f3}{typedef B\+S\+P\+Core\+::\+Handles {\bfseries Handles}}\label{a00370_a5a3c8f365e59630b95fb7ea57eb297f3}

\item 
\hypertarget{a00370_ab6d243e7301f7acfc4ed00a15115c172}{typedef B\+S\+P\+Core\+::\+Handle\+Iter {\bfseries Handle\+Iter}}\label{a00370_ab6d243e7301f7acfc4ed00a15115c172}

\item 
\hypertarget{a00370_a01c23244c319ff903a4deb3f56422dc2}{typedef std\+::vector$<$ std\+::pair\\*
$<$ Handle, Scalar $>$ $>$ \hyperlink{a00370_a01c23244c319ff903a4deb3f56422dc2}{Ray\+Collision}}\label{a00370_a01c23244c319ff903a4deb3f56422dc2}

\begin{DoxyCompactList}\small\item\em Store nearest neighbor information. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00370_aa3c617e6ba107789b7558fe30115a466}{{\bfseries B\+S\+P\+Impl\+T} (const Traits \&\+\_\+traits, const Scalar \&\+\_\+infinity=std\+::numeric\+\_\+limits$<$ Scalar $>$\+::infinity())}\label{a00370_aa3c617e6ba107789b7558fe30115a466}

\item 
\hypertarget{a00370_a3303b1727fc0294531bcc8221671566a}{\hyperlink{a00873}{Nearest\+Neighbor} \hyperlink{a00370_a3303b1727fc0294531bcc8221671566a}{nearest} (const Point \&\+\_\+p) const }\label{a00370_a3303b1727fc0294531bcc8221671566a}

\begin{DoxyCompactList}\small\item\em Return handle of the nearest neighbor face. \end{DoxyCompactList}\item 
\hyperlink{a00370_a01c23244c319ff903a4deb3f56422dc2}{Ray\+Collision} \hyperlink{a00370_a88308ebcf71e5fb4c8805e6306cbf118}{raycollision} (const Point \&\+\_\+p, const Point \&\+\_\+r) const 
\begin{DoxyCompactList}\small\item\em intersect mesh with ray \end{DoxyCompactList}\item 
\hyperlink{a00370_a01c23244c319ff903a4deb3f56422dc2}{Ray\+Collision} \hyperlink{a00370_a189fbbd7d34004f2a0e6f56b3aec487d}{directional\+Raycollision} (const Point \&\+\_\+p, const Point \&\+\_\+r) const 
\begin{DoxyCompactList}\small\item\em intersect mesh with ray \end{DoxyCompactList}\item 
\hyperlink{a00370_a01c23244c319ff903a4deb3f56422dc2}{Ray\+Collision} \hyperlink{a00370_a99573f56fea4e1252bd804d488ba6528}{nearest\+Raycollision} (const Point \&\+\_\+p, const Point \&\+\_\+r) const 
\begin{DoxyCompactList}\small\item\em intersect mesh with ray \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00370_a763d3513678dd7dd1612add7e5d6a837}{void {\bfseries \+\_\+nearest} (Node $\ast$\+\_\+node, \hyperlink{a00874}{Nearest\+Neighbor\+Data} \&\+\_\+data) const }\label{a00370_a763d3513678dd7dd1612add7e5d6a837}

\item 
void \hyperlink{a00370_a5720835d4d2b49e47556dca32680fb22}{\+\_\+raycollision\+\_\+non\+\_\+directional} (Node $\ast$\+\_\+node, \hyperlink{a01100}{Ray\+Collision\+Data} \&\+\_\+data) const 
\begin{DoxyCompactList}\small\item\em recursive part of \hyperlink{a00370_a88308ebcf71e5fb4c8805e6306cbf118}{raycollision()} \end{DoxyCompactList}\item 
void \hyperlink{a00370_ac88034d5f43d957099d75c729c315f52}{\+\_\+raycollision\+\_\+directional} (Node $\ast$\+\_\+node, \hyperlink{a01100}{Ray\+Collision\+Data} \&\+\_\+data) const 
\begin{DoxyCompactList}\small\item\em recursive part of \hyperlink{a00370_a189fbbd7d34004f2a0e6f56b3aec487d}{directional\+Raycollision()} \end{DoxyCompactList}\item 
\hypertarget{a00370_a77dfd7cec440f6f244b2a32511bf2e77}{void {\bfseries \+\_\+raycollision\+\_\+nearest\+\_\+directional} (Node $\ast$\+\_\+node, \hyperlink{a01100}{Ray\+Collision\+Data} \&\+\_\+data) const }\label{a00370_a77dfd7cec440f6f244b2a32511bf2e77}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00370_a2c986a7e6ecc99eb02367766d705604c}{const Scalar {\bfseries infinity\+\_\+}}\label{a00370_a2c986a7e6ecc99eb02367766d705604c}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$class B\+S\+P\+Core$>$class B\+S\+P\+Impl\+T$<$ B\+S\+P\+Core $>$}



Definition at line 74 of file B\+S\+P\+Impl\+T.\+hh.



\subsection{Member Function Documentation}
\hypertarget{a00370_ac88034d5f43d957099d75c729c315f52}{\index{B\+S\+P\+Impl\+T@{B\+S\+P\+Impl\+T}!\+\_\+raycollision\+\_\+directional@{\+\_\+raycollision\+\_\+directional}}
\index{\+\_\+raycollision\+\_\+directional@{\+\_\+raycollision\+\_\+directional}!B\+S\+P\+Impl\+T@{B\+S\+P\+Impl\+T}}
\subsubsection[{\+\_\+raycollision\+\_\+directional}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class B\+S\+P\+Core $>$ void {\bf B\+S\+P\+Impl\+T}$<$ B\+S\+P\+Core $>$\+::\+\_\+raycollision\+\_\+directional (
\begin{DoxyParamCaption}
\item[{Node $\ast$}]{\+\_\+node, }
\item[{{\bf Ray\+Collision\+Data} \&}]{\+\_\+data}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [private]}}}\label{a00370_ac88034d5f43d957099d75c729c315f52}


recursive part of \hyperlink{a00370_a189fbbd7d34004f2a0e6f56b3aec487d}{directional\+Raycollision()} 


\begin{DoxyParams}{Parameters}
{\em \+\_\+node} & The current node in the tree \\
\hline
{\em \+\_\+data} & Data pointer, used to collect the collision information \\
\hline
\end{DoxyParams}


Definition at line 227 of file B\+S\+P\+Impl\+T.\+cc.

\hypertarget{a00370_a5720835d4d2b49e47556dca32680fb22}{\index{B\+S\+P\+Impl\+T@{B\+S\+P\+Impl\+T}!\+\_\+raycollision\+\_\+non\+\_\+directional@{\+\_\+raycollision\+\_\+non\+\_\+directional}}
\index{\+\_\+raycollision\+\_\+non\+\_\+directional@{\+\_\+raycollision\+\_\+non\+\_\+directional}!B\+S\+P\+Impl\+T@{B\+S\+P\+Impl\+T}}
\subsubsection[{\+\_\+raycollision\+\_\+non\+\_\+directional}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class B\+S\+P\+Core $>$ void {\bf B\+S\+P\+Impl\+T}$<$ B\+S\+P\+Core $>$\+::\+\_\+raycollision\+\_\+non\+\_\+directional (
\begin{DoxyParamCaption}
\item[{Node $\ast$}]{\+\_\+node, }
\item[{{\bf Ray\+Collision\+Data} \&}]{\+\_\+data}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [private]}}}\label{a00370_a5720835d4d2b49e47556dca32680fb22}


recursive part of \hyperlink{a00370_a88308ebcf71e5fb4c8805e6306cbf118}{raycollision()} 


\begin{DoxyParams}{Parameters}
{\em \+\_\+node} & The current node in the tree \\
\hline
{\em \+\_\+data} & Data pointer, used to collect the collision information \\
\hline
\end{DoxyParams}


Definition at line 189 of file B\+S\+P\+Impl\+T.\+cc.

\hypertarget{a00370_a189fbbd7d34004f2a0e6f56b3aec487d}{\index{B\+S\+P\+Impl\+T@{B\+S\+P\+Impl\+T}!directional\+Raycollision@{directional\+Raycollision}}
\index{directional\+Raycollision@{directional\+Raycollision}!B\+S\+P\+Impl\+T@{B\+S\+P\+Impl\+T}}
\subsubsection[{directional\+Raycollision}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class B\+S\+P\+Core $>$ {\bf B\+S\+P\+Impl\+T}$<$ B\+S\+P\+Core $>$\+::{\bf Ray\+Collision} {\bf B\+S\+P\+Impl\+T}$<$ B\+S\+P\+Core $>$\+::directional\+Raycollision (
\begin{DoxyParamCaption}
\item[{const Point \&}]{\+\_\+p, }
\item[{const Point \&}]{\+\_\+r}
\end{DoxyParamCaption}
) const}}\label{a00370_a189fbbd7d34004f2a0e6f56b3aec487d}


intersect mesh with ray 

This function shots a ray through the mesh and collects all intersected triangles and the handle of the closest face ( directional, so the ray direction is taken into account!).

Only hits with a distance $>$ 0.\+0 to the point p will be collected (\+\_\+p will be skipped!)


\begin{DoxyParams}{Parameters}
{\em \+\_\+p} & Start point of the ray \\
\hline
{\em \+\_\+r} & Ray direction \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Collision information 
\end{DoxyReturn}


Definition at line 152 of file B\+S\+P\+Impl\+T.\+cc.

\hypertarget{a00370_a99573f56fea4e1252bd804d488ba6528}{\index{B\+S\+P\+Impl\+T@{B\+S\+P\+Impl\+T}!nearest\+Raycollision@{nearest\+Raycollision}}
\index{nearest\+Raycollision@{nearest\+Raycollision}!B\+S\+P\+Impl\+T@{B\+S\+P\+Impl\+T}}
\subsubsection[{nearest\+Raycollision}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class B\+S\+P\+Core $>$ {\bf B\+S\+P\+Impl\+T}$<$ B\+S\+P\+Core $>$\+::{\bf Ray\+Collision} {\bf B\+S\+P\+Impl\+T}$<$ B\+S\+P\+Core $>$\+::nearest\+Raycollision (
\begin{DoxyParamCaption}
\item[{const Point \&}]{\+\_\+p, }
\item[{const Point \&}]{\+\_\+r}
\end{DoxyParamCaption}
) const}}\label{a00370_a99573f56fea4e1252bd804d488ba6528}


intersect mesh with ray 

This function shots a ray through the mesh and determines the first intersected triangle and the handle of the closest face ( directional, so the ray direction is taken into account!).

Only hits with a distance $>$ 0.\+0 to the point p will be collected (\+\_\+p will be skipped!). Note that for compatibility reasons the return type is still a vector of collisions.


\begin{DoxyParams}{Parameters}
{\em \+\_\+p} & Start point of the ray \\
\hline
{\em \+\_\+r} & Ray direction \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Collision information 
\end{DoxyReturn}


Definition at line 170 of file B\+S\+P\+Impl\+T.\+cc.

\hypertarget{a00370_a88308ebcf71e5fb4c8805e6306cbf118}{\index{B\+S\+P\+Impl\+T@{B\+S\+P\+Impl\+T}!raycollision@{raycollision}}
\index{raycollision@{raycollision}!B\+S\+P\+Impl\+T@{B\+S\+P\+Impl\+T}}
\subsubsection[{raycollision}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class B\+S\+P\+Core $>$ {\bf B\+S\+P\+Impl\+T}$<$ B\+S\+P\+Core $>$\+::{\bf Ray\+Collision} {\bf B\+S\+P\+Impl\+T}$<$ B\+S\+P\+Core $>$\+::raycollision (
\begin{DoxyParamCaption}
\item[{const Point \&}]{\+\_\+p, }
\item[{const Point \&}]{\+\_\+r}
\end{DoxyParamCaption}
) const}}\label{a00370_a88308ebcf71e5fb4c8805e6306cbf118}


intersect mesh with ray 

This function shots a ray through the mesh and collects all intersected triangles and the handle of the closest face ( non-\/directional, so no matter of the ray direction, the closest face handle is returned in either direction)


\begin{DoxyParams}{Parameters}
{\em \+\_\+p} & Start point of the ray \\
\hline
{\em \+\_\+r} & Ray direction \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Collision information 
\end{DoxyReturn}


Definition at line 135 of file B\+S\+P\+Impl\+T.\+cc.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
A\+C\+G/\+Geometry/bsp/B\+S\+P\+Impl\+T.\+hh\item 
A\+C\+G/\+Geometry/bsp/B\+S\+P\+Impl\+T.\+cc\end{DoxyCompactItemize}
