\hypertarget{a00994}{\section{Open\+Mesh\+:\+:Poly\+Mesh\+T$<$ Kernel $>$ Class Template Reference}
\label{a00994}\index{Open\+Mesh\+::\+Poly\+Mesh\+T$<$ Kernel $>$@{Open\+Mesh\+::\+Poly\+Mesh\+T$<$ Kernel $>$}}
}


{\ttfamily \#include $<$Open\+Mesh/\+Mesh/\+Poly\+Mesh\+T.\+hh$>$}

Inheritance diagram for Open\+Mesh\+:\+:Poly\+Mesh\+T$<$ Kernel $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=1.485411cm]{a00994}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{a00975}{Point\+Is3\+D\+Tag}
\item 
struct \hyperlink{a00976}{Point\+Is\+Not3\+D\+Tag}
\end{DoxyCompactItemize}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00994_aee8e212a032787407e4a543031840063}{typedef \hyperlink{a00994}{Poly\+Mesh\+T}$<$ Kernel $>$ \hyperlink{a00994_aee8e212a032787407e4a543031840063}{This}}\label{a00994_aee8e212a032787407e4a543031840063}

\begin{DoxyCompactList}\small\item\em Self type. Used to specify iterators/circulators. \end{DoxyCompactList}\item 
\hypertarget{a00994_a0fc18e13d70825938274e3faf7b55e01}{typedef Kernel\+::\+Vertex\+Handle \hyperlink{a00994_a0fc18e13d70825938274e3faf7b55e01}{Vertex\+Handle}}\label{a00994_a0fc18e13d70825938274e3faf7b55e01}

\begin{DoxyCompactList}\small\item\em Handle for referencing the corresponding item. \end{DoxyCompactList}\item 
\hypertarget{a00994_ac364b18ba6ed17e4e6a6551787b2e2a3}{typedef Kernel\+::\+Halfedge\+Handle {\bfseries Halfedge\+Handle}}\label{a00994_ac364b18ba6ed17e4e6a6551787b2e2a3}

\item 
\hypertarget{a00994_a1e3309b66b4cb3bf22b6229f20375ef2}{typedef Kernel\+::\+Edge\+Handle {\bfseries Edge\+Handle}}\label{a00994_a1e3309b66b4cb3bf22b6229f20375ef2}

\item 
\hypertarget{a00994_ab4c0e43573d85661542b22cb4f4a1d11}{typedef Kernel\+::\+Face\+Handle {\bfseries Face\+Handle}}\label{a00994_ab4c0e43573d85661542b22cb4f4a1d11}

\item 
\hypertarget{a00994_afb18d53e36e53e024c8506cd3c961096}{typedef Kernel\+::\+Vertex\+Iter {\bfseries Vertex\+Iter}}\label{a00994_afb18d53e36e53e024c8506cd3c961096}

\item 
\hypertarget{a00994_ae40d2dfe0d226e49d869481bbd40a911}{typedef Kernel\+::\+Halfedge\+Iter {\bfseries Halfedge\+Iter}}\label{a00994_ae40d2dfe0d226e49d869481bbd40a911}

\item 
\hypertarget{a00994_ac5250dba0f527b19bfa665a288b5d63d}{typedef Kernel\+::\+Edge\+Iter {\bfseries Edge\+Iter}}\label{a00994_ac5250dba0f527b19bfa665a288b5d63d}

\item 
\hypertarget{a00994_a34402ff0bd674fbad2685df22eecde64}{typedef Kernel\+::\+Face\+Iter {\bfseries Face\+Iter}}\label{a00994_a34402ff0bd674fbad2685df22eecde64}

\item 
\hypertarget{a00994_acbad7fb3cfb4bad77153b9a8530a402f}{typedef Kernel\+::\+Const\+Vertex\+Iter {\bfseries Const\+Vertex\+Iter}}\label{a00994_acbad7fb3cfb4bad77153b9a8530a402f}

\item 
\hypertarget{a00994_a85c57baa38e7e3d07bd7f3c7f194b354}{typedef Kernel\+::\+Const\+Halfedge\+Iter {\bfseries Const\+Halfedge\+Iter}}\label{a00994_a85c57baa38e7e3d07bd7f3c7f194b354}

\item 
\hypertarget{a00994_aca72b40b26d4c76dfaec5e4191bdaa31}{typedef Kernel\+::\+Const\+Edge\+Iter {\bfseries Const\+Edge\+Iter}}\label{a00994_aca72b40b26d4c76dfaec5e4191bdaa31}

\item 
\hypertarget{a00994_a0a371650bb71152018ea1f3f570b465b}{typedef Kernel\+::\+Const\+Face\+Iter {\bfseries Const\+Face\+Iter}}\label{a00994_a0a371650bb71152018ea1f3f570b465b}

\end{DoxyCompactItemize}
\begin{Indent}{\bf Mesh Items}\par
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00994_a15372f27edf521d8e9028e2abccae342}{typedef Kernel\+::\+Scalar \hyperlink{a00994_a15372f27edf521d8e9028e2abccae342}{Scalar}}\label{a00994_a15372f27edf521d8e9028e2abccae342}

\begin{DoxyCompactList}\small\item\em Scalar type. \end{DoxyCompactList}\item 
\hypertarget{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}{typedef Kernel\+::\+Point \hyperlink{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}{Point}}\label{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}

\begin{DoxyCompactList}\small\item\em Coordinate type. \end{DoxyCompactList}\item 
\hypertarget{a00994_a3570fd132d1ac589b380485cf59c9e0b}{typedef Kernel\+::\+Normal \hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Normal}}\label{a00994_a3570fd132d1ac589b380485cf59c9e0b}

\begin{DoxyCompactList}\small\item\em Normal type. \end{DoxyCompactList}\item 
\hypertarget{a00994_af0d8129bf1a819c468c6edcb13b5203b}{typedef Kernel\+::\+Color \hyperlink{a00994_af0d8129bf1a819c468c6edcb13b5203b}{Color}}\label{a00994_af0d8129bf1a819c468c6edcb13b5203b}

\begin{DoxyCompactList}\small\item\em Color type. \end{DoxyCompactList}\item 
\hypertarget{a00994_af6526fbc3e7f3a1e98a5543b9563b021}{typedef Kernel\+::\+Tex\+Coord1\+D \hyperlink{a00994_af6526fbc3e7f3a1e98a5543b9563b021}{Tex\+Coord1\+D}}\label{a00994_af6526fbc3e7f3a1e98a5543b9563b021}

\begin{DoxyCompactList}\small\item\em Tex\+Coord1\+D type. \end{DoxyCompactList}\item 
\hypertarget{a00994_a4ae59536e97b43444c4f1622c645ebaf}{typedef Kernel\+::\+Tex\+Coord2\+D \hyperlink{a00994_a4ae59536e97b43444c4f1622c645ebaf}{Tex\+Coord2\+D}}\label{a00994_a4ae59536e97b43444c4f1622c645ebaf}

\begin{DoxyCompactList}\small\item\em Tex\+Coord2\+D type. \end{DoxyCompactList}\item 
\hypertarget{a00994_a5ec24476d2513efe71ddd1255a2ca444}{typedef Kernel\+::\+Tex\+Coord3\+D \hyperlink{a00994_a5ec24476d2513efe71ddd1255a2ca444}{Tex\+Coord3\+D}}\label{a00994_a5ec24476d2513efe71ddd1255a2ca444}

\begin{DoxyCompactList}\small\item\em Tex\+Coord3\+D type. \end{DoxyCompactList}\item 
\hypertarget{a00994_a03e6fd1a2fc91d4144374fd28dfbecee}{typedef Kernel\+::\+Vertex \hyperlink{a00994_a03e6fd1a2fc91d4144374fd28dfbecee}{Vertex}}\label{a00994_a03e6fd1a2fc91d4144374fd28dfbecee}

\begin{DoxyCompactList}\small\item\em Vertex type. \end{DoxyCompactList}\item 
\hypertarget{a00994_a249b0c195a81eeab341f7f73089d157e}{typedef Kernel\+::\+Halfedge \hyperlink{a00994_a249b0c195a81eeab341f7f73089d157e}{Halfedge}}\label{a00994_a249b0c195a81eeab341f7f73089d157e}

\begin{DoxyCompactList}\small\item\em Halfedge type. \end{DoxyCompactList}\item 
\hypertarget{a00994_ab2ccdc42b7b25cf35915d3639fc461b2}{typedef Kernel\+::\+Edge \hyperlink{a00994_ab2ccdc42b7b25cf35915d3639fc461b2}{Edge}}\label{a00994_ab2ccdc42b7b25cf35915d3639fc461b2}

