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


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

Inheritance diagram for Open\+Mesh\+:\+:Subdivider\+:\+:Uniform\+:\+:CompositeT$<$ Mesh\+Type, Real\+Type $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.528217cm]{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_1_1Coeff}{Coeff}
\begin{DoxyCompactList}\small\item\em Abstract base class for coefficient functions. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ac17a2051674b9dee657a63fa0fb76d94}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ac17a2051674b9dee657a63fa0fb76d94}} 
typedef Real\+Type {\bfseries real\+\_\+t}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a83b2fed1876ab235d16f0da2cf1e2d8c}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a83b2fed1876ab235d16f0da2cf1e2d8c}} 
typedef Mesh\+Type {\bfseries mesh\+\_\+t}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ae940e2f7d2d435c6fd49542422d98cd4}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ae940e2f7d2d435c6fd49542422d98cd4}} 
typedef \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1SubdividerT}{SubdividerT}$<$ mesh\+\_\+t, real\+\_\+t $>$ {\bfseries parent\+\_\+t}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a514ff6d9a921fb10d886d5519d4fded8}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a514ff6d9a921fb10d886d5519d4fded8}} 
{\bfseries CompositeT} (Mesh\+Type \&\+\_\+mesh)
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a04e70f23a62a46af9e6bc2541e951024}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a04e70f23a62a46af9e6bc2541e951024}} 
virtual const char $\ast$ \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a04e70f23a62a46af9e6bc2541e951024}{name} (void) const override=0
\begin{DoxyCompactList}\small\item\em Return name of subdivision algorithm. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_abc5a069002b908b75a6363c1e9b02c39}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_abc5a069002b908b75a6363c1e9b02c39}} 
typedef Mesh\+Type\+::\+Scalar {\bfseries scalar\+\_\+t}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a19e9e92bd454236289c4d54059fa60d3}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a19e9e92bd454236289c4d54059fa60d3}} 
typedef Mesh\+Type\+::\+Vertex\+Handle {\bfseries Vertex\+Handle}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ae8c7d4574e0051a0682ca4d09aba1c3b}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ae8c7d4574e0051a0682ca4d09aba1c3b}} 
typedef Mesh\+Type\+::\+Face\+Handle {\bfseries Face\+Handle}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a1e16be1dbc078c68b9daf1edb19a8bcc}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a1e16be1dbc078c68b9daf1edb19a8bcc}} 
typedef Mesh\+Type\+::\+Edge\+Handle {\bfseries Edge\+Handle}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_aad7b956149abff9f415160916919f86f}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_aad7b956149abff9f415160916919f86f}} 
typedef Mesh\+Type\+::\+Halfedge\+Handle {\bfseries Halfedge\+Handle}
\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a4411d60e33df1f0c7b224dd19a56fef8}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a4411d60e33df1f0c7b224dd19a56fef8}} 
bool \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a4411d60e33df1f0c7b224dd19a56fef8}{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_1CompositeT_afff4bed47a11e0b0d504c6bd0c3a9f19}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_afff4bed47a11e0b0d504c6bd0c3a9f19}} 
bool \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_afff4bed47a11e0b0d504c6bd0c3a9f19}{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}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a23746ba68c2b865853550a68ead439f7}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a23746ba68c2b865853550a68ead439f7}} 
bool \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a23746ba68c2b865853550a68ead439f7}{cleanup} (Mesh\+Type \&\+\_\+m) override
\begin{DoxyCompactList}\small\item\em Cleanup mesh after usage, e.\+g. remove added properties. \end{DoxyCompactList}\item 
virtual void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a8dfdb98878479b54cfc103f1c8034ed4}{apply\+\_\+rules} (void)=0
\item 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_aa8cf2fa548e0723623306b821b0b01c2}{commit} (Mesh\+Type \&\+\_\+m)
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a1326d30c4a87ad9bba5127a3fdbe79d2}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a1326d30c4a87ad9bba5127a3fdbe79d2}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a1326d30c4a87ad9bba5127a3fdbe79d2}{corner\+\_\+cutting} (Halfedge\+Handle \+\_\+heh)
\begin{DoxyCompactList}\small\item\em Corner Cutting. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ab18f57dd13668c67124aa284a828b510}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ab18f57dd13668c67124aa284a828b510}} 
Vertex\+Handle \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ab18f57dd13668c67124aa284a828b510}{split\+\_\+edge} (Halfedge\+Handle \+\_\+heh)
\begin{DoxyCompactList}\small\item\em Split Edge. \end{DoxyCompactList}\end{DoxyCompactItemize}
\begin{Indent}\textbf{ Uniform composite subdivision rules}\par
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a1d45a05215a0145b08afe17afe56fb4f}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a1d45a05215a0145b08afe17afe56fb4f}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a1d45a05215a0145b08afe17afe56fb4f}{Tvv3} ()
\begin{DoxyCompactList}\small\item\em Split Face, using Vertex information (1-\/3 split) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ac926099e21e1ccf4208038d273b63a57}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ac926099e21e1ccf4208038d273b63a57}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ac926099e21e1ccf4208038d273b63a57}{Tvv4} ()
\begin{DoxyCompactList}\small\item\em Split Face, using Vertex information (1-\/4 split) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ace1e32ab93dfdf5f867ff0d60aae7ce1}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ace1e32ab93dfdf5f867ff0d60aae7ce1}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ace1e32ab93dfdf5f867ff0d60aae7ce1}{Tfv} ()
\begin{DoxyCompactList}\small\item\em Split Face, using Face Information. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_aa0495c7bbeb355e88af1724fd510b327}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_aa0495c7bbeb355e88af1724fd510b327}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_aa0495c7bbeb355e88af1724fd510b327}{FF} ()
\begin{DoxyCompactList}\small\item\em Face to face averaging. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ab53a99ba5610576ef1d3cf01a566ab30}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ab53a99ba5610576ef1d3cf01a566ab30}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ab53a99ba5610576ef1d3cf01a566ab30}{F\+Fc} (\hyperlink{structOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_1_1Coeff}{Coeff} \&\+\_\+coeff)
\begin{DoxyCompactList}\small\item\em Weighted face to face averaging. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a2cc63b7252fbd630a3ef26da8a381c01}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a2cc63b7252fbd630a3ef26da8a381c01}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a2cc63b7252fbd630a3ef26da8a381c01}{F\+Fc} (scalar\+\_\+t \+\_\+c)
\begin{DoxyCompactList}\small\item\em Weighted face to face averaging. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a3600488b52e6e143c464b284fd453781}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a3600488b52e6e143c464b284fd453781}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a3600488b52e6e143c464b284fd453781}{FV} ()
\begin{DoxyCompactList}\small\item\em Face to vertex averaging. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a39ca9a5507d4d6b0f0c30d7f0daf2a9e}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a39ca9a5507d4d6b0f0c30d7f0daf2a9e}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a39ca9a5507d4d6b0f0c30d7f0daf2a9e}{F\+Vc} (\hyperlink{structOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_1_1Coeff}{Coeff} \&\+\_\+coeff)
\begin{DoxyCompactList}\small\item\em Weighted face to vertex Averaging with flaps. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a2e6c3024dcbee1a6b1aac8695d33d86f}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a2e6c3024dcbee1a6b1aac8695d33d86f}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a2e6c3024dcbee1a6b1aac8695d33d86f}{F\+Vc} (scalar\+\_\+t \+\_\+c)
\begin{DoxyCompactList}\small\item\em Weighted face to vertex Averaging with flaps. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a8db66c0f8eb5b35af24eb368da524ba7}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a8db66c0f8eb5b35af24eb368da524ba7}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a8db66c0f8eb5b35af24eb368da524ba7}{FE} ()
\begin{DoxyCompactList}\small\item\em Face to edge averaging. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a35388243679b29082a346088779e4e86}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a35388243679b29082a346088779e4e86}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a35388243679b29082a346088779e4e86}{VF} ()
\begin{DoxyCompactList}\small\item\em Vertex to Face Averaging. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a391faa77341e9e7fa268a05745d170de}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a391faa77341e9e7fa268a05745d170de}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a391faa77341e9e7fa268a05745d170de}{V\+Fa} (\hyperlink{structOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_1_1Coeff}{Coeff} \&\+\_\+coeff)
\begin{DoxyCompactList}\small\item\em Vertex to Face Averaging, weighted. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ae7041649c35a328ec0dde220604ef41e}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ae7041649c35a328ec0dde220604ef41e}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ae7041649c35a328ec0dde220604ef41e}{V\+Fa} (scalar\+\_\+t \+\_\+alpha)
\begin{DoxyCompactList}\small\item\em Vertex to Face Averaging, weighted. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_add3815ae0c361f86d6540a2f73e36ebc}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_add3815ae0c361f86d6540a2f73e36ebc}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_add3815ae0c361f86d6540a2f73e36ebc}{VV} ()
\begin{DoxyCompactList}\small\item\em Vertex to vertex averaging. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a321e740e4f6cff41adfcf843c82e33f0}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a321e740e4f6cff41adfcf843c82e33f0}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a321e740e4f6cff41adfcf843c82e33f0}{V\+Vc} (\hyperlink{structOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_1_1Coeff}{Coeff} \&\+\_\+coeff)
\begin{DoxyCompactList}\small\item\em Vertex to vertex averaging, weighted. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ab95a7d8ea472a57bfc80fd5f6c6a5654}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ab95a7d8ea472a57bfc80fd5f6c6a5654}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ab95a7d8ea472a57bfc80fd5f6c6a5654}{V\+Vc} (scalar\+\_\+t \+\_\+c)
\begin{DoxyCompactList}\small\item\em Vertex to vertex averaging, weighted. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ac33806fb9f809971a3dfe4c228507a76}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ac33806fb9f809971a3dfe4c228507a76}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ac33806fb9f809971a3dfe4c228507a76}{VE} ()
\begin{DoxyCompactList}\small\item\em VE Step (Vertex to Edge Averaging) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_acd243b4d3e60a7b67ddd7f3437e51010}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_acd243b4d3e60a7b67ddd7f3437e51010}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_acd243b4d3e60a7b67ddd7f3437e51010}{VdE} ()
\begin{DoxyCompactList}\small\item\em Vertex to edge averaging, using diamond of edges. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a787f2e616ae6b4e0cf5c5f7951d783b2}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a787f2e616ae6b4e0cf5c5f7951d783b2}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a787f2e616ae6b4e0cf5c5f7951d783b2}{Vd\+Ec} (scalar\+\_\+t \+\_\+c)
\begin{DoxyCompactList}\small\item\em Weighted vertex to edge averaging, using diamond of edges. \end{DoxyCompactList}\item 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a6a75fc51769d2f972cca10beb52c4494}{Vd\+Eg} (\hyperlink{structOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_1_1Coeff}{Coeff} \&\+\_\+coeff)
\item 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a1500a850dcfa332546c202048be25daa}{Vd\+Eg} (scalar\+\_\+t \+\_\+gamma)
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a2ec3a28199e1d6a464284a86851d2b51}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a2ec3a28199e1d6a464284a86851d2b51}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a2ec3a28199e1d6a464284a86851d2b51}{EF} ()
\begin{DoxyCompactList}\small\item\em Edge to face averaging. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_aa211c0ed8fb4ea49f877a6a2503eb670}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_aa211c0ed8fb4ea49f877a6a2503eb670}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_aa211c0ed8fb4ea49f877a6a2503eb670}{EV} ()
\begin{DoxyCompactList}\small\item\em Edge to vertex averaging. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a55c0091dddb4064cb72248208986c010}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a55c0091dddb4064cb72248208986c010}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a55c0091dddb4064cb72248208986c010}{E\+Vc} (\hyperlink{structOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_1_1Coeff}{Coeff} \&\+\_\+coeff)
\begin{DoxyCompactList}\small\item\em Weighted edge to vertex averaging. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a20e01b467ae0b8f32a3c08c2e4f3dcb6}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a20e01b467ae0b8f32a3c08c2e4f3dcb6}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a20e01b467ae0b8f32a3c08c2e4f3dcb6}{E\+Vc} (scalar\+\_\+t \+\_\+c)
\begin{DoxyCompactList}\small\item\em Weighted edge to vertex averaging. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ae09cae8bd069be8007a8c6c44e3eb7c7}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ae09cae8bd069be8007a8c6c44e3eb7c7}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_ae09cae8bd069be8007a8c6c44e3eb7c7}{EdE} ()
\begin{DoxyCompactList}\small\item\em Edge to edge averaging w/ flap rule. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_abd991c2a1ecb9b2c313de99b0f6de160}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_abd991c2a1ecb9b2c313de99b0f6de160}} 
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_abd991c2a1ecb9b2c313de99b0f6de160}{Ed\+Ec} (scalar\+\_\+t \+\_\+c)
\begin{DoxyCompactList}\small\item\em Weighted edge to edge averaging w/ flap rule. \end{DoxyCompactList}\end{DoxyCompactItemize}
\end{Indent}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_acbaeb7bdbe0f5928905a730b994acc95}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_acbaeb7bdbe0f5928905a730b994acc95}} 
Mesh\+Type $\ast$ {\bfseries p\+\_\+mesh\+\_\+}
\end{DoxyCompactItemize}


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

