\hypertarget{a01273}{\section{Open\+Volume\+Mesh\+:\+:Tetrahedral\+Mesh\+Topology\+Kernel Class Reference}
\label{a01273}\index{Open\+Volume\+Mesh\+::\+Tetrahedral\+Mesh\+Topology\+Kernel@{Open\+Volume\+Mesh\+::\+Tetrahedral\+Mesh\+Topology\+Kernel}}
}


A data structure based on Polyhedral\+Mesh with specializations for tetrahedra.  




{\ttfamily \#include $<$libs\+\_\+required/\+Open\+Volume\+Mesh/src/\+Open\+Volume\+Mesh/\+Mesh/\+Tetrahedral\+Mesh\+Topology\+Kernel.\+hh$>$}

Inheritance diagram for Open\+Volume\+Mesh\+:\+:Tetrahedral\+Mesh\+Topology\+Kernel\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.000000cm]{a01273}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01273_aa3891f08b6be685ffbeab906b9b3a608}{typedef class Tet\+Vertex\+Iter {\bfseries Tet\+Vertex\+Iter}}\label{a01273_aa3891f08b6be685ffbeab906b9b3a608}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual \hyperlink{a00556}{Face\+Handle} \hyperlink{a01273_a192007449542133c70f3bfe4e18bd194}{add\+\_\+face} (const std\+::vector$<$ \hyperlink{a00669}{Half\+Edge\+Handle} $>$ \&\+\_\+halfedges, bool \+\_\+topology\+Check=false)
\begin{DoxyCompactList}\small\item\em Add face via incident edges. \end{DoxyCompactList}\item 
virtual \hyperlink{a00556}{Face\+Handle} \hyperlink{a01273_abe082c791405bc29e47282a6de3b7096}{add\+\_\+face} (const std\+::vector$<$ \hyperlink{a01425}{Vertex\+Handle} $>$ \&\+\_\+vertices)
\begin{DoxyCompactList}\small\item\em Add face via incident vertices. \end{DoxyCompactList}\item 
virtual \hyperlink{a00393}{Cell\+Handle} \hyperlink{a01273_ab0aab7dd51d3f90795b84a04d441e144}{add\+\_\+cell} (const std\+::vector$<$ \hyperlink{a00675}{Half\+Face\+Handle} $>$ \&\+\_\+halffaces, bool \+\_\+topology\+Check=false)
\begin{DoxyCompactList}\small\item\em Add cell via incident halffaces. \end{DoxyCompactList}\item 
\hypertarget{a01273_a333505ac22d8d2b43e049979b664ec40}{\hyperlink{a00393}{Cell\+Handle} {\bfseries add\+\_\+cell} (const std\+::vector$<$ \hyperlink{a01425}{Vertex\+Handle} $>$ \&\+\_\+vertices, bool \+\_\+topology\+Check=false)}\label{a01273_a333505ac22d8d2b43e049979b664ec40}

\item 
\hypertarget{a01273_acdd5888f750d8de58bb6480472cda59b}{\hyperlink{a00393}{Cell\+Handle} {\bfseries add\+\_\+cell} (\hyperlink{a01425}{Vertex\+Handle} \+\_\+vh0, \hyperlink{a01425}{Vertex\+Handle} \+\_\+vh1, \hyperlink{a01425}{Vertex\+Handle} \+\_\+vh2, \hyperlink{a01425}{Vertex\+Handle} \+\_\+vh3, bool \+\_\+topology\+Check=false)}\label{a01273_acdd5888f750d8de58bb6480472cda59b}

\item 
\hypertarget{a01273_a7bc62eece3d597d4e9e568d92d95465f}{\hyperlink{a00675}{Half\+Face\+Handle} {\bfseries add\+\_\+halfface} (const std\+::vector$<$ \hyperlink{a00669}{Half\+Edge\+Handle} $>$ \&\+\_\+halfedges, bool \+\_\+topology\+Check=false)}\label{a01273_a7bc62eece3d597d4e9e568d92d95465f}

