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


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

Inheritance diagram for Open\+Mesh\+:\+:Subdivider\+:\+:Uniform\+:\+:Sqrt3T$<$ Mesh\+Type, Real\+Type $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.000000cm]{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_1_1compute__weight}{compute\+\_\+weight}
\end{DoxyCompactItemize}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_abab76d80f2522d1bdbc5f4ff11d3c95c}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_abab76d80f2522d1bdbc5f4ff11d3c95c}} 
typedef Real\+Type {\bfseries real\+\_\+t}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_ae085211ce0a2e82eb81851f45a1efbf6}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_ae085211ce0a2e82eb81851f45a1efbf6}} 
typedef Mesh\+Type {\bfseries mesh\+\_\+t}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a6117dbf761d8a921f3c936ac0ec277c3}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a6117dbf761d8a921f3c936ac0ec277c3}} 
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_1Sqrt3T_a1ce43ef49e5b32053e6fd7b06e015159}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a1ce43ef49e5b32053e6fd7b06e015159}} 
typedef std\+::pair$<$ real\+\_\+t, real\+\_\+t $>$ {\bfseries weight\+\_\+t}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a57cb39595d89810510b4f84ff166ef55}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a57cb39595d89810510b4f84ff166ef55}} 
typedef std\+::vector$<$ std\+::pair$<$ real\+\_\+t, real\+\_\+t $>$ $>$ {\bfseries weights\+\_\+t}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a9de00f401a7ad1a8e22d97a005802681}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a9de00f401a7ad1a8e22d97a005802681}} 
{\bfseries Sqrt3T} (Mesh\+Type \&\+\_\+m)
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_ac2cd98c5246b5b8a50366f9114c3467a}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_ac2cd98c5246b5b8a50366f9114c3467a}} 
const char $\ast$ \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_ac2cd98c5246b5b8a50366f9114c3467a}{name} () const override
\begin{DoxyCompactList}\small\item\em Return name of subdivision algorithm. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_aec838a28eb4759848342b57db5fe6593}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_aec838a28eb4759848342b57db5fe6593}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_aec838a28eb4759848342b57db5fe6593}{init\+\_\+weights} (size\+\_\+t \+\_\+max\+\_\+valence=50)
\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_1Sqrt3T_a7f1b63e31739027866405e5ecd368e2d}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a7f1b63e31739027866405e5ecd368e2d}} 
bool \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a7f1b63e31739027866405e5ecd368e2d}{prepare} (Mesh\+Type \&\+\_\+m) override
\begin{DoxyCompactList}\small\item\em Prepare mesh, e.\+g. add properties. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a3e8e7b2792af86a061eb6a57046bb3fe}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a3e8e7b2792af86a061eb6a57046bb3fe}} 
bool \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a3e8e7b2792af86a061eb6a57046bb3fe}{cleanup} (Mesh\+Type \&\+\_\+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_1Sqrt3T_a76e78d087ae4c28050c6576732b5f171}{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_1Sqrt3T_a239f261bbb1f0c6da9b48dfcbd1fe356}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a239f261bbb1f0c6da9b48dfcbd1fe356}} 
void {\bfseries compute\+\_\+new\+\_\+boundary\+\_\+points} (Mesh\+Type \&\+\_\+m, const typename Mesh\+Type\+::\+Edge\+Handle \&\+\_\+eh)
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_ad830f345d0e6f4396f838cb52dceda95}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_ad830f345d0e6f4396f838cb52dceda95}} 
void {\bfseries boundary\+\_\+split} (Mesh\+Type \&\+\_\+m, const typename Mesh\+Type\+::\+Face\+Handle \&\+\_\+fh)
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a2b76153f38132ff21a93aab3c42b61f0}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a2b76153f38132ff21a93aab3c42b61f0}} 
void {\bfseries boundary\+\_\+split} (Mesh\+Type \&\+\_\+m, const typename Mesh\+Type\+::\+Halfedge\+Handle \&\+\_\+heh, const typename Mesh\+Type\+::\+Vertex\+Handle \&\+\_\+vh)
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a75f508d3f8d75e600b4e848bb0a494de}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a75f508d3f8d75e600b4e848bb0a494de}} 
void {\bfseries boundary\+\_\+split} (Mesh\+Type \&\+\_\+m, const typename Mesh\+Type\+::\+Halfedge\+Handle \&\+\_\+heh)
\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a88d4df8fd45488a25114c03dbec26738}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a88d4df8fd45488a25114c03dbec26738}} 
weights\+\_\+t {\bfseries weights\+\_\+}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_ae04f7ade88d83a34d4b5d098e43640e1}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_ae04f7ade88d83a34d4b5d098e43640e1}} 
\hyperlink{structOpenMesh_1_1VPropHandleT}{Open\+Mesh\+::\+V\+Prop\+HandleT}$<$ typename Mesh\+Type\+::\+Point $>$ {\bfseries vp\+\_\+pos\+\_\+}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a7bd2c41696bef35f68baa51e26ef3bba}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a7bd2c41696bef35f68baa51e26ef3bba}} 
\hyperlink{structOpenMesh_1_1EPropHandleT}{Open\+Mesh\+::\+E\+Prop\+HandleT}$<$ std\+::pair$<$ typename Mesh\+Type\+::\+Vertex\+Handle, typename Mesh\+Type\+::\+Vertex\+Handle $>$ $>$ {\bfseries ep\+\_\+nv\+\_\+}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a48a99de5d0a702cc8b534bb3e592e24a}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a48a99de5d0a702cc8b534bb3e592e24a}} 
\hyperlink{structOpenMesh_1_1MPropHandleT}{Open\+Mesh\+::\+M\+Prop\+HandleT}$<$ size\+\_\+t $>$ {\bfseries mp\+\_\+gen\+\_\+}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_aab6c3b4155682718afd7ab4180629666}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_aab6c3b4155682718afd7ab4180629666}} 
const real\+\_\+t {\bfseries \+\_\+1over3}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a38292acf333cb6a677546582d23d425e}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a38292acf333cb6a677546582d23d425e}} 
const real\+\_\+t {\bfseries \+\_\+1over27}
\end{DoxyCompactItemize}


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

Uniform Sqrt3 subdivision algorithm

Implementation as described in

L. Kobbelt, \href{http://www-i8.informatik.rwth-aachen.de/publications/downloads/sqrt3.pdf}{\tt \char`\"{}\+Sqrt(3) subdivision\char`\"{}}, Proceedings of S\+I\+G\+G\+R\+A\+PH 2000. 

Definition at line 98 of file Sqrt3\+T.\+hh.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a76e78d087ae4c28050c6576732b5f171}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T_a76e78d087ae4c28050c6576732b5f171}} 
\index{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Sqrt3T@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Sqrt3T}!subdivide@{subdivide}}
\index{subdivide@{subdivide}!Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Sqrt3T@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Sqrt3T}}
\subsubsection{\texorpdfstring{subdivide()}{subdivide()}}
{\footnotesize\ttfamily template$<$typename Mesh\+Type, typename Real\+Type = double$>$ \\
bool \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1Sqrt3T}{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Sqrt3T}$<$ 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 160 of file Sqrt3\+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{Sqrt3T_8hh}{Sqrt3\+T.\+hh}\end{DoxyCompactItemize}
