\hypertarget{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT}{}\section{Open\+Mesh\+:\+:Decimater\+:\+:Mod\+Normal\+FlippingT$<$ MeshT $>$ Class Template Reference}
\label{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT}\index{Open\+Mesh\+::\+Decimater\+::\+Mod\+Normal\+Flipping\+T$<$ Mesh\+T $>$@{Open\+Mesh\+::\+Decimater\+::\+Mod\+Normal\+Flipping\+T$<$ Mesh\+T $>$}}


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

Inheritance diagram for Open\+Mesh\+:\+:Decimater\+:\+:Mod\+Normal\+FlippingT$<$ MeshT $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_acb87a6ce3a49b3970c7222f89530bf72}\label{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_acb87a6ce3a49b3970c7222f89530bf72}} 
{\bfseries D\+E\+C\+I\+M\+A\+T\+I\+N\+G\+\_\+\+M\+O\+D\+U\+LE} (\hyperlink{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT}{Mod\+Normal\+FlippingT}, MeshT, Normal\+Flipping)
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_a07ac6abac9f29dfcfbfe5a31cc6de624}\label{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_a07ac6abac9f29dfcfbfe5a31cc6de624}} 
\hyperlink{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_a07ac6abac9f29dfcfbfe5a31cc6de624}{Mod\+Normal\+FlippingT} (MeshT \&\+\_\+mesh)
\begin{DoxyCompactList}\small\item\em Constructor. \end{DoxyCompactList}\item 
float \hyperlink{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_ab5ce17cb288557dcc39588d7a8b0c9b8}{collapse\+\_\+priority} (const \hyperlink{structOpenMesh_1_1Decimater_1_1CollapseInfoT}{Collapse\+Info} \&\+\_\+ci) override
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_aa6fa1dd584e10ab26faca53cc9305357}\label{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_aa6fa1dd584e10ab26faca53cc9305357}} 
void \hyperlink{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_aa6fa1dd584e10ab26faca53cc9305357}{set\+\_\+error\+\_\+tolerance\+\_\+factor} (double \+\_\+factor) override
\begin{DoxyCompactList}\small\item\em set the percentage of maximum normal deviation \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_a00e8437aab0e13703305fcf05f19228f}\label{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_a00e8437aab0e13703305fcf05f19228f}} 
double \hyperlink{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_a00e8437aab0e13703305fcf05f19228f}{max\+\_\+normal\+\_\+deviation} () const
\begin{DoxyCompactList}\small\item\em get normal deviation \end{DoxyCompactList}\item 
void \hyperlink{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_acad9f12c5b63bed362733adce479bb05}{set\+\_\+max\+\_\+normal\+\_\+deviation} (double \+\_\+d)
\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_ad80d21c9db4a0c32ef88788030340cd7}\label{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_ad80d21c9db4a0c32ef88788030340cd7}} 
void {\bfseries set\+\_\+binary} (bool \+\_\+b)
\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_a630f218099788079e040f868f87edf9c}\label{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_a630f218099788079e040f868f87edf9c}} 
double {\bfseries max\+\_\+deviation\+\_\+}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_ac5a81ba7db53626584b7de3422311acf}\label{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_ac5a81ba7db53626584b7de3422311acf}} 
double {\bfseries min\+\_\+cos\+\_\+}
\end{DoxyCompactItemize}
\subsection*{Additional Inherited Members}


\subsection{Detailed Description}
\subsubsection*{template$<$typename MeshT$>$\newline
class Open\+Mesh\+::\+Decimater\+::\+Mod\+Normal\+Flipping\+T$<$ Mesh\+T $>$}

Decimating module to avoid flipping of faces.

This module can be used only as a binary module. The criterion of allowing/disallowing the collapse is the angular deviation between the face normal of the original faces and normals of the faces after the collapse. The collapse will pass the test, if the deviation is below a given threshold. 

