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


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

Inheritance diagram for Open\+Mesh\+:\+:Subdivider\+:\+:Uniform\+:\+:MidpointT$<$ Mesh\+Type, Real\+Type $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.000000cm]{a09228}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a09228_ae628e1186672359da01915cace6734d0}\label{a09228_ae628e1186672359da01915cace6734d0}} 
typedef Real\+Type {\bfseries real\+\_\+t}
\item 
\mbox{\Hypertarget{a09228_a51de011beef927f0ec3611746a2c5b9a}\label{a09228_a51de011beef927f0ec3611746a2c5b9a}} 
typedef Mesh\+Type {\bfseries mesh\+\_\+t}
\item 
\mbox{\Hypertarget{a09228_a161bf62714664c754b80d5e82a6baa45}\label{a09228_a161bf62714664c754b80d5e82a6baa45}} 
typedef \hyperlink{a09248}{SubdividerT}$<$ Mesh\+Type, Real\+Type $>$ {\bfseries parent\+\_\+t}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a09228_a204d0109d8e7b911cd7f65f8ce3b64aa}\label{a09228_a204d0109d8e7b911cd7f65f8ce3b64aa}} 
{\bfseries MidpointT} (mesh\+\_\+t \&\+\_\+m)
\item 
\mbox{\Hypertarget{a09228_a1a452d13b99ca356c3d9c594bd4d9450}\label{a09228_a1a452d13b99ca356c3d9c594bd4d9450}} 
const char $\ast$ \hyperlink{a09228_a1a452d13b99ca356c3d9c594bd4d9450}{name} () const
\begin{DoxyCompactList}\small\item\em Return name of subdivision algorithm. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a09228_a74e4b5a7a91f701b4f3eabdf5601223d}\label{a09228_a74e4b5a7a91f701b4f3eabdf5601223d}} 
bool \hyperlink{a09228_a74e4b5a7a91f701b4f3eabdf5601223d}{prepare} (mesh\+\_\+t \&\+\_\+m)
\begin{DoxyCompactList}\small\item\em Prepare mesh, e.\+g. add properties. \end{DoxyCompactList}\item 
bool \hyperlink{a09228_a1ab79bd545947137558decd8a7b193f6}{subdivide} (mesh\+\_\+t \&\+\_\+m, size\+\_\+t \+\_\+n, const bool \+\_\+update\+\_\+points=true)
\item 
\mbox{\Hypertarget{a09228_a1770ca984ab87327adaff2a69e584f25}\label{a09228_a1770ca984ab87327adaff2a69e584f25}} 
bool \hyperlink{a09228_a1770ca984ab87327adaff2a69e584f25}{cleanup} (mesh\+\_\+t \&\+\_\+m)
\begin{DoxyCompactList}\small\item\em Cleanup mesh after usage, e.\+g. remove added properties. \end{DoxyCompactList}\end{DoxyCompactItemize}


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

Midpoint subdivision algorithm.

With every step, the set of vertices is replaced by the midpoints of all current edges. Then, two sets of faces are created to set up the new connectivity\+: From all midpoints of edges surrounding an original face, a new face is created. Also, for all midpoints of edges surrounding an original vertex, a new face is created.

\begin{DoxyNote}{Note}
This algorithm ignores the \+\_\+update\+\_\+points option. 

This algorithm is best suited for closed meshes since boundaries tend to fragment into isolated faces after a few iterations. 
\end{DoxyNote}


Definition at line 27 of file Midpoint\+T.\+hh.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{a09228_a1ab79bd545947137558decd8a7b193f6}\label{a09228_a1ab79bd545947137558decd8a7b193f6}} 
\index{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+MidpointT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+MidpointT}!subdivide@{subdivide}}
\index{subdivide@{subdivide}!Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+MidpointT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+MidpointT}}
\subsubsection{\texorpdfstring{subdivide()}{subdivide()}}
{\footnotesize\ttfamily template$<$typename Mesh\+Type , typename Real\+Type  = double$>$ \\
bool \hyperlink{a09228}{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+MidpointT}$<$ Mesh\+Type, Real\+Type $>$\+::subdivide (\begin{DoxyParamCaption}\item[{mesh\+\_\+t \&}]{\+\_\+m,  }\item[{size\+\_\+t}]{\+\_\+n,  }\item[{const bool}]{\+\_\+update\+\_\+points = {\ttfamily true} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [virtual]}}

Performs one step of Midpoint subdivision. \begin{DoxyNote}{Note}
The \+\_\+update\+\_\+points option is ignored 
\end{DoxyNote}


Implements \hyperlink{a09248_aacf8b2b63d1512d3c174fbe1781ee311}{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Subdivider\+T$<$ Mesh\+Type, Real\+Type $>$}.



Definition at line 48 of file Midpoint\+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/Midpoint\+T.\+hh\end{DoxyCompactItemize}
