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


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

Inheritance diagram for Open\+Mesh\+:\+:Subdivider\+:\+:Uniform\+:\+:Loop\+T$<$ Mesh\+Type, Real\+Type $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.000000cm]{a00787}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{a00445}{compute\+\_\+weight}
\end{DoxyCompactItemize}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00787_afe44bd5448376edf698f1822a61cf67e}{typedef Real\+Type {\bfseries real\+\_\+t}}\label{a00787_afe44bd5448376edf698f1822a61cf67e}

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

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

\item 
\hypertarget{a00787_a5a443b049ae4cb724e5dcb3e6ba82f1b}{typedef std\+::pair$<$ real\+\_\+t, real\+\_\+t $>$ {\bfseries weight\+\_\+t}}\label{a00787_a5a443b049ae4cb724e5dcb3e6ba82f1b}

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

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

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

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

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

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

\begin{DoxyCompactList}\small\item\em Cleanup mesh after usage, e.\+g. remove added properties. \end{DoxyCompactList}\item 
bool \hyperlink{a00787_a243f348f6d2b48807b15fcbe59f3a8cf}{subdivide} (mesh\+\_\+t \&\+\_\+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{a00787_adbd163c53b594b84d6e3083d5fba07d0}{void {\bfseries split\+\_\+face} (mesh\+\_\+t \&\+\_\+m, const typename mesh\+\_\+t\+::\+Face\+Handle \&\+\_\+fh)}\label{a00787_adbd163c53b594b84d6e3083d5fba07d0}

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

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

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

\item 
\hypertarget{a00787_a8b0f26cad886ee193bc4b0ff044efea9}{void {\bfseries smooth} (mesh\+\_\+t \&\+\_\+m, const typename mesh\+\_\+t\+::\+Vertex\+Handle \&\+\_\+vh)}\label{a00787_a8b0f26cad886ee193bc4b0ff044efea9}

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

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

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

\item 
\hypertarget{a00787_a541c6e9b90bb6f17120c00382c52201a}{const real\+\_\+t {\bfseries \+\_\+1over8}}\label{a00787_a541c6e9b90bb6f17120c00382c52201a}

\item 
\hypertarget{a00787_a0f67186f7eff7e8deaf04d852c26a701}{const real\+\_\+t {\bfseries \+\_\+3over8}}\label{a00787_a0f67186f7eff7e8deaf04d852c26a701}

\end{DoxyCompactItemize}


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

Uniform Loop subdivision algorithm.

Implementation as described in

C. T. Loop, \char`\"{}\+Smooth Subdivision Surfaces Based on Triangles\char`\"{}, M.\+S. Thesis, Department of Mathematics, University of Utah, August 1987. 

Definition at line 96 of file Loop\+T.\+hh.



\subsection{Member Function Documentation}
\hypertarget{a00787_a243f348f6d2b48807b15fcbe59f3a8cf}{\index{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Loop\+T@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Loop\+T}!subdivide@{subdivide}}
\index{subdivide@{subdivide}!Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Loop\+T@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Loop\+T}}
\subsubsection[{subdivide}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Mesh\+Type, typename Real\+Type = float$>$ bool {\bf Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Loop\+T}$<$ 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]}}}\label{a00787_a243f348f6d2b48807b15fcbe59f3a8cf}


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 154 of file Loop\+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{a02069}{Loop\+T.\+hh}\end{DoxyCompactItemize}