Definition at line 80 of file Mod\+Normal\+Flipping\+T.\+hh.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_ab5ce17cb288557dcc39588d7a8b0c9b8}\label{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_ab5ce17cb288557dcc39588d7a8b0c9b8}} 
\index{Open\+Mesh\+::\+Decimater\+::\+Mod\+Normal\+FlippingT@{Open\+Mesh\+::\+Decimater\+::\+Mod\+Normal\+FlippingT}!collapse\+\_\+priority@{collapse\+\_\+priority}}
\index{collapse\+\_\+priority@{collapse\+\_\+priority}!Open\+Mesh\+::\+Decimater\+::\+Mod\+Normal\+FlippingT@{Open\+Mesh\+::\+Decimater\+::\+Mod\+Normal\+FlippingT}}
\subsubsection{\texorpdfstring{collapse\+\_\+priority()}{collapse\_priority()}}
{\footnotesize\ttfamily template$<$typename MeshT$>$ \\
float \hyperlink{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT}{Open\+Mesh\+::\+Decimater\+::\+Mod\+Normal\+FlippingT}$<$ MeshT $>$\+::collapse\+\_\+priority (\begin{DoxyParamCaption}\item[{const \hyperlink{structOpenMesh_1_1Decimater_1_1CollapseInfoT}{Collapse\+Info} \&}]{\+\_\+ci }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}}

Compute collapse priority due to angular deviation of face normals before and after a collapse.


\begin{DoxyEnumerate}
\item Compute for each adjacent face of {\ttfamily \+\_\+ci.\+v0} the face normal if the collpase would be executed.
\item Prevent the collapse, if the cosine of the angle between the original and the new normal is below a given threshold.
\end{DoxyEnumerate}


\begin{DoxyParams}{Parameters}
{\em \+\_\+ci} & The collapse description \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
L\+E\+G\+A\+L\+\_\+\+C\+O\+L\+L\+A\+P\+SE or I\+L\+L\+E\+G\+A\+L\+\_\+\+C\+O\+L\+L\+A\+P\+SE
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_acad9f12c5b63bed362733adce479bb05}{set\+\_\+max\+\_\+normal\+\_\+deviation()} 
\end{DoxySeeAlso}


Reimplemented from \hyperlink{classOpenMesh_1_1Decimater_1_1ModBaseT_acb81c6b9a752741fce2366ca605cd14c}{Open\+Mesh\+::\+Decimater\+::\+Mod\+Base\+T$<$ Mesh\+T $>$}.



Definition at line 125 of file Mod\+Normal\+Flipping\+T.\+hh.

\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_acad9f12c5b63bed362733adce479bb05}\label{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT_acad9f12c5b63bed362733adce479bb05}} 
\index{Open\+Mesh\+::\+Decimater\+::\+Mod\+Normal\+FlippingT@{Open\+Mesh\+::\+Decimater\+::\+Mod\+Normal\+FlippingT}!set\+\_\+max\+\_\+normal\+\_\+deviation@{set\+\_\+max\+\_\+normal\+\_\+deviation}}
\index{set\+\_\+max\+\_\+normal\+\_\+deviation@{set\+\_\+max\+\_\+normal\+\_\+deviation}!Open\+Mesh\+::\+Decimater\+::\+Mod\+Normal\+FlippingT@{Open\+Mesh\+::\+Decimater\+::\+Mod\+Normal\+FlippingT}}
\subsubsection{\texorpdfstring{set\+\_\+max\+\_\+normal\+\_\+deviation()}{set\_max\_normal\_deviation()}}
{\footnotesize\ttfamily template$<$typename MeshT$>$ \\
void \hyperlink{classOpenMesh_1_1Decimater_1_1ModNormalFlippingT}{Open\+Mesh\+::\+Decimater\+::\+Mod\+Normal\+FlippingT}$<$ MeshT $>$\+::set\+\_\+max\+\_\+normal\+\_\+deviation (\begin{DoxyParamCaption}\item[{double}]{\+\_\+d }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Set normal deviation

Set the maximum angular deviation of the orignal normal and the new normal in degrees. 

Definition at line 179 of file Mod\+Normal\+Flipping\+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/\+Decimater/\hyperlink{ModNormalFlippingT_8hh}{Mod\+Normal\+Flipping\+T.\+hh}\end{DoxyCompactItemize}
