\hypertarget{a00390}{\section{Open\+Mesh\+:\+:Subdivider\+:\+:Uniform\+:\+:Catmull\+Clark\+T$<$ Mesh\+Type, Real\+Type $>$ Class Template Reference}
\label{a00390}\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\+Clark\+T$<$ Mesh\+Type, Real\+Type $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.000000cm]{a00390}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00390_afb81aaa80c3dd00a71d6e9b027c3404f}{typedef Mesh\+Type\+::\+Face\+Handle {\bfseries Face\+Handle}}\label{a00390_afb81aaa80c3dd00a71d6e9b027c3404f}

\item 
\hypertarget{a00390_a16856045ea6cb81478200e338f70d7a0}{typedef Mesh\+Type\+::\+Vertex\+Handle {\bfseries Vertex\+Handle}}\label{a00390_a16856045ea6cb81478200e338f70d7a0}

\item 
\hypertarget{a00390_a46e6197eae82c4592eb63179bb01cedf}{typedef Mesh\+Type\+::\+Edge\+Handle {\bfseries Edge\+Handle}}\label{a00390_a46e6197eae82c4592eb63179bb01cedf}

\item 
\hypertarget{a00390_ae6facaeec3c51f7d48b787b268cd611a}{typedef Mesh\+Type\+::\+Halfedge\+Handle {\bfseries Halfedge\+Handle}}\label{a00390_ae6facaeec3c51f7d48b787b268cd611a}

\item 
\hypertarget{a00390_a20beb79bd423930daa500e83354acb5a}{typedef Mesh\+Type\+::\+Point {\bfseries Point}}\label{a00390_a20beb79bd423930daa500e83354acb5a}

\item 
\hypertarget{a00390_ab02d527ddfeedd4cd7e99cfac3a40193}{typedef Mesh\+Type\+::\+Normal {\bfseries Normal}}\label{a00390_ab02d527ddfeedd4cd7e99cfac3a40193}

\item 
\hypertarget{a00390_ab92e9e5aa0eef6d58957b8bb36e6420c}{typedef Mesh\+Type\+::\+Face\+Iter {\bfseries Face\+Iter}}\label{a00390_ab92e9e5aa0eef6d58957b8bb36e6420c}

\item 
\hypertarget{a00390_a5c2d90f4bf6f7e1be995fee3bf2346f6}{typedef Mesh\+Type\+::\+Edge\+Iter {\bfseries Edge\+Iter}}\label{a00390_a5c2d90f4bf6f7e1be995fee3bf2346f6}

\item 
\hypertarget{a00390_a2b348559c9f1453e1d1aed960b6e3080}{typedef Mesh\+Type\+::\+Vertex\+Iter {\bfseries Vertex\+Iter}}\label{a00390_a2b348559c9f1453e1d1aed960b6e3080}

\item 
\hypertarget{a00390_a490f5a58e50ed7ba81d86cd81ffd7c5e}{typedef Mesh\+Type\+::\+Vertex\+Edge\+Iter {\bfseries Vertex\+Edge\+Iter}}\label{a00390_a490f5a58e50ed7ba81d86cd81ffd7c5e}

\item 
\hypertarget{a00390_adce13f2ef29ec027648ac8a11932885c}{typedef Mesh\+Type\+::\+Vertex\+Face\+Iter {\bfseries Vertex\+Face\+Iter}}\label{a00390_adce13f2ef29ec027648ac8a11932885c}

\item 
\hypertarget{a00390_ab45a947fb39ce828de4242ddf1f8f0ef}{typedef Mesh\+Type\+::\+V\+O\+H\+Iter {\bfseries V\+O\+H\+Iter}}\label{a00390_ab45a947fb39ce828de4242ddf1f8f0ef}

\item 
\hypertarget{a00390_aedf4baed9240d00509d09c8d8faeb75c}{typedef \hyperlink{a01257}{Subdivider\+T}$<$ Mesh\+Type, \\*
Real\+Type $>$ {\bfseries parent\+\_\+t}}\label{a00390_aedf4baed9240d00509d09c8d8faeb75c}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00390_ae6d980d140a5fa437cbd052cad08ad5b}{\hyperlink{a00390_ae6d980d140a5fa437cbd052cad08ad5b}{Catmull\+Clark\+T} ()}\label{a00390_ae6d980d140a5fa437cbd052cad08ad5b}

