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


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

Inheritance diagram for Open\+Mesh\+:\+:Subdivider\+:\+:Uniform\+:\+:Modified\+Butterfly\+T$<$ Mesh\+Type, Real\+Type $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.000000cm]{a00850}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00850_ae853054b768347ead3c3a239cbd99bc5}{typedef Real\+Type {\bfseries real\+\_\+t}}\label{a00850_ae853054b768347ead3c3a239cbd99bc5}

\item 
\hypertarget{a00850_a4c2bd18d13af40e004814e66e2e83f21}{typedef Mesh\+Type {\bfseries mesh\+\_\+t}}\label{a00850_a4c2bd18d13af40e004814e66e2e83f21}

\item 
\hypertarget{a00850_a32cac0953e9ccfdab3825e8fa9710b8b}{typedef \hyperlink{a01257}{Subdivider\+T}$<$ mesh\+\_\+t, \\*
real\+\_\+t $>$ {\bfseries parent\+\_\+t}}\label{a00850_a32cac0953e9ccfdab3825e8fa9710b8b}

\item 
\hypertarget{a00850_a58bfb9902c057b9691dc3329391b2cc2}{typedef std\+::vector\\*
$<$ std\+::vector$<$ real\+\_\+t $>$ $>$ {\bfseries weights\+\_\+t}}\label{a00850_a58bfb9902c057b9691dc3329391b2cc2}

\item 
\hypertarget{a00850_a42b598e7c4f594fa60eae79b75896ddd}{typedef std\+::vector$<$ real\+\_\+t $>$ {\bfseries weight\+\_\+t}}\label{a00850_a42b598e7c4f594fa60eae79b75896ddd}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00850_a76aa04dd324557bad4acf1f8610cb142}{{\bfseries Modified\+Butterfly\+T} (mesh\+\_\+t \&\+\_\+m)}\label{a00850_a76aa04dd324557bad4acf1f8610cb142}

\item 
\hypertarget{a00850_a853805f6974853e9afe4159c56c3f094}{const char $\ast$ \hyperlink{a00850_a853805f6974853e9afe4159c56c3f094}{name} () const }\label{a00850_a853805f6974853e9afe4159c56c3f094}

\begin{DoxyCompactList}\small\item\em Return name of subdivision algorithm. \end{DoxyCompactList}\item 
\hypertarget{a00850_a81b2612d667f5e1e4baa6678f6981b0d}{void \hyperlink{a00850_a81b2612d667f5e1e4baa6678f6981b0d}{init\+\_\+weights} (size\+\_\+t \+\_\+max\+\_\+valence=30)}\label{a00850_a81b2612d667f5e1e4baa6678f6981b0d}

\begin{DoxyCompactList}\small\item\em Pre-\/compute weights. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00850_a5cb2f2cf637a0c07a7fab9a2fcedeb5c}{bool \hyperlink{a00850_a5cb2f2cf637a0c07a7fab9a2fcedeb5c}{prepare} (mesh\+\_\+t \&\+\_\+m)}\label{a00850_a5cb2f2cf637a0c07a7fab9a2fcedeb5c}

\begin{DoxyCompactList}\small\item\em Prepare mesh, e.\+g. add properties. \end{DoxyCompactList}\item 
\hypertarget{a00850_ab4ad979e5bdaf16dab2f84063071857d}{bool \hyperlink{a00850_ab4ad979e5bdaf16dab2f84063071857d}{cleanup} (mesh\+\_\+t \&\+\_\+m)}\label{a00850_ab4ad979e5bdaf16dab2f84063071857d}

\begin{DoxyCompactList}\small\item\em Cleanup mesh after usage, e.\+g. remove added properties. \end{DoxyCompactList}\item 
bool \hyperlink{a00850_a8268bf3fb5ddd8a05fc1f3d128bee933}{subdivide} (Mesh\+Type \&\+\_\+m, size\+\_\+t \+\_\+n, const bool \+\_\+update\+\_\+points=true)
\begin{DoxyCompactList}\small\item\em Subdivide mesh {\ttfamily \+\_\+m} {\ttfamily \+\_\+n} times. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00850_a2397d08d747b73077b3e24fdb2decf56}{void {\bfseries split\+\_\+face} (mesh\+\_\+t \&\+\_\+m, const typename mesh\+\_\+t\+::\+Face\+Handle \&\+\_\+fh)}\label{a00850_a2397d08d747b73077b3e24fdb2decf56}

