\hypertarget{a09232}{}\section{Open\+Mesh\+:\+:Subdivider\+:\+:Uniform\+:\+:Modified\+ButterflyT$<$ Mesh\+Type, Real\+Type $>$ Class Template Reference}
\label{a09232}\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 $<$Open\+Flipper/libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Tools/\+Subdivider/\+Uniform/\+Modified\+Butter\+Fly\+T.\+hh$>$}

Inheritance diagram for Open\+Mesh\+:\+:Subdivider\+:\+:Uniform\+:\+:Modified\+ButterflyT$<$ Mesh\+Type, Real\+Type $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.000000cm]{a09232}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a09232_ae853054b768347ead3c3a239cbd99bc5}\label{a09232_ae853054b768347ead3c3a239cbd99bc5}} 
typedef Real\+Type {\bfseries real\+\_\+t}
\item 
\mbox{\Hypertarget{a09232_a4c2bd18d13af40e004814e66e2e83f21}\label{a09232_a4c2bd18d13af40e004814e66e2e83f21}} 
typedef Mesh\+Type {\bfseries mesh\+\_\+t}
\item 
\mbox{\Hypertarget{a09232_a32cac0953e9ccfdab3825e8fa9710b8b}\label{a09232_a32cac0953e9ccfdab3825e8fa9710b8b}} 
typedef \hyperlink{a09248}{SubdividerT}$<$ mesh\+\_\+t, real\+\_\+t $>$ {\bfseries parent\+\_\+t}
\item 
\mbox{\Hypertarget{a09232_a58bfb9902c057b9691dc3329391b2cc2}\label{a09232_a58bfb9902c057b9691dc3329391b2cc2}} 
typedef std\+::vector$<$ std\+::vector$<$ real\+\_\+t $>$ $>$ {\bfseries weights\+\_\+t}
\item 
\mbox{\Hypertarget{a09232_a42b598e7c4f594fa60eae79b75896ddd}\label{a09232_a42b598e7c4f594fa60eae79b75896ddd}} 
typedef std\+::vector$<$ real\+\_\+t $>$ {\bfseries weight\+\_\+t}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a09232_a76aa04dd324557bad4acf1f8610cb142}\label{a09232_a76aa04dd324557bad4acf1f8610cb142}} 
{\bfseries Modified\+ButterflyT} (mesh\+\_\+t \&\+\_\+m)
\item 
\mbox{\Hypertarget{a09232_a2c530bdd0adca70f5d61fc2cc379aea7}\label{a09232_a2c530bdd0adca70f5d61fc2cc379aea7}} 
const char $\ast$ \hyperlink{a09232_a2c530bdd0adca70f5d61fc2cc379aea7}{name} () const
\begin{DoxyCompactList}\small\item\em Return name of subdivision algorithm. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a09232_a81b2612d667f5e1e4baa6678f6981b0d}\label{a09232_a81b2612d667f5e1e4baa6678f6981b0d}} 
void \hyperlink{a09232_a81b2612d667f5e1e4baa6678f6981b0d}{init\+\_\+weights} (size\+\_\+t \+\_\+max\+\_\+valence=30)
\begin{DoxyCompactList}\small\item\em Pre-\/compute weights. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a09232_a5cb2f2cf637a0c07a7fab9a2fcedeb5c}\label{a09232_a5cb2f2cf637a0c07a7fab9a2fcedeb5c}} 
bool \hyperlink{a09232_a5cb2f2cf637a0c07a7fab9a2fcedeb5c}{prepare} (mesh\+\_\+t \&\+\_\+m)
\begin{DoxyCompactList}\small\item\em Prepare mesh, e.\+g. add properties. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a09232_ab4ad979e5bdaf16dab2f84063071857d}\label{a09232_ab4ad979e5bdaf16dab2f84063071857d}} 
bool \hyperlink{a09232_ab4ad979e5bdaf16dab2f84063071857d}{cleanup} (mesh\+\_\+t \&\+\_\+m)
\begin{DoxyCompactList}\small\item\em Cleanup mesh after usage, e.\+g. remove added properties. \end{DoxyCompactList}\item 
bool \hyperlink{a09232_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 
\mbox{\Hypertarget{a09232_a2397d08d747b73077b3e24fdb2decf56}\label{a09232_a2397d08d747b73077b3e24fdb2decf56}} 
void {\bfseries split\+\_\+face} (mesh\+\_\+t \&\+\_\+m, const typename mesh\+\_\+t\+::\+Face\+Handle \&\+\_\+fh)
\item 
\mbox{\Hypertarget{a09232_a3c03f9e91364941720ab85caa0407d5d}\label{a09232_a3c03f9e91364941720ab85caa0407d5d}} 
void {\bfseries corner\+\_\+cutting} (mesh\+\_\+t \&\+\_\+m, const typename mesh\+\_\+t\+::\+Halfedge\+Handle \&\+\_\+he)
\item 
\mbox{\Hypertarget{a09232_a3df36bf5fb9f83b433707f4ac004f9b1}\label{a09232_a3df36bf5fb9f83b433707f4ac004f9b1}} 
void {\bfseries split\+\_\+edge} (mesh\+\_\+t \&\+\_\+m, const typename mesh\+\_\+t\+::\+Edge\+Handle \&\+\_\+eh)
\item 
\mbox{\Hypertarget{a09232_af8062a947cc361e491653dcbeaedee21}\label{a09232_af8062a947cc361e491653dcbeaedee21}} 
void {\bfseries compute\+\_\+midpoint} (mesh\+\_\+t \&\+\_\+m, const typename mesh\+\_\+t\+::\+Edge\+Handle \&\+\_\+eh)
\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a09232_a3a64e0f8a7b055f310eb6e4399d92239}\label{a09232_a3a64e0f8a7b055f310eb6e4399d92239}} 
\hyperlink{a08876}{Open\+Mesh\+::\+V\+Prop\+HandleT}$<$ typename mesh\+\_\+t\+::\+Point $>$ {\bfseries vp\+\_\+pos\+\_\+}
\item 
\mbox{\Hypertarget{a09232_a77a2edbf507fa2fd4ebf1152821c7312}\label{a09232_a77a2edbf507fa2fd4ebf1152821c7312}} 
\hyperlink{a08884}{Open\+Mesh\+::\+E\+Prop\+HandleT}$<$ typename mesh\+\_\+t\+::\+Point $>$ {\bfseries ep\+\_\+pos\+\_\+}
\item 
\mbox{\Hypertarget{a09232_a37f16a0956bff757fbb4eb01b99cdc4e}\label{a09232_a37f16a0956bff757fbb4eb01b99cdc4e}} 
weights\+\_\+t {\bfseries weights}
\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$typename Mesh\+Type, typename Real\+Type = double$>$\newline
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,\textquotesingle{}\textquotesingle{} in Proceedings of S\+I\+G\+G\+R\+A\+PH 1996, A\+CM S\+I\+G\+G\+R\+A\+PH, 1996, pp. 189-\/192.

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

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



\subsection{Member Function Documentation}
\mbox{\Hypertarget{a09232_a8268bf3fb5ddd8a05fc1f3d128bee933}\label{a09232_a8268bf3fb5ddd8a05fc1f3d128bee933}} 
\index{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Modified\+ButterflyT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Modified\+ButterflyT}!subdivide@{subdivide}}
\index{subdivide@{subdivide}!Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Modified\+ButterflyT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Modified\+ButterflyT}}
\subsubsection{\texorpdfstring{subdivide()}{subdivide()}}
{\footnotesize\ttfamily template$<$typename Mesh\+Type, typename Real\+Type = double$>$ \\
bool \hyperlink{a09232}{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Modified\+ButterflyT}$<$ 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]}}



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

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

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



Definition at line 177 of file Modified\+Butter\+Fly\+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{a02336}{Modified\+Butter\+Fly\+T.\+hh}\end{DoxyCompactItemize}
