\hypertarget{a00733}{\section{Open\+Mesh\+:\+:Subdivider\+:\+:Uniform\+:\+:Interpolating\+Sqrt3\+L\+G\+T$<$ Mesh\+Type, Real\+Type $>$ Class Template Reference}
\label{a00733}\index{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Interpolating\+Sqrt3\+L\+G\+T$<$ Mesh\+Type, Real\+Type $>$@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Interpolating\+Sqrt3\+L\+G\+T$<$ Mesh\+Type, Real\+Type $>$}}
}


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

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

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

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

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

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00733_a8276bb433e594f75268a06d1236889dc}{{\bfseries Interpolating\+Sqrt3\+L\+G\+T} (Mesh\+Type \&\+\_\+m)}\label{a00733_a8276bb433e594f75268a06d1236889dc}

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

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

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

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

\begin{DoxyCompactList}\small\item\em Cleanup mesh after usage, e.\+g. remove added properties. \end{DoxyCompactList}\item 
bool \hyperlink{a00733_ab5c98a4c60a60272beeccb8bb420176c}{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{a00733_a9fa0d8f8e2ae178747cc938a0efb5ef6}{void {\bfseries compute\+\_\+new\+\_\+boundary\+\_\+points} (Mesh\+Type \&\+\_\+m, const typename Mesh\+Type\+::\+Edge\+Handle \&\+\_\+eh)}\label{a00733_a9fa0d8f8e2ae178747cc938a0efb5ef6}

\item 
\hypertarget{a00733_ab20bad76c8ac5699188cce3102049588}{void {\bfseries boundary\+\_\+split} (Mesh\+Type \&\+\_\+m, const typename Mesh\+Type\+::\+Face\+Handle \&\+\_\+fh)}\label{a00733_ab20bad76c8ac5699188cce3102049588}

\item 
\hypertarget{a00733_a311b056f105b887c36dcce6fca9016d2}{void {\bfseries boundary\+\_\+split} (Mesh\+Type \&\+\_\+m, const typename Mesh\+Type\+::\+Halfedge\+Handle \&\+\_\+heh, const typename Mesh\+Type\+::\+Vertex\+Handle \&\+\_\+vh)}\label{a00733_a311b056f105b887c36dcce6fca9016d2}

\item 
\hypertarget{a00733_a00697c808244c56b65c942abe5a63dc4}{void {\bfseries boundary\+\_\+split} (Mesh\+Type \&\+\_\+m, const typename Mesh\+Type\+::\+Halfedge\+Handle \&\+\_\+heh)}\label{a00733_a00697c808244c56b65c942abe5a63dc4}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00733_acb513461d9bb07ba3c05b7ba478887d1}{weights\+\_\+t {\bfseries weights\+\_\+}}\label{a00733_acb513461d9bb07ba3c05b7ba478887d1}

\item 
\hypertarget{a00733_ac8c4134b4de7d7423114fa8573a550a5}{\hyperlink{a00598}{Open\+Mesh\+::\+F\+Prop\+Handle\+T}\\*
$<$ typename \\*
Mesh\+Type\+::\+Vertex\+Handle $>$ {\bfseries fp\+\_\+pos\+\_\+}}\label{a00733_ac8c4134b4de7d7423114fa8573a550a5}

\item 
\hypertarget{a00733_ab1a1111ac4159f1a00fd173c6f0653b8}{\hyperlink{a00543}{Open\+Mesh\+::\+E\+Prop\+Handle\+T}\\*
$<$ std\+::pair$<$ typename \\*
Mesh\+Type\+::\+Vertex\+Handle, \\*
typename \\*
Mesh\+Type\+::\+Vertex\+Handle $>$ $>$ {\bfseries ep\+\_\+nv\+\_\+}}\label{a00733_ab1a1111ac4159f1a00fd173c6f0653b8}

\item 
\hypertarget{a00733_a847e5d110e7b003cc4e123b5d1378733}{\hyperlink{a00865}{Open\+Mesh\+::\+M\+Prop\+Handle\+T}$<$ size\+\_\+t $>$ {\bfseries mp\+\_\+gen\+\_\+}}\label{a00733_a847e5d110e7b003cc4e123b5d1378733}

\end{DoxyCompactItemize}


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

Uniform Interpolating Sqrt3 subdivision algorithm

Implementation of the interpolating Labsik Greiner Subdivider as described in \char`\"{}interpolating sqrt(3) subdivision\char`\"{} Labsik \& Greiner, 2000

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

Definition at line 113 of file Sqrt3\+Interpolating\+Subdivider\+Labsik\+Greiner\+T.\+hh.



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


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 201 of file Sqrt3\+Interpolating\+Subdivider\+Labsik\+Greiner\+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{a02071}{Sqrt3\+Interpolating\+Subdivider\+Labsik\+Greiner\+T.\+hh}\end{DoxyCompactItemize}
