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


{\ttfamily \#include $<$Catmull\+Clark\+T.\+hh$>$}

Inheritance diagram for Open\+Mesh\+:\+:Subdivider\+:\+:Uniform\+:\+:Catmull\+ClarkT$<$ Mesh\+Type, Real\+Type $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.000000cm]{a09172}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a09172_afb81aaa80c3dd00a71d6e9b027c3404f}\label{a09172_afb81aaa80c3dd00a71d6e9b027c3404f}} 
typedef Mesh\+Type\+::\+Face\+Handle {\bfseries Face\+Handle}
\item 
\mbox{\Hypertarget{a09172_a16856045ea6cb81478200e338f70d7a0}\label{a09172_a16856045ea6cb81478200e338f70d7a0}} 
typedef Mesh\+Type\+::\+Vertex\+Handle {\bfseries Vertex\+Handle}
\item 
\mbox{\Hypertarget{a09172_a46e6197eae82c4592eb63179bb01cedf}\label{a09172_a46e6197eae82c4592eb63179bb01cedf}} 
typedef Mesh\+Type\+::\+Edge\+Handle {\bfseries Edge\+Handle}
\item 
\mbox{\Hypertarget{a09172_ae6facaeec3c51f7d48b787b268cd611a}\label{a09172_ae6facaeec3c51f7d48b787b268cd611a}} 
typedef Mesh\+Type\+::\+Halfedge\+Handle {\bfseries Halfedge\+Handle}
\item 
\mbox{\Hypertarget{a09172_a20beb79bd423930daa500e83354acb5a}\label{a09172_a20beb79bd423930daa500e83354acb5a}} 
typedef Mesh\+Type\+::\+Point {\bfseries Point}
\item 
\mbox{\Hypertarget{a09172_ab02d527ddfeedd4cd7e99cfac3a40193}\label{a09172_ab02d527ddfeedd4cd7e99cfac3a40193}} 
typedef Mesh\+Type\+::\+Normal {\bfseries Normal}
\item 
\mbox{\Hypertarget{a09172_ab92e9e5aa0eef6d58957b8bb36e6420c}\label{a09172_ab92e9e5aa0eef6d58957b8bb36e6420c}} 
typedef Mesh\+Type\+::\+Face\+Iter {\bfseries Face\+Iter}
\item 
\mbox{\Hypertarget{a09172_a5c2d90f4bf6f7e1be995fee3bf2346f6}\label{a09172_a5c2d90f4bf6f7e1be995fee3bf2346f6}} 
typedef Mesh\+Type\+::\+Edge\+Iter {\bfseries Edge\+Iter}
\item 
\mbox{\Hypertarget{a09172_a2b348559c9f1453e1d1aed960b6e3080}\label{a09172_a2b348559c9f1453e1d1aed960b6e3080}} 
typedef Mesh\+Type\+::\+Vertex\+Iter {\bfseries Vertex\+Iter}
\item 
\mbox{\Hypertarget{a09172_a490f5a58e50ed7ba81d86cd81ffd7c5e}\label{a09172_a490f5a58e50ed7ba81d86cd81ffd7c5e}} 
typedef Mesh\+Type\+::\+Vertex\+Edge\+Iter {\bfseries Vertex\+Edge\+Iter}
\item 
\mbox{\Hypertarget{a09172_adce13f2ef29ec027648ac8a11932885c}\label{a09172_adce13f2ef29ec027648ac8a11932885c}} 
typedef Mesh\+Type\+::\+Vertex\+Face\+Iter {\bfseries Vertex\+Face\+Iter}
\item 
\mbox{\Hypertarget{a09172_ab45a947fb39ce828de4242ddf1f8f0ef}\label{a09172_ab45a947fb39ce828de4242ddf1f8f0ef}} 
typedef Mesh\+Type\+::\+V\+O\+H\+Iter {\bfseries V\+O\+H\+Iter}
\item 
\mbox{\Hypertarget{a09172_aedf4baed9240d00509d09c8d8faeb75c}\label{a09172_aedf4baed9240d00509d09c8d8faeb75c}} 
typedef \hyperlink{a09248}{SubdividerT}$<$ Mesh\+Type, Real\+Type $>$ {\bfseries parent\+\_\+t}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a09172_ae6d980d140a5fa437cbd052cad08ad5b}\label{a09172_ae6d980d140a5fa437cbd052cad08ad5b}} 
\hyperlink{a09172_ae6d980d140a5fa437cbd052cad08ad5b}{Catmull\+ClarkT} ()
\begin{DoxyCompactList}\small\item\em Constructor. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a09172_a4dffc85efdd793bb06fd62ae54440e46}\label{a09172_a4dffc85efdd793bb06fd62ae54440e46}} 
\hyperlink{a09172_a4dffc85efdd793bb06fd62ae54440e46}{Catmull\+ClarkT} (Mesh\+Type \&\+\_\+m)
\begin{DoxyCompactList}\small\item\em Constructor. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a09172_a1f291ac6ca790e8cdc18697305cbd818}\label{a09172_a1f291ac6ca790e8cdc18697305cbd818}} 
const char $\ast$ \hyperlink{a09172_a1f291ac6ca790e8cdc18697305cbd818}{name} () const
\begin{DoxyCompactList}\small\item\em Return name of subdivision algorithm. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a09172_a9becc2879f2bd7460a7e5459851c9a6e}\label{a09172_a9becc2879f2bd7460a7e5459851c9a6e}} 
virtual bool \hyperlink{a09172_a9becc2879f2bd7460a7e5459851c9a6e}{prepare} (Mesh\+Type \&\+\_\+m)
\begin{DoxyCompactList}\small\item\em Initialize properties and weights. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a09172_a083f82920d1b20c80fd34d0ccb566998}\label{a09172_a083f82920d1b20c80fd34d0ccb566998}} 
virtual bool \hyperlink{a09172_a083f82920d1b20c80fd34d0ccb566998}{cleanup} (Mesh\+Type \&\+\_\+m)
\begin{DoxyCompactList}\small\item\em Remove properties and weights. \end{DoxyCompactList}\item 
virtual bool \hyperlink{a09172_ae629c898e1d24771d1e68cd3a4f27e4f}{subdivide} (Mesh\+Type \&\+\_\+m, size\+\_\+t \+\_\+n, const bool \+\_\+update\+\_\+points=true)
\begin{DoxyCompactList}\small\item\em Execute n subdivision steps. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{Indent}\textbf{ Topology helpers}\par
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a09172_ad911bc5597c63f19620bdd692d7618d0}\label{a09172_ad911bc5597c63f19620bdd692d7618d0}} 
void {\bfseries split\+\_\+edge} (Mesh\+Type \&\+\_\+m, const Edge\+Handle \&\+\_\+eh)
\item 
\mbox{\Hypertarget{a09172_a61859912ec2d16287a26250124074f0c}\label{a09172_a61859912ec2d16287a26250124074f0c}} 
void {\bfseries split\+\_\+face} (Mesh\+Type \&\+\_\+m, const Face\+Handle \&\+\_\+fh)
\item 
\mbox{\Hypertarget{a09172_ae6a68ccd835dfb5860344f4788d2212d}\label{a09172_ae6a68ccd835dfb5860344f4788d2212d}} 
void {\bfseries compute\+\_\+midpoint} (Mesh\+Type \&\+\_\+m, const Edge\+Handle \&\+\_\+eh, const bool \+\_\+update\+\_\+points)
\item 
\mbox{\Hypertarget{a09172_a36f737ae8a7e5c226a1fad528d72e914}\label{a09172_a36f737ae8a7e5c226a1fad528d72e914}} 
void {\bfseries update\+\_\+vertex} (Mesh\+Type \&\+\_\+m, const Vertex\+Handle \&\+\_\+vh)
\end{DoxyCompactItemize}
\end{Indent}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a09172_a95307ba32fe3326fd289ff2d27776de0}\label{a09172_a95307ba32fe3326fd289ff2d27776de0}} 
\hyperlink{a08876}{Open\+Mesh\+::\+V\+Prop\+HandleT}$<$ Point $>$ {\bfseries vp\+\_\+pos\+\_\+}
\item 
\mbox{\Hypertarget{a09172_ab7d2eb5be21588d324ef3da72e3e017b}\label{a09172_ab7d2eb5be21588d324ef3da72e3e017b}} 
\hyperlink{a08884}{Open\+Mesh\+::\+E\+Prop\+HandleT}$<$ Point $>$ {\bfseries ep\+\_\+pos\+\_\+}
\item 
\mbox{\Hypertarget{a09172_a84f222572d96ebbbfc64f41a9ac074ee}\label{a09172_a84f222572d96ebbbfc64f41a9ac074ee}} 
\hyperlink{a08888}{Open\+Mesh\+::\+F\+Prop\+HandleT}$<$ Point $>$ {\bfseries fp\+\_\+pos\+\_\+}
\item 
\mbox{\Hypertarget{a09172_a893f296f01b7763f324905901af67e64}\label{a09172_a893f296f01b7763f324905901af67e64}} 
\hyperlink{a08884}{Open\+Mesh\+::\+E\+Prop\+HandleT}$<$ double $>$ {\bfseries crease\+Weights\+\_\+}
\end{DoxyCompactItemize}


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