\begin{DoxyCompactList}\small\item\em Edge type. \end{DoxyCompactList}\item 
\hypertarget{a00994_a71e1e8eaabeb24eca04237931b4bea26}{typedef Kernel\+::\+Face \hyperlink{a00994_a71e1e8eaabeb24eca04237931b4bea26}{Face}}\label{a00994_a71e1e8eaabeb24eca04237931b4bea26}

\begin{DoxyCompactList}\small\item\em Face type. \end{DoxyCompactList}\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}{\bf Mesh Circulators}\par
{\em Refer to Open\+Mesh\+::\+Mesh\+::\+Iterators or \hyperlink{mesh_iterators}{Mesh Iterators and Circulators} for documentation. }\begin{DoxyCompactItemize}
\item 
\hypertarget{a00994_adc7d422e2ce13141e8291f7d29f7ecef}{typedef Kernel\+::\+Vertex\+Vertex\+Iter \hyperlink{a00994_adc7d422e2ce13141e8291f7d29f7ecef}{Vertex\+Vertex\+Iter}}\label{a00994_adc7d422e2ce13141e8291f7d29f7ecef}

\begin{DoxyCompactList}\small\item\em Circulator. \end{DoxyCompactList}\item 
\hypertarget{a00994_a6549eda743520c8a7aa3dfe6a37b2468}{typedef Kernel\+::\+Vertex\+O\+Halfedge\+Iter \hyperlink{a00994_a6549eda743520c8a7aa3dfe6a37b2468}{Vertex\+O\+Halfedge\+Iter}}\label{a00994_a6549eda743520c8a7aa3dfe6a37b2468}

\begin{DoxyCompactList}\small\item\em Circulator. \end{DoxyCompactList}\item 
\hypertarget{a00994_a437621f3901a93d0ebf8cdceac8e2939}{typedef Kernel\+::\+Vertex\+I\+Halfedge\+Iter \hyperlink{a00994_a437621f3901a93d0ebf8cdceac8e2939}{Vertex\+I\+Halfedge\+Iter}}\label{a00994_a437621f3901a93d0ebf8cdceac8e2939}

\begin{DoxyCompactList}\small\item\em Circulator. \end{DoxyCompactList}\item 
\hypertarget{a00994_a68dd0d2773f837cbfb525d7208dedde0}{typedef Kernel\+::\+Vertex\+Edge\+Iter \hyperlink{a00994_a68dd0d2773f837cbfb525d7208dedde0}{Vertex\+Edge\+Iter}}\label{a00994_a68dd0d2773f837cbfb525d7208dedde0}

\begin{DoxyCompactList}\small\item\em Circulator. \end{DoxyCompactList}\item 
\hypertarget{a00994_a1ebe8b94ca30db3af44c809ab3ee7247}{typedef Kernel\+::\+Vertex\+Face\+Iter \hyperlink{a00994_a1ebe8b94ca30db3af44c809ab3ee7247}{Vertex\+Face\+Iter}}\label{a00994_a1ebe8b94ca30db3af44c809ab3ee7247}

\begin{DoxyCompactList}\small\item\em Circulator. \end{DoxyCompactList}\item 
\hypertarget{a00994_a3c65ec045ac0126b3ea7264cee26aa1b}{typedef Kernel\+::\+Face\+Vertex\+Iter \hyperlink{a00994_a3c65ec045ac0126b3ea7264cee26aa1b}{Face\+Vertex\+Iter}}\label{a00994_a3c65ec045ac0126b3ea7264cee26aa1b}

\begin{DoxyCompactList}\small\item\em Circulator. \end{DoxyCompactList}\item 
\hypertarget{a00994_aeca99c6cd952038e80b37c848035af73}{typedef Kernel\+::\+Face\+Halfedge\+Iter \hyperlink{a00994_aeca99c6cd952038e80b37c848035af73}{Face\+Halfedge\+Iter}}\label{a00994_aeca99c6cd952038e80b37c848035af73}

\begin{DoxyCompactList}\small\item\em Circulator. \end{DoxyCompactList}\item 
\hypertarget{a00994_a04a30000943150f98db373a3317760af}{typedef Kernel\+::\+Face\+Edge\+Iter \hyperlink{a00994_a04a30000943150f98db373a3317760af}{Face\+Edge\+Iter}}\label{a00994_a04a30000943150f98db373a3317760af}

\begin{DoxyCompactList}\small\item\em Circulator. \end{DoxyCompactList}\item 
\hypertarget{a00994_a98618ca3fd3eec347bb5b02410a5e1e6}{typedef Kernel\+::\+Face\+Face\+Iter \hyperlink{a00994_a98618ca3fd3eec347bb5b02410a5e1e6}{Face\+Face\+Iter}}\label{a00994_a98618ca3fd3eec347bb5b02410a5e1e6}

\begin{DoxyCompactList}\small\item\em Circulator. \end{DoxyCompactList}\item 
\hypertarget{a00994_a17a73f876343905c8b37b947e9152ac8}{typedef \\*
Kernel\+::\+Const\+Vertex\+Vertex\+Iter \hyperlink{a00994_a17a73f876343905c8b37b947e9152ac8}{Const\+Vertex\+Vertex\+Iter}}\label{a00994_a17a73f876343905c8b37b947e9152ac8}

\begin{DoxyCompactList}\small\item\em Circulator. \end{DoxyCompactList}\item 
\hypertarget{a00994_acf4b52db4b0198a91a02c06003623bfb}{typedef \\*
Kernel\+::\+Const\+Vertex\+O\+Halfedge\+Iter \hyperlink{a00994_acf4b52db4b0198a91a02c06003623bfb}{Const\+Vertex\+O\+Halfedge\+Iter}}\label{a00994_acf4b52db4b0198a91a02c06003623bfb}

\begin{DoxyCompactList}\small\item\em Circulator. \end{DoxyCompactList}\item 
\hypertarget{a00994_a7221db878118b37611454a13f1754a08}{typedef \\*
Kernel\+::\+Const\+Vertex\+I\+Halfedge\+Iter \hyperlink{a00994_a7221db878118b37611454a13f1754a08}{Const\+Vertex\+I\+Halfedge\+Iter}}\label{a00994_a7221db878118b37611454a13f1754a08}

\begin{DoxyCompactList}\small\item\em Circulator. \end{DoxyCompactList}\item 
\hypertarget{a00994_a9ccd0ce4fff127b13eb80fafefda0d0a}{typedef Kernel\+::\+Const\+Vertex\+Edge\+Iter \hyperlink{a00994_a9ccd0ce4fff127b13eb80fafefda0d0a}{Const\+Vertex\+Edge\+Iter}}\label{a00994_a9ccd0ce4fff127b13eb80fafefda0d0a}

\begin{DoxyCompactList}\small\item\em Circulator. \end{DoxyCompactList}\item 
\hypertarget{a00994_a61167f0a130e599b909cc8629a6dca2a}{typedef Kernel\+::\+Const\+Vertex\+Face\+Iter \hyperlink{a00994_a61167f0a130e599b909cc8629a6dca2a}{Const\+Vertex\+Face\+Iter}}\label{a00994_a61167f0a130e599b909cc8629a6dca2a}

\begin{DoxyCompactList}\small\item\em Circulator. \end{DoxyCompactList}\item 
\hypertarget{a00994_a23b20f8208bae0aa1b344cac48c1f635}{typedef Kernel\+::\+Const\+Face\+Vertex\+Iter \hyperlink{a00994_a23b20f8208bae0aa1b344cac48c1f635}{Const\+Face\+Vertex\+Iter}}\label{a00994_a23b20f8208bae0aa1b344cac48c1f635}

\begin{DoxyCompactList}\small\item\em Circulator. \end{DoxyCompactList}\item 
\hypertarget{a00994_a1b0729c26d7cf8f123c344a3b81d353c}{typedef \\*
Kernel\+::\+Const\+Face\+Halfedge\+Iter \hyperlink{a00994_a1b0729c26d7cf8f123c344a3b81d353c}{Const\+Face\+Halfedge\+Iter}}\label{a00994_a1b0729c26d7cf8f123c344a3b81d353c}

\begin{DoxyCompactList}\small\item\em Circulator. \end{DoxyCompactList}\item 
\hypertarget{a00994_a5e15960d27e6d40646260109f5910b5b}{typedef Kernel\+::\+Const\+Face\+Edge\+Iter \hyperlink{a00994_a5e15960d27e6d40646260109f5910b5b}{Const\+Face\+Edge\+Iter}}\label{a00994_a5e15960d27e6d40646260109f5910b5b}

