\hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT}{}\section{Open\+Mesh\+:\+:Smoother\+:\+:SmootherT$<$ Mesh $>$ Class Template Reference}
\label{classOpenMesh_1_1Smoother_1_1SmootherT}\index{Open\+Mesh\+::\+Smoother\+::\+Smoother\+T$<$ Mesh $>$@{Open\+Mesh\+::\+Smoother\+::\+Smoother\+T$<$ Mesh $>$}}


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

Inheritance diagram for Open\+Mesh\+:\+:Smoother\+:\+:SmootherT$<$ Mesh $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=4.000000cm]{classOpenMesh_1_1Smoother_1_1SmootherT}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
enum \hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT_a867faa77ce2ddee85543459f6653af18}{Component} \{ \hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT_a867faa77ce2ddee85543459f6653af18abe52e6b9d369495ca31057e39e29e465}{Tangential}, 
\hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT_a867faa77ce2ddee85543459f6653af18af2527cfb0045e95d97010a5621e9ca5c}{Normal}, 
\hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT_a867faa77ce2ddee85543459f6653af18a898a6c92513c4d4ec9fbd4652752c602}{Tangential\+\_\+and\+\_\+\+Normal}
 \}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_aafd6f051464295a9900846ed431f3610}\label{classOpenMesh_1_1Smoother_1_1SmootherT_aafd6f051464295a9900846ed431f3610}} 
enum {\bfseries Continuity} \{ {\bfseries C0}, 
{\bfseries C1}, 
{\bfseries C2}
 \}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a821709705d2f795e4226eac61f35200b}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a821709705d2f795e4226eac61f35200b}} 
