\hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT}{}\section{Open\+Mesh\+:\+:Subdivider\+:\+:Uniform\+:\+:SubdividerT$<$ Mesh\+Type, Real\+Type $>$ Class Template Reference}
\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT}\index{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Subdivider\+T$<$ Mesh\+Type, Real\+Type $>$@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Subdivider\+T$<$ Mesh\+Type, Real\+Type $>$}}


{\ttfamily \#include $<$Open\+Flipper/libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Tools/\+Subdivider/\+Uniform/\+Subdivider\+T.\+hh$>$}

Inheritance diagram for Open\+Mesh\+:\+:Subdivider\+:\+:Uniform\+:\+:SubdividerT$<$ Mesh\+Type, Real\+Type $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=5.957447cm]{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_acc900fcb30e4243ecb60ee270ae9fd22}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_acc900fcb30e4243ecb60ee270ae9fd22}} 
typedef Mesh\+Type {\bfseries mesh\+\_\+t}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_aad89e5e754ae100ff90a1abd02095b57}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_aad89e5e754ae100ff90a1abd02095b57}} 
typedef Real\+Type {\bfseries real\+\_\+t}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a89c316211e4014b0705d34a141152f4f}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a89c316211e4014b0705d34a141152f4f}} 
virtual \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a89c316211e4014b0705d34a141152f4f}{$\sim$\+SubdividerT} ()
\begin{DoxyCompactList}\small\item\em Destructor (calls \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a5e43f1fde3bd9588b4265fe1d1be6a8d}{detach()}) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_ab841456af600904618a0146e2ab65010}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_ab841456af600904618a0146e2ab65010}} 
virtual const char $\ast$ \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_ab841456af600904618a0146e2ab65010}{name} (void) const =0
\begin{DoxyCompactList}\small\item\em Return name of subdivision algorithm. \end{DoxyCompactList}\end{DoxyCompactItemize}
\begin{Indent}\textbf{ Constructors}\par
\begin{DoxyCompactItemize}
\item 
\hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a89341e7a735352adbb76f6842d3fab12}{SubdividerT} (void)
\item 
\hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a697277667735e023a5c62b7c406a2cad}{SubdividerT} (Mesh\+Type \&\+\_\+m)
\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}\textbf{ Interface 1}\par
\begin{DoxyCompactItemize}
\item 
bool \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a2c3bb164d974ac4bcc9217a8368a7484}{operator()} (Mesh\+Type \&\+\_\+m, size\+\_\+t \+\_\+n, const bool \+\_\+update\+\_\+points=true)
\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}\textbf{ Interface 2}\par
\begin{DoxyCompactItemize}
\item 
bool \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a4faaaf5cdd9273b4c28ef9f2a2e942ba}{attach} (Mesh\+Type \&\+\_\+m)
\item 
bool \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a3d294cdf55c4373e0793002dd8d86add}{operator()} (size\+\_\+t \+\_\+n, const bool \+\_\+update\+\_\+points=true)
\item 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a5e43f1fde3bd9588b4265fe1d1be6a8d}{detach} (void)
\end{DoxyCompactItemize}
\end{Indent}
\subsection*{Protected Member Functions}
\begin{Indent}\textbf{ Overload theses methods}\par
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a83f6bde97d824c799cc3a2ee4f137ffb}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a83f6bde97d824c799cc3a2ee4f137ffb}} 
virtual bool \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a83f6bde97d824c799cc3a2ee4f137ffb}{prepare} (Mesh\+Type \&\+\_\+m)=0
\begin{DoxyCompactList}\small\item\em Prepare mesh, e.\+g. add properties. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_aacf8b2b63d1512d3c174fbe1781ee311}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_aacf8b2b63d1512d3c174fbe1781ee311}} 
virtual bool \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_aacf8b2b63d1512d3c174fbe1781ee311}{subdivide} (Mesh\+Type \&\+\_\+m, size\+\_\+t \+\_\+n, const bool \+\_\+update\+\_\+points=true)=0
\begin{DoxyCompactList}\small\item\em Subdivide mesh {\ttfamily \+\_\+m} {\ttfamily \+\_\+n} times. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a0538a5d4d1a38d3cf88796ed41776651}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a0538a5d4d1a38d3cf88796ed41776651}} 
virtual bool \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a0538a5d4d1a38d3cf88796ed41776651}{cleanup} (Mesh\+Type \&\+\_\+m)=0
\begin{DoxyCompactList}\small\item\em Cleanup mesh after usage, e.\+g. remove added properties. \end{DoxyCompactList}\end{DoxyCompactItemize}
\end{Indent}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a9cd607ce5c62f7134faa1ac95b14c8a0}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a9cd607ce5c62f7134faa1ac95b14c8a0}} 
Mesh\+Type $\ast$ {\bfseries attached\+\_\+}
\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$typename Mesh\+Type, typename Real\+Type = double$>$\newline
class Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Subdivider\+T$<$ Mesh\+Type, Real\+Type $>$}