\begin{DoxyCompactList}\small\item\em Circulator. \end{DoxyCompactList}\item 
\hypertarget{a00994_af081cbe692a0563c1ce08735f4b3491e}{typedef Kernel\+::\+Const\+Face\+Face\+Iter \hyperlink{a00994_af081cbe692a0563c1ce08735f4b3491e}{Const\+Face\+Face\+Iter}}\label{a00994_af081cbe692a0563c1ce08735f4b3491e}

\begin{DoxyCompactList}\small\item\em Circulator. \end{DoxyCompactList}\end{DoxyCompactItemize}
\end{Indent}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{a00994_a0fc18e13d70825938274e3faf7b55e01}{Vertex\+Handle} \hyperlink{a00994_aee07d968ddfbb6376a7f7712ae1a73c4}{new\+\_\+vertex} ()
\begin{DoxyCompactList}\small\item\em Adds a new default-\/initialized vertex. \end{DoxyCompactList}\item 
\hyperlink{a00994_a0fc18e13d70825938274e3faf7b55e01}{Vertex\+Handle} \hyperlink{a00994_a77d36a90d4c207845cf1478aec56c283}{new\+\_\+vertex} (const \hyperlink{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}{Point} \&\+\_\+p)
\begin{DoxyCompactList}\small\item\em Adds a new vertex initialized to a custom position. \end{DoxyCompactList}\item 
\hyperlink{a00994_a0fc18e13d70825938274e3faf7b55e01}{Vertex\+Handle} \hyperlink{a00994_a8787adda36a734b33fa578f9c50bb2f3}{new\+\_\+vertex\+\_\+dirty} (const \hyperlink{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}{Point} \&\+\_\+p)
\item 
\hypertarget{a00994_ac0577d7120881533e6e3af635382ba82}{\hyperlink{a00994_a0fc18e13d70825938274e3faf7b55e01}{Vertex\+Handle} \hyperlink{a00994_ac0577d7120881533e6e3af635382ba82}{add\+\_\+vertex} (const \hyperlink{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}{Point} \&\+\_\+p)}\label{a00994_ac0577d7120881533e6e3af635382ba82}

\begin{DoxyCompactList}\small\item\em Alias for \hyperlink{a00994_a77d36a90d4c207845cf1478aec56c283}{new\+\_\+vertex(const Point\&)}. \end{DoxyCompactList}\item 
\hypertarget{a00994_ad2b584d9b8cf0f168be8d536fc593ec0}{\hyperlink{a00994_a0fc18e13d70825938274e3faf7b55e01}{Vertex\+Handle} \hyperlink{a00994_ad2b584d9b8cf0f168be8d536fc593ec0}{add\+\_\+vertex\+\_\+dirty} (const \hyperlink{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}{Point} \&\+\_\+p)}\label{a00994_ad2b584d9b8cf0f168be8d536fc593ec0}

\begin{DoxyCompactList}\small\item\em Alias for \hyperlink{a00994_a8787adda36a734b33fa578f9c50bb2f3}{new\+\_\+vertex\+\_\+dirty()}. \end{DoxyCompactList}\item 
void \hyperlink{a00994_a090d5252328e5fbd7f10e2cc3576d2eb}{calc\+\_\+edge\+\_\+vector} (Edge\+Handle \+\_\+eh, \hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Normal} \&\+\_\+edge\+\_\+vec) const 
\item 
\hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Normal} \hyperlink{a00994_a2b45bfb6c89627b22a1ae33be996ec9f}{calc\+\_\+edge\+\_\+vector} (Edge\+Handle \+\_\+eh) const 
\item 
void \hyperlink{a00994_a3ce28ba8fef4acb4e97c380be47ef240}{calc\+\_\+edge\+\_\+vector} (Halfedge\+Handle \+\_\+heh, \hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Normal} \&\+\_\+edge\+\_\+vec) const 
\item 
\hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Normal} \hyperlink{a00994_af183231a6d5eb220370c017e40f3adb1}{calc\+\_\+edge\+\_\+vector} (Halfedge\+Handle \+\_\+heh) const 
\item 
\hypertarget{a00994_a822dab13832e6151dc6c83e88d82625d}{\hyperlink{a00994_a15372f27edf521d8e9028e2abccae342}{Scalar} {\bfseries calc\+\_\+edge\+\_\+length} (Edge\+Handle \+\_\+eh) const }\label{a00994_a822dab13832e6151dc6c83e88d82625d}

\item 
\hyperlink{a00994_a15372f27edf521d8e9028e2abccae342}{Scalar} \hyperlink{a00994_aece958e03921a6cf39045b8b1013e448}{calc\+\_\+edge\+\_\+length} (Halfedge\+Handle \+\_\+heh) const 
\item 
\hypertarget{a00994_a595150124f47261e85bed7daef94af9f}{\hyperlink{a00994_a15372f27edf521d8e9028e2abccae342}{Scalar} {\bfseries calc\+\_\+edge\+\_\+sqr\+\_\+length} (Edge\+Handle \+\_\+eh) const }\label{a00994_a595150124f47261e85bed7daef94af9f}

\item 
\hypertarget{a00994_a0da8b1b2b463dabd292311c9b834f6a9}{\hyperlink{a00994_a15372f27edf521d8e9028e2abccae342}{Scalar} {\bfseries calc\+\_\+edge\+\_\+sqr\+\_\+length} (Halfedge\+Handle \+\_\+heh) const }\label{a00994_a0da8b1b2b463dabd292311c9b834f6a9}

\item 
void \hyperlink{a00994_a1fb01f73d2eec4de5ccaf47fe22b01b1}{calc\+\_\+sector\+\_\+vectors} (Halfedge\+Handle \+\_\+in\+\_\+heh, \hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Normal} \&\+\_\+vec0, \hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Normal} \&\+\_\+vec1) const 
\item 
\hyperlink{a00994_a15372f27edf521d8e9028e2abccae342}{Scalar} \hyperlink{a00994_a458cb0e3630ed058b40df038ee65a611}{calc\+\_\+sector\+\_\+angle} (Halfedge\+Handle \+\_\+in\+\_\+heh) const 
\item 
void \hyperlink{a00994_a2996b1f2d1a63073b837e5ad438a1832}{calc\+\_\+sector\+\_\+normal} (Halfedge\+Handle \+\_\+in\+\_\+heh, \hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Normal} \&\+\_\+sector\+\_\+normal) const 
\item 
\hyperlink{a00994_a15372f27edf521d8e9028e2abccae342}{Scalar} \hyperlink{a00994_ab72758b5395b2b489f12f82d242531ce}{calc\+\_\+sector\+\_\+area} (Halfedge\+Handle \+\_\+in\+\_\+heh) const 
\item 
\hyperlink{a00994_a15372f27edf521d8e9028e2abccae342}{Scalar} \hyperlink{a00994_a49dd0f24137854f97530779c58f1a964}{calc\+\_\+dihedral\+\_\+angle\+\_\+fast} (Halfedge\+Handle \+\_\+heh) const 
\item 
\hyperlink{a00994_a15372f27edf521d8e9028e2abccae342}{Scalar} \hyperlink{a00994_ab02b7b6311a48b3b1dca15ca33bf55af}{calc\+\_\+dihedral\+\_\+angle\+\_\+fast} (Edge\+Handle \+\_\+eh) const 
\item 
\hypertarget{a00994_a410f38155ec12c4409579f8346b4009c}{\hyperlink{a00994_a15372f27edf521d8e9028e2abccae342}{Scalar} {\bfseries calc\+\_\+dihedral\+\_\+angle} (Halfedge\+Handle \+\_\+heh) const }\label{a00994_a410f38155ec12c4409579f8346b4009c}

\item 
\hypertarget{a00994_a0c8076b4547614001d7f49960f8dd1ed}{\hyperlink{a00994_a15372f27edf521d8e9028e2abccae342}{Scalar} {\bfseries calc\+\_\+dihedral\+\_\+angle} (Edge\+Handle \+\_\+eh) const }\label{a00994_a0c8076b4547614001d7f49960f8dd1ed}

\item 
unsigned int \hyperlink{a00994_a5a52366a97b3c87ab3473c476f221e22}{find\+\_\+feature\+\_\+edges} (\hyperlink{a00994_a15372f27edf521d8e9028e2abccae342}{Scalar} \+\_\+angle\+\_\+tresh=Open\+Mesh\+::deg\+\_\+to\+\_\+rad(44.\+0))
\item 
\hypertarget{a00994_af0bd67ac6c4c3fa8707191dcf28b7649}{void \hyperlink{a00994_af0bd67ac6c4c3fa8707191dcf28b7649}{split} (Face\+Handle \+\_\+fh, const \hyperlink{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}{Point} \&\+\_\+p)}\label{a00994_af0bd67ac6c4c3fa8707191dcf28b7649}