\item 
\hypertarget{a01273_a6497ecf80f3d7cd8878005772bfed7b4}{\hyperlink{a00675}{Half\+Face\+Handle} {\bfseries add\+\_\+halfface} (\hyperlink{a01425}{Vertex\+Handle} \+\_\+vh0, \hyperlink{a01425}{Vertex\+Handle} \+\_\+vh1, \hyperlink{a01425}{Vertex\+Handle} \+\_\+vh2, bool \+\_\+topology\+Check=false)}\label{a01273_a6497ecf80f3d7cd8878005772bfed7b4}

\item 
\hypertarget{a01273_ad46db7207715af73809c87b976a4d39f}{\hyperlink{a00669}{Half\+Edge\+Handle} {\bfseries add\+\_\+halfedge} (const \hyperlink{a01425}{Vertex\+Handle} \&\+\_\+from\+Vertex, const \hyperlink{a01425}{Vertex\+Handle} \&\+\_\+to\+Vertex)}\label{a01273_ad46db7207715af73809c87b976a4d39f}

\item 
\hypertarget{a01273_a8472d9d603a746aab23c63b4cc1fd0e4}{std\+::vector$<$ \hyperlink{a01425}{Vertex\+Handle} $>$ {\bfseries get\+\_\+cell\+\_\+vertices} (\hyperlink{a00393}{Cell\+Handle} ch) const }\label{a01273_a8472d9d603a746aab23c63b4cc1fd0e4}

\item 
\hypertarget{a01273_ae81d6d0291ec6993c1978714db2f8607}{std\+::vector$<$ \hyperlink{a01425}{Vertex\+Handle} $>$ {\bfseries get\+\_\+cell\+\_\+vertices} (\hyperlink{a00393}{Cell\+Handle} ch, \hyperlink{a01425}{Vertex\+Handle} vh) const }\label{a01273_ae81d6d0291ec6993c1978714db2f8607}

\item 
\hypertarget{a01273_afbbf8a56a1e8d320f68af68034a9a2c8}{std\+::vector$<$ \hyperlink{a01425}{Vertex\+Handle} $>$ {\bfseries get\+\_\+cell\+\_\+vertices} (\hyperlink{a00675}{Half\+Face\+Handle} hfh) const }\label{a01273_afbbf8a56a1e8d320f68af68034a9a2c8}

\item 
\hypertarget{a01273_a8cdffe0212e2d928a841e0934872f9c0}{std\+::vector$<$ \hyperlink{a01425}{Vertex\+Handle} $>$ {\bfseries get\+\_\+cell\+\_\+vertices} (\hyperlink{a00675}{Half\+Face\+Handle} hfh, \hyperlink{a00669}{Half\+Edge\+Handle} heh) const }\label{a01273_a8cdffe0212e2d928a841e0934872f9c0}

\item 
\hypertarget{a01273_a8a5d2441238b35beacd1e75751d7751d}{std\+::vector$<$ \hyperlink{a01425}{Vertex\+Handle} $>$ {\bfseries get\+\_\+halfface\+\_\+vertices} (\hyperlink{a00675}{Half\+Face\+Handle} hfh) const }\label{a01273_a8a5d2441238b35beacd1e75751d7751d}

\item 
\hypertarget{a01273_a90af76fcbdc49f974a8292053e30b5cd}{std\+::vector$<$ \hyperlink{a01425}{Vertex\+Handle} $>$ {\bfseries get\+\_\+halfface\+\_\+vertices} (\hyperlink{a00675}{Half\+Face\+Handle} hfh, \hyperlink{a01425}{Vertex\+Handle} vh) const }\label{a01273_a90af76fcbdc49f974a8292053e30b5cd}

\item 
\hypertarget{a01273_a3326be23d68c6217d93aa7a71b0f2ffa}{std\+::vector$<$ \hyperlink{a01425}{Vertex\+Handle} $>$ {\bfseries get\+\_\+halfface\+\_\+vertices} (\hyperlink{a00675}{Half\+Face\+Handle} hfh, \hyperlink{a00669}{Half\+Edge\+Handle} heh) const }\label{a01273_a3326be23d68c6217d93aa7a71b0f2ffa}

\item 
\hypertarget{a01273_aa2deb9f3232e051868ef61f389c400fc}{\hyperlink{a01425}{Vertex\+Handle} {\bfseries collapse\+\_\+edge} (\hyperlink{a00669}{Half\+Edge\+Handle} \+\_\+heh)}\label{a01273_aa2deb9f3232e051868ef61f389c400fc}