\begin{DoxyCompactList}\small\item\em Constructor. \end{DoxyCompactList}\item 
\hypertarget{a00390_a4dffc85efdd793bb06fd62ae54440e46}{\hyperlink{a00390_a4dffc85efdd793bb06fd62ae54440e46}{Catmull\+Clark\+T} (Mesh\+Type \&\+\_\+m)}\label{a00390_a4dffc85efdd793bb06fd62ae54440e46}

\begin{DoxyCompactList}\small\item\em Constructor. \end{DoxyCompactList}\item 
\hypertarget{a00390_af2fe46bc746493c6e75651d65a96be7e}{const char $\ast$ \hyperlink{a00390_af2fe46bc746493c6e75651d65a96be7e}{name} () const }\label{a00390_af2fe46bc746493c6e75651d65a96be7e}

\begin{DoxyCompactList}\small\item\em Return name of subdivision algorithm. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00390_a9becc2879f2bd7460a7e5459851c9a6e}{virtual bool \hyperlink{a00390_a9becc2879f2bd7460a7e5459851c9a6e}{prepare} (Mesh\+Type \&\+\_\+m)}\label{a00390_a9becc2879f2bd7460a7e5459851c9a6e}

\begin{DoxyCompactList}\small\item\em Initialize properties and weights. \end{DoxyCompactList}\item 
\hypertarget{a00390_a083f82920d1b20c80fd34d0ccb566998}{virtual bool \hyperlink{a00390_a083f82920d1b20c80fd34d0ccb566998}{cleanup} (Mesh\+Type \&\+\_\+m)}\label{a00390_a083f82920d1b20c80fd34d0ccb566998}

\begin{DoxyCompactList}\small\item\em Remove properties and weights. \end{DoxyCompactList}\item 
virtual bool \hyperlink{a00390_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}{\bf Topology helpers}\par
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00390_ad911bc5597c63f19620bdd692d7618d0}{void {\bfseries split\+\_\+edge} (Mesh\+Type \&\+\_\+m, const Edge\+Handle \&\+\_\+eh)}\label{a00390_ad911bc5597c63f19620bdd692d7618d0}

\item 
\hypertarget{a00390_a61859912ec2d16287a26250124074f0c}{void {\bfseries split\+\_\+face} (Mesh\+Type \&\+\_\+m, const Face\+Handle \&\+\_\+fh)}\label{a00390_a61859912ec2d16287a26250124074f0c}

\item 
\hypertarget{a00390_ae6a68ccd835dfb5860344f4788d2212d}{void {\bfseries compute\+\_\+midpoint} (Mesh\+Type \&\+\_\+m, const Edge\+Handle \&\+\_\+eh, const bool \+\_\+update\+\_\+points)}\label{a00390_ae6a68ccd835dfb5860344f4788d2212d}

\item 
\hypertarget{a00390_a36f737ae8a7e5c226a1fad528d72e914}{void {\bfseries update\+\_\+vertex} (Mesh\+Type \&\+\_\+m, const Vertex\+Handle \&\+\_\+vh)}\label{a00390_a36f737ae8a7e5c226a1fad528d72e914}

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

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

\item 
\hypertarget{a00390_a84f222572d96ebbbfc64f41a9ac074ee}{\hyperlink{a00598}{Open\+Mesh\+::\+F\+Prop\+Handle\+T}$<$ Point $>$ {\bfseries fp\+\_\+pos\+\_\+}}\label{a00390_a84f222572d96ebbbfc64f41a9ac074ee}

\item 
\hypertarget{a00390_a893f296f01b7763f324905901af67e64}{\hyperlink{a00543}{Open\+Mesh\+::\+E\+Prop\+Handle\+T}$<$ double $>$ {\bfseries crease\+Weights\+\_\+}}\label{a00390_a893f296f01b7763f324905901af67e64}

\end{DoxyCompactItemize}


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

Based on code from Leon Kos, C\+A\+D 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 92 of file Catmull\+Clark\+T.\+hh.



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


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{a01257_aacf8b2b63d1512d3c174fbe1781ee311}{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Subdivider\+T$<$ Mesh\+Type, Real\+Type $>$}.



Definition at line 103 of file Catmull\+Clark\+T.\+cc.



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