This class provides the composite subdivision rules for the uniform case.

To create a subdivider derive from this class and overload the functions \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a04e70f23a62a46af9e6bc2541e951024}{name()} and \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a8dfdb98878479b54cfc103f1c8034ed4}{apply\+\_\+rules()}. In the latter one call the wanted rules.

For details on the composite scheme refer to
\begin{DoxyItemize}
\item \href{http://cm.bell-labs.com/who/poswald/sqrt3.pdf}{\tt P. Oswald, P. Schroeder \char`\"{}\+Composite primal/dual sqrt(3)-\/subdivision schemes\char`\"{}, C\+A\+GD 20, 3, 2003, 135--164}
\end{DoxyItemize}

\begin{DoxyNote}{Note}
Not all rules are implemented! 
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
class \hyperlink{classOpenMesh_1_1Subdivider_1_1Adaptive_1_1CompositeT}{Adaptive\+::\+CompositeT} 
\end{DoxySeeAlso}


Definition at line 89 of file Composite\+T.\+hh.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a8dfdb98878479b54cfc103f1c8034ed4}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a8dfdb98878479b54cfc103f1c8034ed4}} 
\index{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+CompositeT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+CompositeT}!apply\+\_\+rules@{apply\+\_\+rules}}
\index{apply\+\_\+rules@{apply\+\_\+rules}!Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+CompositeT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+CompositeT}}
\subsubsection{\texorpdfstring{apply\+\_\+rules()}{apply\_rules()}}
{\footnotesize\ttfamily template$<$typename Mesh\+Type , typename Real\+Type  = float$>$ \\
virtual void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT}{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+CompositeT}$<$ Mesh\+Type, Real\+Type $>$\+::apply\+\_\+rules (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [pure virtual]}}