\item 
\hypertarget{a01273_a5ffc63d2113e47a798350b69100511e0}{Tet\+Vertex\+Iter {\bfseries tv\+\_\+iter} (const \hyperlink{a00393}{Cell\+Handle} \&\+\_\+ref\+\_\+h, int \+\_\+max\+\_\+laps=1) const }\label{a01273_a5ffc63d2113e47a798350b69100511e0}

\item 
\hypertarget{a01273_a79fd2bf2c6e858c770995395eb6fbfce}{std\+::pair$<$ Tet\+Vertex\+Iter, \\*
Tet\+Vertex\+Iter $>$ {\bfseries tet\+\_\+vertices} (const \hyperlink{a00393}{Cell\+Handle} \&\+\_\+ref\+\_\+h, int \+\_\+max\+\_\+laps=1) const }\label{a01273_a79fd2bf2c6e858c770995395eb6fbfce}

\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01273_aa4eb109f4a87137a2377c7b26a9112fa}{void {\bfseries split\+\_\+edge} (\hyperlink{a00669}{Half\+Edge\+Handle} \+\_\+heh, \hyperlink{a01425}{Vertex\+Handle} \+\_\+vh)}\label{a01273_aa4eb109f4a87137a2377c7b26a9112fa}

\item 
\hypertarget{a01273_a2c000c4efcb46b26bc47db6c64194e10}{void {\bfseries split\+\_\+face} (\hyperlink{a00556}{Face\+Handle} \+\_\+fh, \hyperlink{a01425}{Vertex\+Handle} \+\_\+vh)}\label{a01273_a2c000c4efcb46b26bc47db6c64194e10}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01273_ae84da3e7d42b81d0c4662063211de5b9}{{\footnotesize template$<$typename Prop\+Iterator , typename Handle $>$ }\\void {\bfseries swap\+Property\+Elements} (Prop\+Iterator begin, Prop\+Iterator end, Handle source, Handle destination)}\label{a01273_ae84da3e7d42b81d0c4662063211de5b9}

\end{DoxyCompactItemize}
\subsection*{Friends}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01273_aa61180a7bce307cdfa247c7af52caa4b}{class {\bfseries Tet\+Vertex\+Iter}}\label{a01273_aa61180a7bce307cdfa247c7af52caa4b}

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


\subsection{Detailed Description}
A data structure based on Polyhedral\+Mesh with specializations for tetrahedra. 

Definition at line 63 of file Tetrahedral\+Mesh\+Topology\+Kernel.\+hh.