\item 
\hypertarget{a00850_a3c03f9e91364941720ab85caa0407d5d}{void {\bfseries corner\+\_\+cutting} (mesh\+\_\+t \&\+\_\+m, const typename mesh\+\_\+t\+::\+Halfedge\+Handle \&\+\_\+he)}\label{a00850_a3c03f9e91364941720ab85caa0407d5d}

\item 
\hypertarget{a00850_a3df36bf5fb9f83b433707f4ac004f9b1}{void {\bfseries split\+\_\+edge} (mesh\+\_\+t \&\+\_\+m, const typename mesh\+\_\+t\+::\+Edge\+Handle \&\+\_\+eh)}\label{a00850_a3df36bf5fb9f83b433707f4ac004f9b1}

\item 
\hypertarget{a00850_af8062a947cc361e491653dcbeaedee21}{void {\bfseries compute\+\_\+midpoint} (mesh\+\_\+t \&\+\_\+m, const typename mesh\+\_\+t\+::\+Edge\+Handle \&\+\_\+eh)}\label{a00850_af8062a947cc361e491653dcbeaedee21}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00850_a3a64e0f8a7b055f310eb6e4399d92239}{\hyperlink{a01470}{Open\+Mesh\+::\+V\+Prop\+Handle\+T}\\*
$<$ typename mesh\+\_\+t\+::\+Point $>$ {\bfseries vp\+\_\+pos\+\_\+}}\label{a00850_a3a64e0f8a7b055f310eb6e4399d92239}

\item 
\hypertarget{a00850_a77a2edbf507fa2fd4ebf1152821c7312}{\hyperlink{a00543}{Open\+Mesh\+::\+E\+Prop\+Handle\+T}\\*
$<$ typename mesh\+\_\+t\+::\+Point $>$ {\bfseries ep\+\_\+pos\+\_\+}}\label{a00850_a77a2edbf507fa2fd4ebf1152821c7312}

\item 
\hypertarget{a00850_a37f16a0956bff757fbb4eb01b99cdc4e}{weights\+\_\+t {\bfseries weights}}\label{a00850_a37f16a0956bff757fbb4eb01b99cdc4e}

\end{DoxyCompactItemize}


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

Modified Butterfly subdivision algorithm

Implementation of the modified butterfly scheme of Denis Zorin, Peter Schröder and Wim Sweldens, ``\+Interpolating subdivision for meshes with arbitrary topology,'' in Proceedings of S\+I\+G\+G\+R\+A\+P\+H 1996, A\+C\+M S\+I\+G\+G\+R\+A\+P\+H, 1996, pp. 189-\/192.

Clement Courbet -\/ \href{mailto:clement.courbet@ecp.fr}{\tt clement.\+courbet@ecp.\+fr} 

Definition at line 99 of file Modified\+Butter\+Fly\+T.\+hh.



\subsection{Member Function Documentation}
\hypertarget{a00850_a8268bf3fb5ddd8a05fc1f3d128bee933}{\index{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Modified\+Butterfly\+T@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Modified\+Butterfly\+T}!subdivide@{subdivide}}
\index{subdivide@{subdivide}!Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Modified\+Butterfly\+T@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Modified\+Butterfly\+T}}
\subsubsection[{subdivide}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Mesh\+Type, typename Real\+Type = float$>$ bool {\bf Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Modified\+Butterfly\+T}$<$ Mesh\+Type, Real\+Type $>$\+::subdivide (
\begin{DoxyParamCaption}
\item[{Mesh\+Type \&}]{\+\_\+m, }
\item[{size\+\_\+t}]{\+\_\+n, }
\item[{const bool}]{\+\_\+update\+\_\+points = {\ttfamily true}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [virtual]}}}\label{a00850_a8268bf3fb5ddd8a05fc1f3d128bee933}


Subdivide mesh {\ttfamily \+\_\+m} {\ttfamily \+\_\+n} times. 

T\+O\+D\+O\+:Implement fixed positions 

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



Definition at line 184 of file Modified\+Butter\+Fly\+T.\+hh.



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