\begin{DoxyCompactList}\small\item\em Face split (= 1-\/to-\/n split) \end{DoxyCompactList}\item 
\hypertarget{a00994_a48712f39ad55c72ab48bf1127b6113bf}{void {\bfseries split} (Face\+Handle \+\_\+fh, \hyperlink{a00994_a0fc18e13d70825938274e3faf7b55e01}{Vertex\+Handle} \+\_\+vh)}\label{a00994_a48712f39ad55c72ab48bf1127b6113bf}

\item 
\hypertarget{a00994_ac198e4c43d5baf73b85557eaa48cc722}{void {\bfseries split} (Edge\+Handle \+\_\+eh, const \hyperlink{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}{Point} \&\+\_\+p)}\label{a00994_ac198e4c43d5baf73b85557eaa48cc722}

\item 
\hypertarget{a00994_adf9763c2328f9c70113da70f8fdc60c4}{void {\bfseries split} (Edge\+Handle \+\_\+eh, \hyperlink{a00994_a0fc18e13d70825938274e3faf7b55e01}{Vertex\+Handle} \+\_\+vh)}\label{a00994_adf9763c2328f9c70113da70f8fdc60c4}

\end{DoxyCompactItemize}
\begin{Indent}{\bf Normal vector computation}\par
\begin{DoxyCompactItemize}
\item 
void \hyperlink{a00994_a601f21014e50bd5a2243b0e4849c9c14}{update\+\_\+normals} ()
\begin{DoxyCompactList}\small\item\em Compute normals for all primitives. \end{DoxyCompactList}\item 
\hypertarget{a00994_ab7b40ea47b87d63d3f7a4a448b2a5a8d}{void \hyperlink{a00994_ab7b40ea47b87d63d3f7a4a448b2a5a8d}{update\+\_\+normal} (Face\+Handle \+\_\+fh)}\label{a00994_ab7b40ea47b87d63d3f7a4a448b2a5a8d}

\begin{DoxyCompactList}\small\item\em Update normal for face \+\_\+fh. \end{DoxyCompactList}\item 
void \hyperlink{a00994_a5677ec057717fece1bc3c7abbf93cbdf}{update\+\_\+face\+\_\+normals} ()
\begin{DoxyCompactList}\small\item\em Update normal vectors for all faces. \end{DoxyCompactList}\item 
virtual \hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Normal} \hyperlink{a00994_aad3b0a3001c7e44714e16442b78583af}{calc\+\_\+face\+\_\+normal} (Face\+Handle \+\_\+fh) const 
\item 
\hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Normal} \hyperlink{a00994_af2785fb696363e3b4a65df8319f06dd6}{calc\+\_\+face\+\_\+normal} (const \hyperlink{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}{Point} \&\+\_\+p0, const \hyperlink{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}{Point} \&\+\_\+p1, const \hyperlink{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}{Point} \&\+\_\+p2) const 
\item 
\hypertarget{a00994_a4d493c0b39c20eef9e169bce81e243dc}{void \hyperlink{a00994_a4d493c0b39c20eef9e169bce81e243dc}{calc\+\_\+face\+\_\+centroid} (Face\+Handle \+\_\+fh, \hyperlink{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}{Point} \&\+\_\+pt) const }\label{a00994_a4d493c0b39c20eef9e169bce81e243dc}

\begin{DoxyCompactList}\small\item\em calculates the average of the vertices defining \+\_\+fh \end{DoxyCompactList}\item 
\hypertarget{a00994_a9fc738c69147f4fa18cba94cd0d84523}{\hyperlink{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}{Point} \hyperlink{a00994_a9fc738c69147f4fa18cba94cd0d84523}{calc\+\_\+face\+\_\+centroid} (Face\+Handle \+\_\+fh) const }\label{a00994_a9fc738c69147f4fa18cba94cd0d84523}

\begin{DoxyCompactList}\small\item\em Computes and returns the average of the vertices defining \+\_\+gh. \end{DoxyCompactList}\item 
\hypertarget{a00994_ac98934e64388f212e03a66b39d0ee137}{void \hyperlink{a00994_ac98934e64388f212e03a66b39d0ee137}{update\+\_\+normal} (Halfedge\+Handle \+\_\+heh, const double \+\_\+feature\+\_\+angle=0.\+8)}\label{a00994_ac98934e64388f212e03a66b39d0ee137}

\begin{DoxyCompactList}\small\item\em Update normal for halfedge \+\_\+heh. \end{DoxyCompactList}\item 
void \hyperlink{a00994_a58045f9fafc6239077c747afdd8f852d}{update\+\_\+halfedge\+\_\+normals} (const double \+\_\+feature\+\_\+angle=0.\+8)
\begin{DoxyCompactList}\small\item\em Update normal vectors for all halfedges. \end{DoxyCompactList}\item 
virtual \hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Normal} \hyperlink{a00994_a9c1231e5c26af1cdec5b0745b6727d4b}{calc\+\_\+halfedge\+\_\+normal} (Halfedge\+Handle \+\_\+heh, const double \+\_\+feature\+\_\+angle=0.\+8) const 
\begin{DoxyCompactList}\small\item\em Calculate halfedge normal for one specific halfedge. \end{DoxyCompactList}\item 
bool \hyperlink{a00994_a2f6f5dd7a243ce8b34233361f17131ff}{is\+\_\+estimated\+\_\+feature\+\_\+edge} (Halfedge\+Handle \+\_\+heh, const double \+\_\+feature\+\_\+angle) const 
\item 
\hypertarget{a00994_a8f33200ba959d2d68e62d0cdf0afe322}{void \hyperlink{a00994_a8f33200ba959d2d68e62d0cdf0afe322}{update\+\_\+normal} (\hyperlink{a00994_a0fc18e13d70825938274e3faf7b55e01}{Vertex\+Handle} \+\_\+vh)}\label{a00994_a8f33200ba959d2d68e62d0cdf0afe322}

\begin{DoxyCompactList}\small\item\em Update normal for vertex \+\_\+vh. \end{DoxyCompactList}\item 
void \hyperlink{a00994_acbf60ccc42cb484ba2911bda8277551c}{update\+\_\+vertex\+\_\+normals} ()
\begin{DoxyCompactList}\small\item\em Update normal vectors for all vertices. \end{DoxyCompactList}\item 
\hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Normal} \hyperlink{a00994_a05f9cf93cfc2d00e9060ee04aba64cde}{calc\+\_\+vertex\+\_\+normal} (\hyperlink{a00994_a0fc18e13d70825938274e3faf7b55e01}{Vertex\+Handle} \+\_\+vh) const 
\begin{DoxyCompactList}\small\item\em Calculate vertex normal for one specific vertex. \end{DoxyCompactList}\item 
void \hyperlink{a00994_adb4f197611a4ceba81e7262ccb3e57d8}{calc\+\_\+vertex\+\_\+normal\+\_\+fast} (\hyperlink{a00994_a0fc18e13d70825938274e3faf7b55e01}{Vertex\+Handle} \+\_\+vh, \hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Normal} \&\+\_\+n) const 
\item 
void \hyperlink{a00994_a268f9ebdf96e451c2cbf28fe252b8eee}{calc\+\_\+vertex\+\_\+normal\+\_\+correct} (\hyperlink{a00994_a0fc18e13d70825938274e3faf7b55e01}{Vertex\+Handle} \+\_\+vh, \hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Normal} \&\+\_\+n) const 
\begin{DoxyCompactList}\small\item\em Compute normals for all primitives. \end{DoxyCompactList}\item 
void \hyperlink{a00994_a1e35bd2564bb83b080dafea72bc99e86}{calc\+\_\+vertex\+\_\+normal\+\_\+loop} (\hyperlink{a00994_a0fc18e13d70825938274e3faf7b55e01}{Vertex\+Handle} \+\_\+vh, \hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Normal} \&\+\_\+n) const 
\begin{DoxyCompactList}\small\item\em Compute normals for all primitives. \end{DoxyCompactList}\end{DoxyCompactItemize}
\end{Indent}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00994_aa89a66e1f3ca3fdfa600222d157bf9be}{\hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Normal} {\bfseries calc\+\_\+face\+\_\+normal\+\_\+impl} (Face\+Handle, \hyperlink{a00975}{Point\+Is3\+D\+Tag}) const }\label{a00994_aa89a66e1f3ca3fdfa600222d157bf9be}