Assemble here the rule sequence, by calling the constructor of the wanted rules. 

Implemented in \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeLoopT_a2be80bda4d8f0ffd262991eb58c67d11}{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Composite\+Loop\+T$<$ Mesh\+Type, Real\+Type $>$}, and \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeSqrt3T_ace39436a69d029a19559d69a6fd4d329}{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+Composite\+Sqrt3\+T$<$ Mesh\+Type, Real\+Type $>$}.

\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_aa8cf2fa548e0723623306b821b0b01c2}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_aa8cf2fa548e0723623306b821b0b01c2}} 
\index{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+CompositeT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+CompositeT}!commit@{commit}}
\index{commit@{commit}!Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+CompositeT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+CompositeT}}
\subsubsection{\texorpdfstring{commit()}{commit()}}
{\footnotesize\ttfamily template$<$typename Mesh\+Type , typename Real\+Type  = float$>$ \\
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT}{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+CompositeT}$<$ Mesh\+Type, Real\+Type $>$\+::commit (\begin{DoxyParamCaption}\item[{Mesh\+Type \&}]{\+\_\+m }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}}

Move vertices to new positions after the rules have been applied to the mesh (called by \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_afff4bed47a11e0b0d504c6bd0c3a9f19}{subdivide()}). 

Definition at line 145 of file Composite\+T.\+hh.

