\hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT}{}\section{Open\+Mesh\+:\+:Subdivider\+:\+:Uniform\+:\+:Modified\+ButterflyT$<$ Mesh\+Type, Real\+Type $>$ Class Template Reference}
\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT}\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]{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_ae853054b768347ead3c3a239cbd99bc5}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_ae853054b768347ead3c3a239cbd99bc5}} 
typedef Real\+Type {\bfseries real\+\_\+t}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a4c2bd18d13af40e004814e66e2e83f21}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a4c2bd18d13af40e004814e66e2e83f21}} 
typedef Mesh\+Type {\bfseries mesh\+\_\+t}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a32cac0953e9ccfdab3825e8fa9710b8b}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a32cac0953e9ccfdab3825e8fa9710b8b}} 
typedef \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT}{SubdividerT}$<$ mesh\+\_\+t, real\+\_\+t $>$ {\bfseries parent\+\_\+t}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a58bfb9902c057b9691dc3329391b2cc2}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a58bfb9902c057b9691dc3329391b2cc2}} 
typedef std\+::vector$<$ std\+::vector$<$ real\+\_\+t $>$ $>$ {\bfseries weights\+\_\+t}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a42b598e7c4f594fa60eae79b75896ddd}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a42b598e7c4f594fa60eae79b75896ddd}} 
typedef std\+::vector$<$ real\+\_\+t $>$ {\bfseries weight\+\_\+t}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a76aa04dd324557bad4acf1f8610cb142}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a76aa04dd324557bad4acf1f8610cb142}} 
{\bfseries Modified\+ButterflyT} (mesh\+\_\+t \&\+\_\+m)
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_aa7de30eceefd3e5a25c056442aac9c64}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_aa7de30eceefd3e5a25c056442aac9c64}} 
const char $\ast$ \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_aa7de30eceefd3e5a25c056442aac9c64}{name} () const override
\begin{DoxyCompactList}\small\item\em Return name of subdivision algorithm. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a81b2612d667f5e1e4baa6678f6981b0d}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a81b2612d667f5e1e4baa6678f6981b0d}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_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{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_aed42f867139738303c6ecff7ea7ef248}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_aed42f867139738303c6ecff7ea7ef248}} 
bool \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_aed42f867139738303c6ecff7ea7ef248}{prepare} (mesh\+\_\+t \&\+\_\+m) override
\begin{DoxyCompactList}\small\item\em Prepare mesh, e.\+g. add properties. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a8a1c09b09b7ea1c08ed7c12d6145ffa2}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a8a1c09b09b7ea1c08ed7c12d6145ffa2}} 
bool \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a8a1c09b09b7ea1c08ed7c12d6145ffa2}{cleanup} (mesh\+\_\+t \&\+\_\+m) override
\begin{DoxyCompactList}\small\item\em Cleanup mesh after usage, e.\+g. remove added properties. \end{DoxyCompactList}\item 
bool \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a468436df18f5ca0600850c1bdbd0c91c}{subdivide} (Mesh\+Type \&\+\_\+m, size\+\_\+t \+\_\+n, const bool \+\_\+update\+\_\+points=true) override
\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{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a2397d08d747b73077b3e24fdb2decf56}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a2397d08d747b73077b3e24fdb2decf56}} 
void {\bfseries split\+\_\+face} (mesh\+\_\+t \&\+\_\+m, const typename mesh\+\_\+t\+::\+Face\+Handle \&\+\_\+fh)
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a3c03f9e91364941720ab85caa0407d5d}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a3c03f9e91364941720ab85caa0407d5d}} 
void {\bfseries corner\+\_\+cutting} (mesh\+\_\+t \&\+\_\+m, const typename mesh\+\_\+t\+::\+Halfedge\+Handle \&\+\_\+he)
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a3df36bf5fb9f83b433707f4ac004f9b1}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a3df36bf5fb9f83b433707f4ac004f9b1}} 
void {\bfseries split\+\_\+edge} (mesh\+\_\+t \&\+\_\+m, const typename mesh\+\_\+t\+::\+Edge\+Handle \&\+\_\+eh)
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_af8062a947cc361e491653dcbeaedee21}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_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{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a3a64e0f8a7b055f310eb6e4399d92239}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a3a64e0f8a7b055f310eb6e4399d92239}} 
\hyperlink{structOpenMesh_1_1VPropHandleT}{Open\+Mesh\+::\+V\+Prop\+HandleT}$<$ typename mesh\+\_\+t\+::\+Point $>$ {\bfseries vp\+\_\+pos\+\_\+}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a77a2edbf507fa2fd4ebf1152821c7312}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a77a2edbf507fa2fd4ebf1152821c7312}} 
\hyperlink{structOpenMesh_1_1EPropHandleT}{Open\+Mesh\+::\+E\+Prop\+HandleT}$<$ typename mesh\+\_\+t\+::\+Point $>$ {\bfseries ep\+\_\+pos\+\_\+}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a37f16a0956bff757fbb4eb01b99cdc4e}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_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{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a468436df18f5ca0600850c1bdbd0c91c}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT_a468436df18f5ca0600850c1bdbd0c91c}} 
\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{classOpenMesh_1_1Subdivider_1_1Uniform_1_1ModifiedButterflyT}{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 [override]}, {\ttfamily [protected]}, {\ttfamily [virtual]}}



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

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

Implements \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT_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{ModifiedButterFlyT_8hh}{Modified\+Butter\+Fly\+T.\+hh}\end{DoxyCompactItemize}