Abstract base class for uniform subdivision algorithms.

A derived class must overload the following functions\+:
\begin{DoxyEnumerate}
\item const char$\ast$ \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_ab841456af600904618a0146e2ab65010}{name() const}
\item void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a83f6bde97d824c799cc3a2ee4f137ffb}{prepare(\+Mesh\+Type\&)}
\item void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_aacf8b2b63d1512d3c174fbe1781ee311}{subdivide(\+Mesh\+Type\&, size\+\_\+t, bool)}
\item void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a0538a5d4d1a38d3cf88796ed41776651}{cleanup(\+Mesh\+Type\&)} 
\end{DoxyEnumerate}

Definition at line 88 of file Subdivider\+T.\+hh.



\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a89341e7a735352adbb76f6842d3fab12}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a89341e7a735352adbb76f6842d3fab12}} 
\index{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT}!SubdividerT@{SubdividerT}}
\index{SubdividerT@{SubdividerT}!Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT}}
\subsubsection{\texorpdfstring{Subdivider\+T()}{SubdividerT()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily template$<$typename Mesh\+Type , typename Real\+Type  = double$>$ \\
\hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT}{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT}$<$ Mesh\+Type, Real\+Type $>$\+::\hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT}{SubdividerT} (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Constructor to be used with interface 2 \begin{DoxySeeAlso}{See also}
\hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a4faaaf5cdd9273b4c28ef9f2a2e942ba}{attach()}, operator()(size\+\_\+t), \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a5e43f1fde3bd9588b4265fe1d1be6a8d}{detach()} 
\end{DoxySeeAlso}


Definition at line 101 of file Subdivider\+T.\+hh.

\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a697277667735e023a5c62b7c406a2cad}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a697277667735e023a5c62b7c406a2cad}} 
\index{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT}!SubdividerT@{SubdividerT}}
\index{SubdividerT@{SubdividerT}!Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT}}
\subsubsection{\texorpdfstring{Subdivider\+T()}{SubdividerT()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily template$<$typename Mesh\+Type , typename Real\+Type  = double$>$ \\
\hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT}{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT}$<$ Mesh\+Type, Real\+Type $>$\+::\hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT}{SubdividerT} (\begin{DoxyParamCaption}\item[{Mesh\+Type \&}]{\+\_\+m }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}}

Constructor to be used with interface 1 (calls \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a4faaaf5cdd9273b4c28ef9f2a2e942ba}{attach()}) \begin{DoxySeeAlso}{See also}
operator()( Mesh\+Type\&, size\+\_\+t ) 
\end{DoxySeeAlso}