\item 
\hypertarget{a00994_ac659432d6a63c1e6e07ce09077a1cf85}{\hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Normal} {\bfseries calc\+\_\+face\+\_\+normal\+\_\+impl} (Face\+Handle, \hyperlink{a00976}{Point\+Is\+Not3\+D\+Tag}) const }\label{a00994_ac659432d6a63c1e6e07ce09077a1cf85}

\item 
\hypertarget{a00994_ab2f8def26528b1e225bf9ff752475ef0}{\hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Normal} {\bfseries calc\+\_\+face\+\_\+normal\+\_\+impl} (const \hyperlink{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}{Point} \&, const \hyperlink{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}{Point} \&, const \hyperlink{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}{Point} \&, \hyperlink{a00975}{Point\+Is3\+D\+Tag}) const }\label{a00994_ab2f8def26528b1e225bf9ff752475ef0}

\item 
\hypertarget{a00994_a3948407b3e9447ca69f633fa5fa71e85}{\hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Normal} {\bfseries calc\+\_\+face\+\_\+normal\+\_\+impl} (const \hyperlink{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}{Point} \&, const \hyperlink{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}{Point} \&, const \hyperlink{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}{Point} \&, \hyperlink{a00976}{Point\+Is\+Not3\+D\+Tag}) const }\label{a00994_a3948407b3e9447ca69f633fa5fa71e85}

\end{DoxyCompactItemize}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00994_ad300a1d0393bdbf31ea65885e21e1c58}{enum \{ {\bfseries Is\+Poly\+Mesh} = 1
 \}}\label{a00994_ad300a1d0393bdbf31ea65885e21e1c58}

\begin{DoxyCompactList}\small\item\em Determine whether this is a \hyperlink{a00994}{Poly\+Mesh\+T} or \hyperlink{a01340}{Tri\+Mesh\+T} ( This function does not check the per face vertex count! It only checks if the datatype is \hyperlink{a00994}{Poly\+Mesh\+T} or \hyperlink{a01340}{Tri\+Mesh\+T} ) \end{DoxyCompactList}\item 
\hypertarget{a00994_ace66adf9b060d76ab16dfc38c959e9a4}{enum \{ {\bfseries Is\+Tri\+Mesh} = 0
 \}}\label{a00994_ace66adf9b060d76ab16dfc38c959e9a4}

\begin{DoxyCompactList}\small\item\em Determine whether this is a \hyperlink{a00994}{Poly\+Mesh\+T} or \hyperlink{a01340}{Tri\+Mesh\+T} ( This function does not check the per face vertex count! It only checks if the datatype is \hyperlink{a00994}{Poly\+Mesh\+T} or \hyperlink{a01340}{Tri\+Mesh\+T} ) \end{DoxyCompactList}\item 
\hypertarget{a00994_a4ebdfb213024282b74f376a264a9b92c}{static bool \hyperlink{a00994_a4ebdfb213024282b74f376a264a9b92c}{is\+\_\+polymesh} ()}\label{a00994_a4ebdfb213024282b74f376a264a9b92c}

\begin{DoxyCompactList}\small\item\em Determine whether this is a \hyperlink{a00994}{Poly\+Mesh\+T} or \hyperlink{a01340}{Tri\+Mesh\+T} ( This function does not check the per face vertex count! It only checks if the datatype is \hyperlink{a00994}{Poly\+Mesh\+T} or \hyperlink{a01340}{Tri\+Mesh\+T} ) \end{DoxyCompactList}\item 
\hypertarget{a00994_ad7b1074053a5595bb546047a21b8790a}{static bool \hyperlink{a00994_ad7b1074053a5595bb546047a21b8790a}{is\+\_\+trimesh} ()}\label{a00994_ad7b1074053a5595bb546047a21b8790a}

\begin{DoxyCompactList}\small\item\em Determine whether this is a \hyperlink{a00994}{Poly\+Mesh\+T} or \hyperlink{a01340}{Tri\+Mesh\+T} ( This function does not check the per face vertex count! It only checks if the datatype is \hyperlink{a00994}{Poly\+Mesh\+T} or \hyperlink{a01340}{Tri\+Mesh\+T} ) \end{DoxyCompactList}\end{DoxyCompactItemize}


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

Base type for a polygonal mesh.

This is the base class for a polygonal mesh. It is parameterized by a mesh kernel that is given as a template argument. This class inherits all methods from its mesh kernel.


\begin{DoxyParams}{Parameters}
{\em Kernel} & template argument for the mesh kernel \\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
You should use the predefined mesh-\/kernel combinations in \hyperlink{a03405}{Predefined Mesh Types} 
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{mesh_type}{Specifying your My\+Mesh} 
\end{DoxySeeAlso}


Definition at line 94 of file Poly\+Mesh\+T.\+hh.