typedef \hyperlink{classOpenMesh_1_1PolyMeshT_a15372f27edf521d8e9028e2abccae342}{Mesh\+::\+Scalar} {\bfseries Scalar}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_aadfb4510075ee3ffff7f19ef62cf88a8}\label{classOpenMesh_1_1Smoother_1_1SmootherT_aadfb4510075ee3ffff7f19ef62cf88a8}} 
typedef Mesh\+::\+Point {\bfseries Point}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a133102bd0c12a8130285d79e7e7ecc3e}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a133102bd0c12a8130285d79e7e7ecc3e}} 
typedef \hyperlink{classOpenMesh_1_1PolyMeshT_a3570fd132d1ac589b380485cf59c9e0b}{Mesh\+::\+Normal} {\bfseries Normal\+Type}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a3d89accc059b42abcafd7d888f9b6d97}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a3d89accc059b42abcafd7d888f9b6d97}} 
typedef \hyperlink{classOpenMesh_1_1PolyMeshT_a0fc18e13d70825938274e3faf7b55e01}{Mesh\+::\+Vertex\+Handle} {\bfseries Vertex\+Handle}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a13bc5af7cbfbd9aceffe641ee7e39428}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a13bc5af7cbfbd9aceffe641ee7e39428}} 
typedef Mesh\+::\+Edge\+Handle {\bfseries Edge\+Handle}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT_af300a00749e27e052aac01f998532587}{SmootherT} (\hyperlink{classOpenMesh_1_1TriMesh__ArrayKernelT}{Mesh} \&\+\_\+mesh)
\begin{DoxyCompactList}\small\item\em constructor \& destructor \end{DoxyCompactList}\end{DoxyCompactItemize}
\begin{Indent}\textbf{ Initialization and algorithm execution}\par
\begin{DoxyCompactItemize}
\item 
void \hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT_a8f76bf70d991095b63f4161cc8406b6a}{initialize} (\hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT_a867faa77ce2ddee85543459f6653af18}{Component} \+\_\+comp, Continuity \+\_\+cont)
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a6f87efbec4758b930d02372f26c8bed8}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a6f87efbec4758b930d02372f26c8bed8}} 
virtual void \hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT_a6f87efbec4758b930d02372f26c8bed8}{smooth} (unsigned int \+\_\+n)
\begin{DoxyCompactList}\small\item\em Do \+\_\+n smoothing iterations. \end{DoxyCompactList}\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}\textbf{ Error control functions}\par
\begin{DoxyCompactItemize}
\item 
void \hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT_acd0b96d45f71d37584cd91e067397e7b}{set\+\_\+relative\+\_\+local\+\_\+error} (Scalar \+\_\+err)
\begin{DoxyCompactList}\small\item\em Set local error relative to bounding box. \end{DoxyCompactList}\item 
void \hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT_aa4afc9ae6b9ce5f3fc1ea7372ce0b42f}{set\+\_\+absolute\+\_\+local\+\_\+error} (Scalar \+\_\+err)
\begin{DoxyCompactList}\small\item\em Set local error as an absolute value. \end{DoxyCompactList}\item 
void \hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT_aac72d74a6daf8c8fb24a0437f022dabb}{disable\+\_\+local\+\_\+error\+\_\+check} ()
\begin{DoxyCompactList}\small\item\em Disable error control of the smoother. \end{DoxyCompactList}\item 
void \hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT_affa58655ba9762e346d71f77b656c19d}{skip\+\_\+features} (bool \+\_\+state)
\begin{DoxyCompactList}\small\item\em enable or disable feature handling \end{DoxyCompactList}\end{DoxyCompactItemize}
\end{Indent}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_abe7a849f0c90a8675d7bfe8ad24d4970}\label{classOpenMesh_1_1Smoother_1_1SmootherT_abe7a849f0c90a8675d7bfe8ad24d4970}} 
virtual void {\bfseries compute\+\_\+new\+\_\+positions\+\_\+\+C0} ()=0
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_aed9c534d5b6df5d02e8d487163ab7a1d}\label{classOpenMesh_1_1Smoother_1_1SmootherT_aed9c534d5b6df5d02e8d487163ab7a1d}} 
virtual void {\bfseries compute\+\_\+new\+\_\+positions\+\_\+\+C1} ()=0
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_aa28a47f0f0a42f4aff391336e2195421}\label{classOpenMesh_1_1Smoother_1_1SmootherT_aa28a47f0f0a42f4aff391336e2195421}} 
const Point \& {\bfseries orig\+\_\+position} (Vertex\+Handle \+\_\+vh) const
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a9f02ed5fcbbab08e4739540cdcd6d4bd}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a9f02ed5fcbbab08e4739540cdcd6d4bd}} 
const Normal\+Type \& {\bfseries orig\+\_\+normal} (Vertex\+Handle \+\_\+vh) const
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_aed59607a4db2bc26f880906ce5bc8864}\label{classOpenMesh_1_1Smoother_1_1SmootherT_aed59607a4db2bc26f880906ce5bc8864}} 
const Point \& {\bfseries new\+\_\+position} (Vertex\+Handle \+\_\+vh) const
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a1173442f5f5a83084d4c3fb72d1ce2a0}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a1173442f5f5a83084d4c3fb72d1ce2a0}} 
void {\bfseries set\+\_\+new\+\_\+position} (Vertex\+Handle \+\_\+vh, const Point \&\+\_\+p)
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a505ea3528f25ef9299ea992934fb4a97}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a505ea3528f25ef9299ea992934fb4a97}} 
bool {\bfseries is\+\_\+active} (Vertex\+Handle \+\_\+vh) const
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a57aedf5150c31473624425b92ca19b2f}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a57aedf5150c31473624425b92ca19b2f}} 
\hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT_a867faa77ce2ddee85543459f6653af18}{Component} {\bfseries component} () const
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a6474ffefd27d18ffa6014fd635107867}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a6474ffefd27d18ffa6014fd635107867}} 
Continuity {\bfseries continuity} () const
\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a0d0fe0cb163f0da862c772818a5ee326}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a0d0fe0cb163f0da862c772818a5ee326}} 
\hyperlink{classOpenMesh_1_1TriMesh__ArrayKernelT}{Mesh} \& {\bfseries mesh\+\_\+}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a78a7d0b7b1afd9b19f1dbd0011aab99a}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a78a7d0b7b1afd9b19f1dbd0011aab99a}} 
bool {\bfseries skip\+\_\+features\+\_\+}
\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT_a7f0ce0a6c1d95db31c515299b38d9961}{set\+\_\+active\+\_\+vertices} ()
\begin{DoxyCompactList}\small\item\em Find active vertices. Resets tagged status ! \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a35d28f780a56729a5ab03dbfc79dfcf9}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a35d28f780a56729a5ab03dbfc79dfcf9}} 
void {\bfseries compute\+\_\+new\+\_\+positions} ()
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a1d56441553e6b41719a58f52c9624ac4}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a1d56441553e6b41719a58f52c9624ac4}} 
void {\bfseries project\+\_\+to\+\_\+tangent\+\_\+plane} ()
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_aefd65840f7396bc6040158c86f74de58}\label{classOpenMesh_1_1Smoother_1_1SmootherT_aefd65840f7396bc6040158c86f74de58}} 
void {\bfseries local\+\_\+error\+\_\+check} ()
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a7ffc1662220317e28daa36b6405153b4}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a7ffc1662220317e28daa36b6405153b4}} 
void {\bfseries move\+\_\+points} ()
\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a262fb92e67934a56fe132253d7d0441a}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a262fb92e67934a56fe132253d7d0441a}} 
Scalar {\bfseries tolerance\+\_\+}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_ab5c6f95c3d10ab185deda58e5dc0d154}\label{classOpenMesh_1_1Smoother_1_1SmootherT_ab5c6f95c3d10ab185deda58e5dc0d154}} 
Scalar {\bfseries normal\+\_\+deviation\+\_\+}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a01975af06ebf55986eb88e9db976b565}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a01975af06ebf55986eb88e9db976b565}} 
\hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT_a867faa77ce2ddee85543459f6653af18}{Component} {\bfseries component\+\_\+}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a22f4ea1722ae0d4dca9d7cbe959f804d}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a22f4ea1722ae0d4dca9d7cbe959f804d}} 
Continuity {\bfseries continuity\+\_\+}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_acdaab2714aed6ac329aee2aba235e53c}\label{classOpenMesh_1_1Smoother_1_1SmootherT_acdaab2714aed6ac329aee2aba235e53c}} 
\hyperlink{structOpenMesh_1_1VPropHandleT}{Open\+Mesh\+::\+V\+Prop\+HandleT}$<$ Point $>$ {\bfseries original\+\_\+positions\+\_\+}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a955a16ad88ea494fda0db36bc62d38ba}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a955a16ad88ea494fda0db36bc62d38ba}} 
\hyperlink{structOpenMesh_1_1VPropHandleT}{Open\+Mesh\+::\+V\+Prop\+HandleT}$<$ Normal\+Type $>$ {\bfseries original\+\_\+normals\+\_\+}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a126ba443ebe9bc199425f8967d6eea57}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a126ba443ebe9bc199425f8967d6eea57}} 
\hyperlink{structOpenMesh_1_1VPropHandleT}{Open\+Mesh\+::\+V\+Prop\+HandleT}$<$ Point $>$ {\bfseries new\+\_\+positions\+\_\+}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a58e51c0bd683689345e64a1572b40e18}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a58e51c0bd683689345e64a1572b40e18}} 
\hyperlink{structOpenMesh_1_1VPropHandleT}{Open\+Mesh\+::\+V\+Prop\+HandleT}$<$ bool $>$ {\bfseries is\+\_\+active\+\_\+}
\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$class Mesh$>$\newline
class Open\+Mesh\+::\+Smoother\+::\+Smoother\+T$<$ Mesh $>$}