Definition at line 105 of file Subdivider\+T.\+hh.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a4faaaf5cdd9273b4c28ef9f2a2e942ba}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a4faaaf5cdd9273b4c28ef9f2a2e942ba}} 
\index{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT}!attach@{attach}}
\index{attach@{attach}!Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT}}
\subsubsection{\texorpdfstring{attach()}{attach()}}
{\footnotesize\ttfamily template$<$typename Mesh\+Type , typename Real\+Type  = double$>$ \\
bool \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT}{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT}$<$ Mesh\+Type, Real\+Type $>$\+::attach (\begin{DoxyParamCaption}\item[{Mesh\+Type \&}]{\+\_\+m }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Attach mesh {\ttfamily \+\_\+m} to self \begin{DoxySeeAlso}{See also}
\hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a89341e7a735352adbb76f6842d3fab12}{Subdivider\+T()}, operator()(size\+\_\+t), \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a5e43f1fde3bd9588b4265fe1d1be6a8d}{detach()} 
\end{DoxySeeAlso}


Definition at line 132 of file Subdivider\+T.\+hh.

\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a5e43f1fde3bd9588b4265fe1d1be6a8d}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a5e43f1fde3bd9588b4265fe1d1be6a8d}} 
\index{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT}!detach@{detach}}
\index{detach@{detach}!Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT}}
\subsubsection{\texorpdfstring{detach()}{detach()}}
{\footnotesize\ttfamily template$<$typename Mesh\+Type , typename Real\+Type  = double$>$ \\
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT}{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT}$<$ Mesh\+Type, Real\+Type $>$\+::detach (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Detach an eventually attached mesh. \begin{DoxySeeAlso}{See also}
\hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a89341e7a735352adbb76f6842d3fab12}{Subdivider\+T()}, \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a4faaaf5cdd9273b4c28ef9f2a2e942ba}{attach()}, operator()(size\+\_\+t) 
\end{DoxySeeAlso}


Definition at line 155 of file Subdivider\+T.\+hh.

\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a2c3bb164d974ac4bcc9217a8368a7484}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a2c3bb164d974ac4bcc9217a8368a7484}} 
\index{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT}!operator()@{operator()}}
\index{operator()@{operator()}!Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT}}
\subsubsection{\texorpdfstring{operator()()}{operator()()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily template$<$typename Mesh\+Type , typename Real\+Type  = double$>$ \\
bool \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT}{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT}$<$ Mesh\+Type, Real\+Type $>$\+::operator() (\begin{DoxyParamCaption}\item[{Mesh\+Type \&}]{\+\_\+m,  }\item[{size\+\_\+t}]{\+\_\+n,  }\item[{const bool}]{\+\_\+update\+\_\+points = {\ttfamily true} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Subdivide the mesh {\ttfamily \+\_\+m} {\ttfamily \+\_\+n} times. \begin{DoxySeeAlso}{See also}
\hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a697277667735e023a5c62b7c406a2cad}{Subdivider\+T(\+Mesh\+Type\&)} 
\end{DoxySeeAlso}


Definition at line 122 of file Subdivider\+T.\+hh.

\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a3d294cdf55c4373e0793002dd8d86add}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a3d294cdf55c4373e0793002dd8d86add}} 
\index{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT}!operator()@{operator()}}
\index{operator()@{operator()}!Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT}}
\subsubsection{\texorpdfstring{operator()()}{operator()()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily template$<$typename Mesh\+Type , typename Real\+Type  = double$>$ \\
bool \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT}{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+SubdividerT}$<$ Mesh\+Type, Real\+Type $>$\+::operator() (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{\+\_\+n,  }\item[{const bool}]{\+\_\+update\+\_\+points = {\ttfamily true} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Subdivide the attached {\ttfamily \+\_\+n} times. \begin{DoxySeeAlso}{See also}
\hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a89341e7a735352adbb76f6842d3fab12}{Subdivider\+T()}, \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a4faaaf5cdd9273b4c28ef9f2a2e942ba}{attach()}, \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_a5e43f1fde3bd9588b4265fe1d1be6a8d}{detach()} 
\end{DoxySeeAlso}


Definition at line 148 of file Subdivider\+T.\+hh.



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
Open\+Flipper/libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Tools/\+Subdivider/\+Uniform/\hyperlink{SubdividerT_8hh}{Subdivider\+T.\+hh}\end{DoxyCompactItemize}