Based on code from Leon Kos, C\+AD lab, Mech.\+Eng., University of Ljubljana, Slovenia (\href{http://www.lecad.fs.uni-lj.si/~leon}{\tt http\+://www.\+lecad.\+fs.\+uni-\/lj.\+si/$\sim$leon})

\begin{DoxyNote}{Note}
Needs a Poly\+Mesh to work on! 
\end{DoxyNote}


Definition at line 85 of file Catmull\+Clark\+T.\+hh.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{a09172_ae629c898e1d24771d1e68cd3a4f27e4f}\label{a09172_ae629c898e1d24771d1e68cd3a4f27e4f}} 
\index{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Catmull\+ClarkT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Catmull\+ClarkT}!subdivide@{subdivide}}
\index{subdivide@{subdivide}!Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Catmull\+ClarkT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Catmull\+ClarkT}}
\subsubsection{\texorpdfstring{subdivide()}{subdivide()}}
{\footnotesize\ttfamily template$<$typename Mesh\+Type , typename Real\+Type $>$ \\
bool \hyperlink{a09172}{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Catmull\+ClarkT}$<$ 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 [protected]}, {\ttfamily [virtual]}}



Execute n subdivision steps. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+m} & Mesh to work on \\
\hline
{\em \+\_\+n} & Number of iterations \\
\hline
{\em \+\_\+update\+\_\+points} & Unused here \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
successful? 
\end{DoxyReturn}


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



Definition at line 96 of file Catmull\+Clark\+T\+\_\+impl.\+hh.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
Open\+Flipper/libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Tools/\+Subdivider/\+Uniform/\hyperlink{a02315}{Catmull\+Clark\+T.\+hh}\item 
Open\+Flipper/libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Tools/\+Subdivider/\+Uniform/Catmull\+Clark\+T\+\_\+impl.\+hh\end{DoxyCompactItemize}