\subsection{Member Function Documentation}
\hypertarget{a01273_ab0aab7dd51d3f90795b84a04d441e144}{\index{Open\+Volume\+Mesh\+::\+Tetrahedral\+Mesh\+Topology\+Kernel@{Open\+Volume\+Mesh\+::\+Tetrahedral\+Mesh\+Topology\+Kernel}!add\+\_\+cell@{add\+\_\+cell}}
\index{add\+\_\+cell@{add\+\_\+cell}!Open\+Volume\+Mesh\+::\+Tetrahedral\+Mesh\+Topology\+Kernel@{Open\+Volume\+Mesh\+::\+Tetrahedral\+Mesh\+Topology\+Kernel}}
\subsubsection[{add\+\_\+cell}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Cell\+Handle} Open\+Volume\+Mesh\+::\+Tetrahedral\+Mesh\+Topology\+Kernel\+::add\+\_\+cell (
\begin{DoxyParamCaption}
\item[{const std\+::vector$<$ {\bf Half\+Face\+Handle} $>$ \&}]{\+\_\+halffaces, }
\item[{bool}]{\+\_\+topology\+Check = {\ttfamily false}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{a01273_ab0aab7dd51d3f90795b84a04d441e144}


Add cell via incident halffaces. 

Add cell via incident halffaces

\begin{DoxyReturn}{Returns}
Handle of the new cell, Invalid\+Cell\+Handle if {\itshape \+\_\+topology\+Check} is {\itshape true} and {\itshape \+\_\+halffaces} are not connected.
\end{DoxyReturn}
\begin{DoxyWarning}{Warning}
If \+\_\+halffaces are not connected and {\itshape \+\_\+topology\+Check} is {\itshape false}, the behavior is undefined. 
\end{DoxyWarning}


Reimplemented from \hyperlink{a01314_a6eccac4ed7e00021b946a46aff011ff4}{Open\+Volume\+Mesh\+::\+Topology\+Kernel}.



Definition at line 98 of file Tetrahedral\+Mesh\+Topology\+Kernel.\+cc.

\hypertarget{a01273_a192007449542133c70f3bfe4e18bd194}{\index{Open\+Volume\+Mesh\+::\+Tetrahedral\+Mesh\+Topology\+Kernel@{Open\+Volume\+Mesh\+::\+Tetrahedral\+Mesh\+Topology\+Kernel}!add\+\_\+face@{add\+\_\+face}}
\index{add\+\_\+face@{add\+\_\+face}!Open\+Volume\+Mesh\+::\+Tetrahedral\+Mesh\+Topology\+Kernel@{Open\+Volume\+Mesh\+::\+Tetrahedral\+Mesh\+Topology\+Kernel}}
\subsubsection[{add\+\_\+face}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Face\+Handle} Open\+Volume\+Mesh\+::\+Tetrahedral\+Mesh\+Topology\+Kernel\+::add\+\_\+face (
\begin{DoxyParamCaption}
\item[{const std\+::vector$<$ {\bf Half\+Edge\+Handle} $>$ \&}]{\+\_\+halfedges, }
\item[{bool}]{\+\_\+topology\+Check = {\ttfamily false}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{a01273_a192007449542133c70f3bfe4e18bd194}


Add face via incident edges. 

Add face via incident edges

\begin{DoxyReturn}{Returns}
Handle of the new face, Invalid\+Face\+Handle if {\itshape \+\_\+halfedges} are not connected and {\itshape \+\_\+topology\+Check} is {\itshape true}.
\end{DoxyReturn}
\begin{DoxyWarning}{Warning}
If \+\_\+halfedges are not connected and {\itshape \+\_\+topology\+Check} is {\itshape false}, the behavior is undefined. 
\end{DoxyWarning}


Reimplemented from \hyperlink{a01314_a0d39e76cff8a318046e640b3887a6845}{Open\+Volume\+Mesh\+::\+Topology\+Kernel}.



Definition at line 64 of file Tetrahedral\+Mesh\+Topology\+Kernel.\+cc.

\hypertarget{a01273_abe082c791405bc29e47282a6de3b7096}{\index{Open\+Volume\+Mesh\+::\+Tetrahedral\+Mesh\+Topology\+Kernel@{Open\+Volume\+Mesh\+::\+Tetrahedral\+Mesh\+Topology\+Kernel}!add\+\_\+face@{add\+\_\+face}}
\index{add\+\_\+face@{add\+\_\+face}!Open\+Volume\+Mesh\+::\+Tetrahedral\+Mesh\+Topology\+Kernel@{Open\+Volume\+Mesh\+::\+Tetrahedral\+Mesh\+Topology\+Kernel}}
\subsubsection[{add\+\_\+face}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Face\+Handle} Open\+Volume\+Mesh\+::\+Tetrahedral\+Mesh\+Topology\+Kernel\+::add\+\_\+face (
\begin{DoxyParamCaption}
\item[{const std\+::vector$<$ {\bf Vertex\+Handle} $>$ \&}]{\+\_\+vertices}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{a01273_abe082c791405bc29e47282a6de3b7096}


Add face via incident vertices. 

Add face via incident vertices Define the \+\_\+vertices in counter-\/clockwise order (from the \char`\"{}outside\char`\"{}) 

Reimplemented from \hyperlink{a01314_a12dfd3700d0fb4c0374865c0e55bbef4}{Open\+Volume\+Mesh\+::\+Topology\+Kernel}.



Definition at line 81 of file Tetrahedral\+Mesh\+Topology\+Kernel.\+cc.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
libs\+\_\+required/\+Open\+Volume\+Mesh/src/\+Open\+Volume\+Mesh/\+Mesh/Tetrahedral\+Mesh\+Topology\+Kernel.\+hh\item 
libs\+\_\+required/\+Open\+Volume\+Mesh/src/\+Open\+Volume\+Mesh/\+Mesh/Tetrahedral\+Mesh\+Topology\+Kernel.\+cc\end{DoxyCompactItemize}
