\hypertarget{a00885}{\section{Open\+Volume\+Mesh\+:\+:Normal\+Attrib$<$ Geom\+Kernel\+T $>$ Class Template Reference}
\label{a00885}\index{Open\+Volume\+Mesh\+::\+Normal\+Attrib$<$ Geom\+Kernel\+T $>$@{Open\+Volume\+Mesh\+::\+Normal\+Attrib$<$ Geom\+Kernel\+T $>$}}
}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00885_a1da418d04bb8ce30ba7c170afab43eb6}{{\bfseries Normal\+Attrib} (Geom\+Kernel\+T \&\+\_\+kernel)}\label{a00885_a1da418d04bb8ce30ba7c170afab43eb6}

\item 
void \hyperlink{a00885_aeb82cd60c514a8f462e36c600cc0919a}{update\+\_\+vertex\+\_\+normals} ()
\begin{DoxyCompactList}\small\item\em A simple heuristic to estimate the vertex normals. \end{DoxyCompactList}\item 
void \hyperlink{a00885_a28176aa0d1c7b3025eff5b4fcf1b303b}{update\+\_\+face\+\_\+normals} ()
\begin{DoxyCompactList}\small\item\em Compute face normals. \end{DoxyCompactList}\item 
\hypertarget{a00885_a37fdff7db412e8b32a16f5d291b22a24}{const Geom\+Kernel\+T\+::\+Point\+T \& {\bfseries operator\mbox{[}$\,$\mbox{]}} (const \hyperlink{a01425}{Vertex\+Handle} \&\+\_\+h) const }\label{a00885_a37fdff7db412e8b32a16f5d291b22a24}

\item 
\hypertarget{a00885_aab6f2d83fe485cabd0081e12295b3475}{const Geom\+Kernel\+T\+::\+Point\+T \& {\bfseries operator\mbox{[}$\,$\mbox{]}} (const \hyperlink{a00556}{Face\+Handle} \&\+\_\+h) const }\label{a00885_aab6f2d83fe485cabd0081e12295b3475}

\item 
\hypertarget{a00885_ab39bea37ca907bb779cd12316a4c04f7}{const Geom\+Kernel\+T\+::\+Point\+T {\bfseries operator\mbox{[}$\,$\mbox{]}} (const \hyperlink{a00675}{Half\+Face\+Handle} \&\+\_\+h) const }\label{a00885_ab39bea37ca907bb779cd12316a4c04f7}

\item 
\hypertarget{a00885_a0acff25d91130c156f9db4b1067eb44a}{Geom\+Kernel\+T\+::\+Point\+T \& {\bfseries operator\mbox{[}$\,$\mbox{]}} (const \hyperlink{a01425}{Vertex\+Handle} \&\+\_\+h)}\label{a00885_a0acff25d91130c156f9db4b1067eb44a}

\item 
\hypertarget{a00885_ae3146d12f937f576fe1b346becc6c749}{Geom\+Kernel\+T\+::\+Point\+T \& {\bfseries operator\mbox{[}$\,$\mbox{]}} (const \hyperlink{a00556}{Face\+Handle} \&\+\_\+h)}\label{a00885_ae3146d12f937f576fe1b346becc6c749}

\item 
\hypertarget{a00885_a9361d9f19f95a8ab30ca4a05e101a596}{Geom\+Kernel\+T\+::\+Point\+T {\bfseries operator\mbox{[}$\,$\mbox{]}} (const \hyperlink{a00675}{Half\+Face\+Handle} \&\+\_\+h)}\label{a00885_a9361d9f19f95a8ab30ca4a05e101a596}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00885_aac55aab676976a842a1965fd1f0a3e5a}{void {\bfseries compute\+\_\+vertex\+\_\+normal} (const \hyperlink{a01425}{Vertex\+Handle} \&\+\_\+vh)}\label{a00885_aac55aab676976a842a1965fd1f0a3e5a}