Base class for smoothing algorithms. 

Definition at line 76 of file Smoother\+T.\+hh.



\subsection{Member Enumeration Documentation}
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a867faa77ce2ddee85543459f6653af18}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a867faa77ce2ddee85543459f6653af18}} 
\index{Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}!Component@{Component}}
\index{Component@{Component}!Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}}
\subsubsection{\texorpdfstring{Component}{Component}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
enum \hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT_a867faa77ce2ddee85543459f6653af18}{Open\+Mesh\+::\+Smoother\+::\+Smoother\+T\+::\+Component}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{Tangential@{Tangential}!Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}}\index{Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}!Tangential@{Tangential}}}\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a867faa77ce2ddee85543459f6653af18abe52e6b9d369495ca31057e39e29e465}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a867faa77ce2ddee85543459f6653af18abe52e6b9d369495ca31057e39e29e465}} 
Tangential&Smooth tangential direction. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Normal@{Normal}!Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}}\index{Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}!Normal@{Normal}}}\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a867faa77ce2ddee85543459f6653af18af2527cfb0045e95d97010a5621e9ca5c}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a867faa77ce2ddee85543459f6653af18af2527cfb0045e95d97010a5621e9ca5c}} 
Normal&Smooth normal direction. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{Tangential\+\_\+and\+\_\+\+Normal@{Tangential\+\_\+and\+\_\+\+Normal}!Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}}\index{Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}!Tangential\+\_\+and\+\_\+\+Normal@{Tangential\+\_\+and\+\_\+\+Normal}}}\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a867faa77ce2ddee85543459f6653af18a898a6c92513c4d4ec9fbd4652752c602}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a867faa77ce2ddee85543459f6653af18a898a6c92513c4d4ec9fbd4652752c602}} 
Tangential\+\_\+and\+\_\+\+Normal&Smooth tangential and normal direction. \\
\hline