\subsection{Member Function Documentation}
\hypertarget{a00994_a49dd0f24137854f97530779c58f1a964}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!calc\+\_\+dihedral\+\_\+angle\+\_\+fast@{calc\+\_\+dihedral\+\_\+angle\+\_\+fast}}
\index{calc\+\_\+dihedral\+\_\+angle\+\_\+fast@{calc\+\_\+dihedral\+\_\+angle\+\_\+fast}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{calc\+\_\+dihedral\+\_\+angle\+\_\+fast}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel$>$ {\bf Scalar} {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::calc\+\_\+dihedral\+\_\+angle\+\_\+fast (
\begin{DoxyParamCaption}
\item[{Halfedge\+Handle}]{\+\_\+heh}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00994_a49dd0f24137854f97530779c58f1a964}
calculates the dihedral angle on the halfedge \+\_\+heh \begin{DoxyAttention}{Attention}
Needs the \hyperlink{a03369_ab78a93560926cd2f9958cb028f7ea96da213616dd2e4d9744d863587001a77988}{Attributes\+::\+Normal} attribute for faces 
\end{DoxyAttention}


Definition at line 489 of file Poly\+Mesh\+T.\+hh.

\hypertarget{a00994_ab02b7b6311a48b3b1dca15ca33bf55af}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!calc\+\_\+dihedral\+\_\+angle\+\_\+fast@{calc\+\_\+dihedral\+\_\+angle\+\_\+fast}}
\index{calc\+\_\+dihedral\+\_\+angle\+\_\+fast@{calc\+\_\+dihedral\+\_\+angle\+\_\+fast}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{calc\+\_\+dihedral\+\_\+angle\+\_\+fast}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel$>$ {\bf Scalar} {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::calc\+\_\+dihedral\+\_\+angle\+\_\+fast (
\begin{DoxyParamCaption}
\item[{Edge\+Handle}]{\+\_\+eh}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00994_ab02b7b6311a48b3b1dca15ca33bf55af}
calculates the dihedral angle on the edge \+\_\+eh \begin{DoxyAttention}{Attention}
Needs the \hyperlink{a03369_ab78a93560926cd2f9958cb028f7ea96da213616dd2e4d9744d863587001a77988}{Attributes\+::\+Normal} attribute for faces 
\end{DoxyAttention}


Definition at line 510 of file Poly\+Mesh\+T.\+hh.

\hypertarget{a00994_aece958e03921a6cf39045b8b1013e448}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!calc\+\_\+edge\+\_\+length@{calc\+\_\+edge\+\_\+length}}
\index{calc\+\_\+edge\+\_\+length@{calc\+\_\+edge\+\_\+length}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{calc\+\_\+edge\+\_\+length}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel$>$ {\bf Scalar} {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::calc\+\_\+edge\+\_\+length (
\begin{DoxyParamCaption}
\item[{Halfedge\+Handle}]{\+\_\+heh}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00994_aece958e03921a6cf39045b8b1013e448}
Calculates the length of the edge \+\_\+heh 

Definition at line 397 of file Poly\+Mesh\+T.\+hh.

\hypertarget{a00994_a090d5252328e5fbd7f10e2cc3576d2eb}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!calc\+\_\+edge\+\_\+vector@{calc\+\_\+edge\+\_\+vector}}
\index{calc\+\_\+edge\+\_\+vector@{calc\+\_\+edge\+\_\+vector}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{calc\+\_\+edge\+\_\+vector}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel$>$ void {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::calc\+\_\+edge\+\_\+vector (
\begin{DoxyParamCaption}
\item[{Edge\+Handle}]{\+\_\+eh, }
\item[{{\bf Normal} \&}]{\+\_\+edge\+\_\+vec}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00994_a090d5252328e5fbd7f10e2cc3576d2eb}
Calculates the edge vector as the vector defined by the halfedge with id \#0 (see below) 

Definition at line 364 of file Poly\+Mesh\+T.\+hh.

\hypertarget{a00994_a2b45bfb6c89627b22a1ae33be996ec9f}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!calc\+\_\+edge\+\_\+vector@{calc\+\_\+edge\+\_\+vector}}
\index{calc\+\_\+edge\+\_\+vector@{calc\+\_\+edge\+\_\+vector}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{calc\+\_\+edge\+\_\+vector}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel$>$ {\bf Normal} {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::calc\+\_\+edge\+\_\+vector (
\begin{DoxyParamCaption}
\item[{Edge\+Handle}]{\+\_\+eh}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00994_a2b45bfb6c89627b22a1ae33be996ec9f}
Calculates the edge vector as the vector defined by the halfedge with id \#0 (see below) 

Definition at line 371 of file Poly\+Mesh\+T.\+hh.

\hypertarget{a00994_a3ce28ba8fef4acb4e97c380be47ef240}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!calc\+\_\+edge\+\_\+vector@{calc\+\_\+edge\+\_\+vector}}
\index{calc\+\_\+edge\+\_\+vector@{calc\+\_\+edge\+\_\+vector}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{calc\+\_\+edge\+\_\+vector}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel$>$ void {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::calc\+\_\+edge\+\_\+vector (
\begin{DoxyParamCaption}
\item[{Halfedge\+Handle}]{\+\_\+heh, }
\item[{{\bf Normal} \&}]{\+\_\+edge\+\_\+vec}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00994_a3ce28ba8fef4acb4e97c380be47ef240}
Calculates the edge vector as the difference of the the points defined by to\+\_\+vertex\+\_\+handle() and from\+\_\+vertex\+\_\+handle() 

Definition at line 378 of file Poly\+Mesh\+T.\+hh.

\hypertarget{a00994_af183231a6d5eb220370c017e40f3adb1}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!calc\+\_\+edge\+\_\+vector@{calc\+\_\+edge\+\_\+vector}}
\index{calc\+\_\+edge\+\_\+vector@{calc\+\_\+edge\+\_\+vector}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{calc\+\_\+edge\+\_\+vector}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel$>$ {\bf Normal} {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::calc\+\_\+edge\+\_\+vector (
\begin{DoxyParamCaption}
\item[{Halfedge\+Handle}]{\+\_\+heh}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00994_af183231a6d5eb220370c017e40f3adb1}
Calculates the edge vector as the difference of the the points defined by to\+\_\+vertex\+\_\+handle() and from\+\_\+vertex\+\_\+handle() 

Definition at line 385 of file Poly\+Mesh\+T.\+hh.

\hypertarget{a00994_aad3b0a3001c7e44714e16442b78583af}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!calc\+\_\+face\+\_\+normal@{calc\+\_\+face\+\_\+normal}}
\index{calc\+\_\+face\+\_\+normal@{calc\+\_\+face\+\_\+normal}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{calc\+\_\+face\+\_\+normal}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel $>$ {\bf Poly\+Mesh\+T}$<$ Kernel $>$\+::{\bf Normal} {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::calc\+\_\+face\+\_\+normal (
\begin{DoxyParamCaption}
\item[{Face\+Handle}]{\+\_\+fh}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{a00994_aad3b0a3001c7e44714e16442b78583af}
Calculate normal vector for face \+\_\+fh. 

Reimplemented in \hyperlink{a01340_a37742193d34c2626c9b9abd6127aa0ab}{Open\+Mesh\+::\+Tri\+Mesh\+T$<$ Kernel $>$}.



Definition at line 102 of file Poly\+Mesh\+T.\+cc.

\hypertarget{a00994_af2785fb696363e3b4a65df8319f06dd6}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!calc\+\_\+face\+\_\+normal@{calc\+\_\+face\+\_\+normal}}
\index{calc\+\_\+face\+\_\+normal@{calc\+\_\+face\+\_\+normal}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{calc\+\_\+face\+\_\+normal}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel $>$ {\bf Poly\+Mesh\+T}$<$ Kernel $>$\+::{\bf Normal} {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::calc\+\_\+face\+\_\+normal (
\begin{DoxyParamCaption}
\item[{const {\bf Point} \&}]{\+\_\+p0, }
\item[{const {\bf Point} \&}]{\+\_\+p1, }
\item[{const {\bf Point} \&}]{\+\_\+p2}
\end{DoxyParamCaption}
) const}}\label{a00994_af2785fb696363e3b4a65df8319f06dd6}
Calculate normal vector for face (\+\_\+p0, \+\_\+p1, \+\_\+p2). 

Definition at line 167 of file Poly\+Mesh\+T.\+cc.

\hypertarget{a00994_a9c1231e5c26af1cdec5b0745b6727d4b}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!calc\+\_\+halfedge\+\_\+normal@{calc\+\_\+halfedge\+\_\+normal}}
\index{calc\+\_\+halfedge\+\_\+normal@{calc\+\_\+halfedge\+\_\+normal}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{calc\+\_\+halfedge\+\_\+normal}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel $>$ {\bf Poly\+Mesh\+T}$<$ Kernel $>$\+::{\bf Normal} {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::calc\+\_\+halfedge\+\_\+normal (
\begin{DoxyParamCaption}
\item[{Halfedge\+Handle}]{\+\_\+heh, }
\item[{const double}]{\+\_\+feature\+\_\+angle = {\ttfamily 0.8}}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{a00994_a9c1231e5c26af1cdec5b0745b6727d4b}


Calculate halfedge normal for one specific halfedge. 

Calculate normal vector for halfedge \+\_\+heh.

\begin{DoxyNote}{Note}
Face normals have to be computed first!
\end{DoxyNote}
\begin{DoxyAttention}{Attention}
Needs the \hyperlink{a03369_ab78a93560926cd2f9958cb028f7ea96da213616dd2e4d9744d863587001a77988}{Attributes\+::\+Normal} attribute for faces and vertices. Call request\+\_\+face\+\_\+normals() and request\+\_\+halfedge\+\_\+normals() before using it!
\end{DoxyAttention}

\begin{DoxyParams}{Parameters}
{\em \+\_\+heh} & Handle of the halfedge \\
\hline
{\em \+\_\+feature\+\_\+angle} & If the dihedral angle across this edge is greater than this value, the edge is considered as a feature edge (angle in radians) \\
\hline
\end{DoxyParams}


Definition at line 289 of file Poly\+Mesh\+T.\+cc.

\hypertarget{a00994_a458cb0e3630ed058b40df038ee65a611}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!calc\+\_\+sector\+\_\+angle@{calc\+\_\+sector\+\_\+angle}}
\index{calc\+\_\+sector\+\_\+angle@{calc\+\_\+sector\+\_\+angle}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{calc\+\_\+sector\+\_\+angle}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel$>$ {\bf Scalar} {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::calc\+\_\+sector\+\_\+angle (
\begin{DoxyParamCaption}
\item[{Halfedge\+Handle}]{\+\_\+in\+\_\+heh}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00994_a458cb0e3630ed058b40df038ee65a611}
calculates the sector angle.~\newline
The vertex pointed by \+\_\+in\+\_\+heh defines the sector center The angle will be calculated between the given halfedge and the next halfedge.~\newline
Seen from the center vertex this will be the next halfedge in clockwise direction.~\newline
 N\+O\+T\+E\+: only boundary concave sectors are treated correctly 

Definition at line 425 of file Poly\+Mesh\+T.\+hh.

\hypertarget{a00994_ab72758b5395b2b489f12f82d242531ce}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!calc\+\_\+sector\+\_\+area@{calc\+\_\+sector\+\_\+area}}
\index{calc\+\_\+sector\+\_\+area@{calc\+\_\+sector\+\_\+area}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{calc\+\_\+sector\+\_\+area}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel$>$ {\bf Scalar} {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::calc\+\_\+sector\+\_\+area (
\begin{DoxyParamCaption}
\item[{Halfedge\+Handle}]{\+\_\+in\+\_\+heh}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00994_ab72758b5395b2b489f12f82d242531ce}
calculates the area of the face sector defined by the angle $<$(\+\_\+in\+\_\+heh,next\+\_\+halfedge(\+\_\+in\+\_\+heh)) N\+O\+T\+E\+: special cases (e.\+g. concave sectors) are not handled correctly 

Definition at line 480 of file Poly\+Mesh\+T.\+hh.

\hypertarget{a00994_a2996b1f2d1a63073b837e5ad438a1832}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!calc\+\_\+sector\+\_\+normal@{calc\+\_\+sector\+\_\+normal}}
\index{calc\+\_\+sector\+\_\+normal@{calc\+\_\+sector\+\_\+normal}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{calc\+\_\+sector\+\_\+normal}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel$>$ void {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::calc\+\_\+sector\+\_\+normal (
\begin{DoxyParamCaption}
\item[{Halfedge\+Handle}]{\+\_\+in\+\_\+heh, }
\item[{{\bf Normal} \&}]{\+\_\+sector\+\_\+normal}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00994_a2996b1f2d1a63073b837e5ad438a1832}
calculates the normal (non-\/normalized) of the face sector defined by the angle $<$(\+\_\+in\+\_\+heh,next\+\_\+halfedge(\+\_\+in\+\_\+heh)) 

Definition at line 470 of file Poly\+Mesh\+T.\+hh.

\hypertarget{a00994_a1fb01f73d2eec4de5ccaf47fe22b01b1}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!calc\+\_\+sector\+\_\+vectors@{calc\+\_\+sector\+\_\+vectors}}
\index{calc\+\_\+sector\+\_\+vectors@{calc\+\_\+sector\+\_\+vectors}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{calc\+\_\+sector\+\_\+vectors}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel$>$ void {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::calc\+\_\+sector\+\_\+vectors (
\begin{DoxyParamCaption}
\item[{Halfedge\+Handle}]{\+\_\+in\+\_\+heh, }
\item[{{\bf Normal} \&}]{\+\_\+vec0, }
\item[{{\bf Normal} \&}]{\+\_\+vec1}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00994_a1fb01f73d2eec4de5ccaf47fe22b01b1}
defines a consistent representation of a sector geometry\+: the halfedge \+\_\+in\+\_\+heh defines the sector orientation the vertex pointed by \+\_\+in\+\_\+heh defines the sector center \+\_\+vec0 and \+\_\+vec1 are resp. the first and the second vectors defining the sector 

Definition at line 414 of file Poly\+Mesh\+T.\+hh.

\hypertarget{a00994_a05f9cf93cfc2d00e9060ee04aba64cde}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!calc\+\_\+vertex\+\_\+normal@{calc\+\_\+vertex\+\_\+normal}}
\index{calc\+\_\+vertex\+\_\+normal@{calc\+\_\+vertex\+\_\+normal}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{calc\+\_\+vertex\+\_\+normal}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel $>$ {\bf Poly\+Mesh\+T}$<$ Kernel $>$\+::{\bf Normal} {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::calc\+\_\+vertex\+\_\+normal (
\begin{DoxyParamCaption}
\item[{{\bf Vertex\+Handle}}]{\+\_\+vh}
\end{DoxyParamCaption}
) const}}\label{a00994_a05f9cf93cfc2d00e9060ee04aba64cde}


Calculate vertex normal for one specific vertex. 

Calculate normal vector for vertex \+\_\+vh by averaging normals of adjacent faces.

\begin{DoxyNote}{Note}
Face normals have to be computed first!
\end{DoxyNote}
\begin{DoxyAttention}{Attention}
Needs the \hyperlink{a03369_ab78a93560926cd2f9958cb028f7ea96da213616dd2e4d9744d863587001a77988}{Attributes\+::\+Normal} attribute for faces and vertices. Call request\+\_\+face\+\_\+normals() and request\+\_\+vertex\+\_\+normals() before using it!
\end{DoxyAttention}

\begin{DoxyParams}{Parameters}
{\em \+\_\+vh} & Handle of the vertex \\
\hline
\end{DoxyParams}


Definition at line 373 of file Poly\+Mesh\+T.\+cc.

\hypertarget{a00994_a268f9ebdf96e451c2cbf28fe252b8eee}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!calc\+\_\+vertex\+\_\+normal\+\_\+correct@{calc\+\_\+vertex\+\_\+normal\+\_\+correct}}
\index{calc\+\_\+vertex\+\_\+normal\+\_\+correct@{calc\+\_\+vertex\+\_\+normal\+\_\+correct}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{calc\+\_\+vertex\+\_\+normal\+\_\+correct}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel $>$ void {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::calc\+\_\+vertex\+\_\+normal\+\_\+correct (
\begin{DoxyParamCaption}
\item[{{\bf Vertex\+Handle}}]{\+\_\+vh, }
\item[{{\bf Normal} \&}]{\+\_\+n}
\end{DoxyParamCaption}
) const}}\label{a00994_a268f9ebdf96e451c2cbf28fe252b8eee}


Compute normals for all primitives. 

Calls \hyperlink{a00994_a5677ec057717fece1bc3c7abbf93cbdf}{update\+\_\+face\+\_\+normals()} , \hyperlink{a00994_a58045f9fafc6239077c747afdd8f852d}{update\+\_\+halfedge\+\_\+normals()} and \hyperlink{a00994_acbf60ccc42cb484ba2911bda8277551c}{update\+\_\+vertex\+\_\+normals()} if the normals (i.\+e. the properties) exist.

\begin{DoxyNote}{Note}
Face normals are required to compute vertex and halfedge normals! 
\end{DoxyNote}


Definition at line 397 of file Poly\+Mesh\+T.\+cc.

\hypertarget{a00994_adb4f197611a4ceba81e7262ccb3e57d8}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!calc\+\_\+vertex\+\_\+normal\+\_\+fast@{calc\+\_\+vertex\+\_\+normal\+\_\+fast}}
\index{calc\+\_\+vertex\+\_\+normal\+\_\+fast@{calc\+\_\+vertex\+\_\+normal\+\_\+fast}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{calc\+\_\+vertex\+\_\+normal\+\_\+fast}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel $>$ void {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::calc\+\_\+vertex\+\_\+normal\+\_\+fast (
\begin{DoxyParamCaption}
\item[{{\bf Vertex\+Handle}}]{\+\_\+vh, }
\item[{{\bf Normal} \&}]{\+\_\+n}
\end{DoxyParamCaption}
) const}}\label{a00994_adb4f197611a4ceba81e7262ccb3e57d8}
Different methods for calculation of the normal at \+\_\+vh\+:
\begin{DoxyItemize}
\item ...\+\_\+fast -\/ the default one -\/ the same as calc vertex\+\_\+normal()
\begin{DoxyItemize}
\item needs the \hyperlink{a03369_ab78a93560926cd2f9958cb028f7ea96da213616dd2e4d9744d863587001a77988}{Attributes\+::\+Normal} attribute for faces
\end{DoxyItemize}
\item ...\+\_\+correct -\/ works properly for non-\/triangular meshes
\begin{DoxyItemize}
\item does not need any attributes
\end{DoxyItemize}
\item ...\+\_\+loop -\/ calculates loop surface normals
\begin{DoxyItemize}
\item does not need any attributes 
\end{DoxyItemize}
\end{DoxyItemize}

Definition at line 387 of file Poly\+Mesh\+T.\+cc.

\hypertarget{a00994_a1e35bd2564bb83b080dafea72bc99e86}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!calc\+\_\+vertex\+\_\+normal\+\_\+loop@{calc\+\_\+vertex\+\_\+normal\+\_\+loop}}
\index{calc\+\_\+vertex\+\_\+normal\+\_\+loop@{calc\+\_\+vertex\+\_\+normal\+\_\+loop}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{calc\+\_\+vertex\+\_\+normal\+\_\+loop}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel $>$ void {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::calc\+\_\+vertex\+\_\+normal\+\_\+loop (
\begin{DoxyParamCaption}
\item[{{\bf Vertex\+Handle}}]{\+\_\+vh, }
\item[{{\bf Normal} \&}]{\+\_\+n}
\end{DoxyParamCaption}
) const}}\label{a00994_a1e35bd2564bb83b080dafea72bc99e86}


Compute normals for all primitives. 

Calls \hyperlink{a00994_a5677ec057717fece1bc3c7abbf93cbdf}{update\+\_\+face\+\_\+normals()} , \hyperlink{a00994_a58045f9fafc6239077c747afdd8f852d}{update\+\_\+halfedge\+\_\+normals()} and \hyperlink{a00994_acbf60ccc42cb484ba2911bda8277551c}{update\+\_\+vertex\+\_\+normals()} if the normals (i.\+e. the properties) exist.

\begin{DoxyNote}{Note}
Face normals are required to compute vertex and halfedge normals! 
\end{DoxyNote}


Definition at line 425 of file Poly\+Mesh\+T.\+cc.

\hypertarget{a00994_a5a52366a97b3c87ab3473c476f221e22}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!find\+\_\+feature\+\_\+edges@{find\+\_\+feature\+\_\+edges}}
\index{find\+\_\+feature\+\_\+edges@{find\+\_\+feature\+\_\+edges}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{find\+\_\+feature\+\_\+edges}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel $>$ uint {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::find\+\_\+feature\+\_\+edges (
\begin{DoxyParamCaption}
\item[{{\bf Scalar}}]{\+\_\+angle\+\_\+tresh = {\ttfamily OpenMesh\+:\+:deg\+\_\+to\+\_\+rad(44.0)}}
\end{DoxyParamCaption}
)}}\label{a00994_a5a52366a97b3c87ab3473c476f221e22}
tags an edge as a feature if its dihedral angle is larger than \+\_\+angle\+\_\+tresh returns the number of the found feature edges, requires edge\+\_\+status property 

Definition at line 79 of file Poly\+Mesh\+T.\+cc.

\hypertarget{a00994_a2f6f5dd7a243ce8b34233361f17131ff}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!is\+\_\+estimated\+\_\+feature\+\_\+edge@{is\+\_\+estimated\+\_\+feature\+\_\+edge}}
\index{is\+\_\+estimated\+\_\+feature\+\_\+edge@{is\+\_\+estimated\+\_\+feature\+\_\+edge}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{is\+\_\+estimated\+\_\+feature\+\_\+edge}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel $>$ bool {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::is\+\_\+estimated\+\_\+feature\+\_\+edge (
\begin{DoxyParamCaption}
\item[{Halfedge\+Handle}]{\+\_\+heh, }
\item[{const double}]{\+\_\+feature\+\_\+angle}
\end{DoxyParamCaption}
) const}}\label{a00994_a2f6f5dd7a243ce8b34233361f17131ff}
identifies feature edges w.\+r.\+t. the minimal dihedral angle for feature edges (in radians) and the status feature tag 

Definition at line 342 of file Poly\+Mesh\+T.\+cc.

\hypertarget{a00994_aee07d968ddfbb6376a7f7712ae1a73c4}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!new\+\_\+vertex@{new\+\_\+vertex}}
\index{new\+\_\+vertex@{new\+\_\+vertex}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{new\+\_\+vertex}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel$>$ {\bf Vertex\+Handle} {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::new\+\_\+vertex (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00994_aee07d968ddfbb6376a7f7712ae1a73c4}


Adds a new default-\/initialized vertex. 

Uses default copy and assignment operator. Use them to assign two meshes of {\bfseries equal} type. If the mesh types vary, use Poly\+Mesh\+T\+::assign() instead. \begin{DoxySeeAlso}{See also}
\hyperlink{a00994_a77d36a90d4c207845cf1478aec56c283}{new\+\_\+vertex(const Point\&)}, \hyperlink{a00994_a8787adda36a734b33fa578f9c50bb2f3}{new\+\_\+vertex\+\_\+dirty()} 
\end{DoxySeeAlso}


Definition at line 202 of file Poly\+Mesh\+T.\+hh.

\hypertarget{a00994_a77d36a90d4c207845cf1478aec56c283}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!new\+\_\+vertex@{new\+\_\+vertex}}
\index{new\+\_\+vertex@{new\+\_\+vertex}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{new\+\_\+vertex}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel$>$ {\bf Vertex\+Handle} {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::new\+\_\+vertex (
\begin{DoxyParamCaption}
\item[{const {\bf Point} \&}]{\+\_\+p}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00994_a77d36a90d4c207845cf1478aec56c283}


Adds a new vertex initialized to a custom position. 

\begin{DoxySeeAlso}{See also}
\hyperlink{a00994_aee07d968ddfbb6376a7f7712ae1a73c4}{new\+\_\+vertex()}, \hyperlink{a00994_a8787adda36a734b33fa578f9c50bb2f3}{new\+\_\+vertex\+\_\+dirty()} 
\end{DoxySeeAlso}


Definition at line 210 of file Poly\+Mesh\+T.\+hh.

\hypertarget{a00994_a8787adda36a734b33fa578f9c50bb2f3}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!new\+\_\+vertex\+\_\+dirty@{new\+\_\+vertex\+\_\+dirty}}
\index{new\+\_\+vertex\+\_\+dirty@{new\+\_\+vertex\+\_\+dirty}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{new\+\_\+vertex\+\_\+dirty}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel$>$ {\bf Vertex\+Handle} {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::new\+\_\+vertex\+\_\+dirty (
\begin{DoxyParamCaption}
\item[{const {\bf Point} \&}]{\+\_\+p}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00994_a8787adda36a734b33fa578f9c50bb2f3}
Same as \hyperlink{a00994_a77d36a90d4c207845cf1478aec56c283}{new\+\_\+vertex(const Point\&)} but never shrinks, only enlarges the vertex property vectors.

If you are rebuilding a mesh that you erased with \hyperlink{a00295_a04957ea762a7b0ff4fc3faac13c20fa4}{Array\+Kernel\+::clean()} or \hyperlink{a00295_aeb0af6fdeb2a51da1219cc1ddb84f201}{Array\+Kernel\+::clean\+\_\+keep\+\_\+reservation()} using this method instead of \hyperlink{a00994_a77d36a90d4c207845cf1478aec56c283}{new\+\_\+vertex(const Point \&)} saves reallocation and reinitialization of property memory.

\begin{DoxySeeAlso}{See also}
\hyperlink{a00994_a77d36a90d4c207845cf1478aec56c283}{new\+\_\+vertex(const Point \&)} 
\end{DoxySeeAlso}


Definition at line 228 of file Poly\+Mesh\+T.\+hh.

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


Update normal vectors for all faces. 

\begin{DoxyAttention}{Attention}
Needs the \hyperlink{a03369_ab78a93560926cd2f9958cb028f7ea96da213616dd2e4d9744d863587001a77988}{Attributes\+::\+Normal} attribute for faces. Call request\+\_\+face\+\_\+normals() before using it! 
\end{DoxyAttention}


Definition at line 259 of file Poly\+Mesh\+T.\+cc.

\hypertarget{a00994_a58045f9fafc6239077c747afdd8f852d}{\index{Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}!update\+\_\+halfedge\+\_\+normals@{update\+\_\+halfedge\+\_\+normals}}
\index{update\+\_\+halfedge\+\_\+normals@{update\+\_\+halfedge\+\_\+normals}!Open\+Mesh\+::\+Poly\+Mesh\+T@{Open\+Mesh\+::\+Poly\+Mesh\+T}}
\subsubsection[{update\+\_\+halfedge\+\_\+normals}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Kernel $>$ void {\bf Open\+Mesh\+::\+Poly\+Mesh\+T}$<$ Kernel $>$\+::update\+\_\+halfedge\+\_\+normals (
\begin{DoxyParamCaption}
\item[{const double}]{\+\_\+feature\+\_\+angle = {\ttfamily 0.8}}
\end{DoxyParamCaption}
)}}\label{a00994_a58045f9fafc6239077c747afdd8f852d}


Update normal vectors for all halfedges. 

Uses the existing face normals to compute halfedge normals

\begin{DoxyNote}{Note}
Face normals have to be computed first!
\end{DoxyNote}
\begin{DoxyAttention}{Attention}
Needs the \hyperlink{a03369_ab78a93560926cd2f9958cb028f7ea96da213616dd2e4d9744d863587001a77988}{Attributes\+::\+Normal} attribute for faces and halfedges. Call request\+\_\+face\+\_\+normals() and request\+\_\+halfedge\+\_\+normals() before using it! 
\end{DoxyAttention}


Definition at line 274 of file Poly\+Mesh\+T.\+cc.

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


Compute normals for all primitives. 

Calls \hyperlink{a00994_a5677ec057717fece1bc3c7abbf93cbdf}{update\+\_\+face\+\_\+normals()} , \hyperlink{a00994_a58045f9fafc6239077c747afdd8f852d}{update\+\_\+halfedge\+\_\+normals()} and \hyperlink{a00994_acbf60ccc42cb484ba2911bda8277551c}{update\+\_\+vertex\+\_\+normals()} if the normals (i.\+e. the properties) exist.

\begin{DoxyNote}{Note}
Face normals are required to compute vertex and halfedge normals! 
\end{DoxyNote}


Definition at line 241 of file Poly\+Mesh\+T.\+cc.

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


Update normal vectors for all vertices. 

Uses existing face normals to calculate new vertex normals.

\begin{DoxyNote}{Note}
Face normals have to be computed first!
\end{DoxyNote}
\begin{DoxyAttention}{Attention}
Needs the \hyperlink{a03369_ab78a93560926cd2f9958cb028f7ea96da213616dd2e4d9744d863587001a77988}{Attributes\+::\+Normal} attribute for faces and vertices. Call request\+\_\+face\+\_\+normals() and request\+\_\+vertex\+\_\+normals() before using it! 
\end{DoxyAttention}


Definition at line 448 of file Poly\+Mesh\+T.\+cc.



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