\item 
\hypertarget{a00885_a7c908dc6ec752427bdf28b35667f906e}{void {\bfseries compute\+\_\+face\+\_\+normal} (const \hyperlink{a00556}{Face\+Handle} \&\+\_\+fh)}\label{a00885_a7c908dc6ec752427bdf28b35667f906e}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00885_a008e42bf5663bc0219f1a1e09b3c06b1}{Geom\+Kernel\+T \& {\bfseries kernel\+\_\+}}\label{a00885_a008e42bf5663bc0219f1a1e09b3c06b1}

\item 
\hypertarget{a00885_a5c0f686f1e16cdd3d4039526159589db}{\hyperlink{a01432}{Vertex\+Property\+T}$<$ typename \\*
Geom\+Kernel\+T\+::\+Point\+T $>$ {\bfseries v\+\_\+normals\+\_\+}}\label{a00885_a5c0f686f1e16cdd3d4039526159589db}

\item 
\hypertarget{a00885_a397a3c732c3a123a5a057638535765d7}{\hyperlink{a00559}{Face\+Property\+T}$<$ typename \\*
Geom\+Kernel\+T\+::\+Point\+T $>$ {\bfseries f\+\_\+normals\+\_\+}}\label{a00885_a397a3c732c3a123a5a057638535765d7}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$class Geom\+Kernel\+T$>$class Open\+Volume\+Mesh\+::\+Normal\+Attrib$<$ Geom\+Kernel\+T $>$}



Definition at line 55 of file Normal\+Attrib.\+hh.



\subsection{Member Function Documentation}
\hypertarget{a00885_a28176aa0d1c7b3025eff5b4fcf1b303b}{\index{Open\+Volume\+Mesh\+::\+Normal\+Attrib@{Open\+Volume\+Mesh\+::\+Normal\+Attrib}!update\+\_\+face\+\_\+normals@{update\+\_\+face\+\_\+normals}}
\index{update\+\_\+face\+\_\+normals@{update\+\_\+face\+\_\+normals}!Open\+Volume\+Mesh\+::\+Normal\+Attrib@{Open\+Volume\+Mesh\+::\+Normal\+Attrib}}
\subsubsection[{update\+\_\+face\+\_\+normals}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Geom\+Kernel\+T $>$ void {\bf Open\+Volume\+Mesh\+::\+Normal\+Attrib}$<$ Geom\+Kernel\+T $>$\+::update\+\_\+face\+\_\+normals (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a00885_a28176aa0d1c7b3025eff5b4fcf1b303b}


Compute face normals. 

This is accomplished by taking two adjacent half-\/edges that are incident to the faces and compute their cross product. Note that this method looses accuracy in case the faces in question is not planar. 

Definition at line 84 of file Normal\+Attrib\+T.\+cc.

\hypertarget{a00885_aeb82cd60c514a8f462e36c600cc0919a}{\index{Open\+Volume\+Mesh\+::\+Normal\+Attrib@{Open\+Volume\+Mesh\+::\+Normal\+Attrib}!update\+\_\+vertex\+\_\+normals@{update\+\_\+vertex\+\_\+normals}}
\index{update\+\_\+vertex\+\_\+normals@{update\+\_\+vertex\+\_\+normals}!Open\+Volume\+Mesh\+::\+Normal\+Attrib@{Open\+Volume\+Mesh\+::\+Normal\+Attrib}}
\subsubsection[{update\+\_\+vertex\+\_\+normals}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Geom\+Kernel\+T $>$ void {\bf Open\+Volume\+Mesh\+::\+Normal\+Attrib}$<$ Geom\+Kernel\+T $>$\+::update\+\_\+vertex\+\_\+normals (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a00885_aeb82cd60c514a8f462e36c600cc0919a}


A simple heuristic to estimate the vertex normals. 

This function takes the vertices' surrounding outside face normals into account and computes an average out of it. 

Definition at line 68 of file Normal\+Attrib\+T.\+cc.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
libs\+\_\+required/\+Open\+Volume\+Mesh/src/\+Open\+Volume\+Mesh/\+Attribs/Normal\+Attrib.\+hh\item 
libs\+\_\+required/\+Open\+Volume\+Mesh/src/\+Open\+Volume\+Mesh/\+Attribs/Normal\+Attrib\+T.\+cc\end{DoxyCompactItemize}