\end{DoxyEnumFields}


Definition at line 87 of file Smoother\+T.\+hh.



\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_af300a00749e27e052aac01f998532587}\label{classOpenMesh_1_1Smoother_1_1SmootherT_af300a00749e27e052aac01f998532587}} 
\index{Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}!SmootherT@{SmootherT}}
\index{SmootherT@{SmootherT}!Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}}
\subsubsection{\texorpdfstring{Smoother\+T()}{SmootherT()}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
\hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT}{Open\+Mesh\+::\+Smoother\+::\+SmootherT}$<$ \hyperlink{classOpenMesh_1_1TriMesh__ArrayKernelT}{Mesh} $>$\+::\hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT}{SmootherT} (\begin{DoxyParamCaption}\item[{\hyperlink{classOpenMesh_1_1TriMesh__ArrayKernelT}{Mesh} \&}]{\+\_\+mesh }\end{DoxyParamCaption})}



constructor \& destructor 


\begin{DoxyParams}{Parameters}
{\em \+\_\+mesh} & Reference a triangle or poly mesh \\
\hline
\end{DoxyParams}


Definition at line 73 of file Smoother\+T\+\_\+impl.\+hh.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_aac72d74a6daf8c8fb24a0437f022dabb}\label{classOpenMesh_1_1Smoother_1_1SmootherT_aac72d74a6daf8c8fb24a0437f022dabb}} 
\index{Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}!disable\+\_\+local\+\_\+error\+\_\+check@{disable\+\_\+local\+\_\+error\+\_\+check}}
\index{disable\+\_\+local\+\_\+error\+\_\+check@{disable\+\_\+local\+\_\+error\+\_\+check}!Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}}
\subsubsection{\texorpdfstring{disable\+\_\+local\+\_\+error\+\_\+check()}{disable\_local\_error\_check()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT}{Open\+Mesh\+::\+Smoother\+::\+SmootherT}$<$ \hyperlink{classOpenMesh_1_1TriMesh__ArrayKernelT}{Mesh} $>$\+::disable\+\_\+local\+\_\+error\+\_\+check (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Disable error control of the smoother. 

This function disables the error control of the smoother. 

Definition at line 290 of file Smoother\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a8f76bf70d991095b63f4161cc8406b6a}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a8f76bf70d991095b63f4161cc8406b6a}} 
\index{Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}!initialize@{initialize}}
\index{initialize@{initialize}!Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}}
\subsubsection{\texorpdfstring{initialize()}{initialize()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT}{Open\+Mesh\+::\+Smoother\+::\+SmootherT}$<$ \hyperlink{classOpenMesh_1_1TriMesh__ArrayKernelT}{Mesh} $>$\+::initialize (\begin{DoxyParamCaption}\item[{\hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT_a867faa77ce2ddee85543459f6653af18}{Component}}]{\+\_\+comp,  }\item[{Continuity}]{\+\_\+cont }\end{DoxyParamCaption})}

Initialize smoother 
\begin{DoxyParams}{Parameters}
{\em \+\_\+comp} & Determine component to smooth \\
\hline
{\em \+\_\+cont} & Determine Continuity \\
\hline
\end{DoxyParams}


Definition at line 122 of file Smoother\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_aa4afc9ae6b9ce5f3fc1ea7372ce0b42f}\label{classOpenMesh_1_1Smoother_1_1SmootherT_aa4afc9ae6b9ce5f3fc1ea7372ce0b42f}} 
\index{Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}!set\+\_\+absolute\+\_\+local\+\_\+error@{set\+\_\+absolute\+\_\+local\+\_\+error}}
\index{set\+\_\+absolute\+\_\+local\+\_\+error@{set\+\_\+absolute\+\_\+local\+\_\+error}!Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}}
\subsubsection{\texorpdfstring{set\+\_\+absolute\+\_\+local\+\_\+error()}{set\_absolute\_local\_error()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT}{Open\+Mesh\+::\+Smoother\+::\+SmootherT}$<$ \hyperlink{classOpenMesh_1_1TriMesh__ArrayKernelT}{Mesh} $>$\+::set\+\_\+absolute\+\_\+local\+\_\+error (\begin{DoxyParamCaption}\item[{Scalar}]{\+\_\+err }\end{DoxyParamCaption})}



Set local error as an absolute value. 

Set the maximal error tolerance of the smoother to the given value.


\begin{DoxyParams}{Parameters}
{\em \+\_\+err} & Maximal error \\
\hline
\end{DoxyParams}