\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a6a75fc51769d2f972cca10beb52c4494}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a6a75fc51769d2f972cca10beb52c4494}} 
\index{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+CompositeT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+CompositeT}!Vd\+Eg@{Vd\+Eg}}
\index{Vd\+Eg@{Vd\+Eg}!Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+CompositeT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+CompositeT}}
\subsubsection{\texorpdfstring{Vd\+Eg()}{VdEg()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily template$<$typename Mesh\+Type , typename Real\+Type $>$ \\
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT}{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+CompositeT}$<$ Mesh\+Type, Real\+Type $>$\+::Vd\+Eg (\begin{DoxyParamCaption}\item[{\hyperlink{structOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_1_1Coeff}{Coeff} \&}]{\+\_\+coeff }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}}

Weigthed vertex to edge averaging, using diamond of edges for irregular vertices. 

Definition at line 773 of file Composite\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a1500a850dcfa332546c202048be25daa}\label{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT_a1500a850dcfa332546c202048be25daa}} 
\index{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+CompositeT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+CompositeT}!Vd\+Eg@{Vd\+Eg}}
\index{Vd\+Eg@{Vd\+Eg}!Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+CompositeT@{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+CompositeT}}
\subsubsection{\texorpdfstring{Vd\+Eg()}{VdEg()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily template$<$typename Mesh\+Type , typename Real\+Type $>$ \\
void \hyperlink{classOpenMesh_1_1Subdivider_1_1Uniform_1_1CompositeT}{Open\+Mesh\+::\+Subdivider\+::\+Uniform\+::\+CompositeT}$<$ Mesh\+Type, Real\+Type $>$\+::Vd\+Eg (\begin{DoxyParamCaption}\item[{scalar\+\_\+t}]{\+\_\+gamma }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}}

Weigthed vertex to edge averaging, using diamond of edges for irregular vertices. 

Definition at line 714 of file Composite\+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/\+Composite/\hyperlink{Uniform_2Composite_2CompositeT_8hh}{Composite\+T.\+hh}\item 
Open\+Flipper/libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Tools/\+Subdivider/\+Uniform/\+Composite/\hyperlink{Uniform_2Composite_2CompositeT__impl_8hh}{Composite\+T\+\_\+impl.\+hh}\end{DoxyCompactItemize}