Definition at line 278 of file Smoother\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_a7f0ce0a6c1d95db31c515299b38d9961}\label{classOpenMesh_1_1Smoother_1_1SmootherT_a7f0ce0a6c1d95db31c515299b38d9961}} 
\index{Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}!set\+\_\+active\+\_\+vertices@{set\+\_\+active\+\_\+vertices}}
\index{set\+\_\+active\+\_\+vertices@{set\+\_\+active\+\_\+vertices}!Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}}
\subsubsection{\texorpdfstring{set\+\_\+active\+\_\+vertices()}{set\_active\_vertices()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT}{Open\+Mesh\+::\+Smoother\+::\+SmootherT}$<$ \hyperlink{classOpenMesh_1_1TriMesh__ArrayKernelT}{Mesh} $>$\+::set\+\_\+active\+\_\+vertices (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Find active vertices. Resets tagged status ! 

This function recomputes the set of active vertices, which will be touched by the smoother. If nothing on the mesh is selected, all vertices which are not locked, feature or boundary will be marked as active and moved by the smoother. If vertices are selected, than only the selected ones, excluding the locked, feature and boundary vertices will be moved.

The function is called first when running the smoother. 

Definition at line 152 of file Smoother\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_acd0b96d45f71d37584cd91e067397e7b}\label{classOpenMesh_1_1Smoother_1_1SmootherT_acd0b96d45f71d37584cd91e067397e7b}} 
\index{Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}!set\+\_\+relative\+\_\+local\+\_\+error@{set\+\_\+relative\+\_\+local\+\_\+error}}
\index{set\+\_\+relative\+\_\+local\+\_\+error@{set\+\_\+relative\+\_\+local\+\_\+error}!Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}}
\subsubsection{\texorpdfstring{set\+\_\+relative\+\_\+local\+\_\+error()}{set\_relative\_local\_error()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT}{Open\+Mesh\+::\+Smoother\+::\+SmootherT}$<$ \hyperlink{classOpenMesh_1_1TriMesh__ArrayKernelT}{Mesh} $>$\+::set\+\_\+relative\+\_\+local\+\_\+error (\begin{DoxyParamCaption}\item[{Scalar}]{\+\_\+err }\end{DoxyParamCaption})}



Set local error relative to bounding box. 

This function sets a maximal error tolerance for the smoother as a fraction of the bounding box of the mesh. First the bounding box diagonal is computed. Then the error is set as the length of the diagonal multiplied with the given factor.


\begin{DoxyParams}{Parameters}
{\em \+\_\+err} & Factor scaling the bounding box diagonal \\
\hline
\end{DoxyParams}


Definition at line 248 of file Smoother\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classOpenMesh_1_1Smoother_1_1SmootherT_affa58655ba9762e346d71f77b656c19d}\label{classOpenMesh_1_1Smoother_1_1SmootherT_affa58655ba9762e346d71f77b656c19d}} 
\index{Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}!skip\+\_\+features@{skip\+\_\+features}}
\index{skip\+\_\+features@{skip\+\_\+features}!Open\+Mesh\+::\+Smoother\+::\+SmootherT@{Open\+Mesh\+::\+Smoother\+::\+SmootherT}}
\subsubsection{\texorpdfstring{skip\+\_\+features()}{skip\_features()}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
void \hyperlink{classOpenMesh_1_1Smoother_1_1SmootherT}{Open\+Mesh\+::\+Smoother\+::\+SmootherT}$<$ \hyperlink{classOpenMesh_1_1TriMesh__ArrayKernelT}{Mesh} $>$\+::skip\+\_\+features (\begin{DoxyParamCaption}\item[{bool}]{\+\_\+state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



enable or disable feature handling 

This function can be used to control if features on the mesh should be preserved. If enabled, the smoother will keep features and does not modify them. Features can be set via \hyperlink{namespaceOpenMesh}{Open\+Mesh} status flags (request status and set primitives as features). Feature flag can be set for vertices edges and faces.


\begin{DoxyParams}{Parameters}
{\em \+\_\+state} & true \+: If features are selected on the mesh, they will be left unmodified~\newline
 false \+: Features will be ignored \\
\hline
\end{DoxyParams}


Definition at line 167 of file Smoother\+T.\+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/\+Smoother/\hyperlink{SmootherT_8hh}{Smoother\+T.\+hh}\item 
Open\+Flipper/libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Tools/\+Smoother/\hyperlink{SmootherT__impl_8hh}{Smoother\+T\+\_\+impl.\+hh}\end{DoxyCompactItemize}
