\hypertarget{a00988}{\section{A\+C\+G\+:\+:Poly\+Line\+T$<$ Point\+T $>$ Class Template Reference}
\label{a00988}\index{A\+C\+G\+::\+Poly\+Line\+T$<$ Point\+T $>$@{A\+C\+G\+::\+Poly\+Line\+T$<$ Point\+T $>$}}
}


{\ttfamily \#include $<$A\+C$>$}

\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{a00471}{Custom\+Property}
\end{DoxyCompactItemize}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00988_aa1cd14502c9552da09fda657c9b18d59}{typedef Point\+T {\bfseries Point}}\label{a00988_aa1cd14502c9552da09fda657c9b18d59}

\item 
\hypertarget{a00988_a087c7aed2c96705c0521b79c450e8562}{typedef Point\+::value\+\_\+type {\bfseries Scalar}}\label{a00988_a087c7aed2c96705c0521b79c450e8562}

\item 
\hypertarget{a00988_a80f8883cd05577db270d651ee7006622}{typedef int {\bfseries Custom\+Property\+Handle}}\label{a00988_a80f8883cd05577db270d651ee7006622}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00988_a79acdbaa2fbcf5b91db792c6f22af492}{\hyperlink{a00988_a79acdbaa2fbcf5b91db792c6f22af492}{Poly\+Line\+T} (bool \+\_\+closed=false)}\label{a00988_a79acdbaa2fbcf5b91db792c6f22af492}

\begin{DoxyCompactList}\small\item\em Constructor. \end{DoxyCompactList}\item 
\hypertarget{a00988_afb08df18c3db2855a59b5a1979fbeb89}{\hyperlink{a00988_afb08df18c3db2855a59b5a1979fbeb89}{Poly\+Line\+T} (const \hyperlink{a00988}{Poly\+Line\+T} \&\+\_\+line)}\label{a00988_afb08df18c3db2855a59b5a1979fbeb89}

\begin{DoxyCompactList}\small\item\em Copy Constructor. \end{DoxyCompactList}\item 
\hypertarget{a00988_a91ffae3afc611be9bb3347a949f85aa6}{\hyperlink{a00988_a91ffae3afc611be9bb3347a949f85aa6}{$\sim$\+Poly\+Line\+T} ()}\label{a00988_a91ffae3afc611be9bb3347a949f85aa6}

\begin{DoxyCompactList}\small\item\em Destructor. \end{DoxyCompactList}\item 
bool \hyperlink{a00988_ac9ee660127512629e7ed040de0f6c995}{is\+\_\+closed} () const 
\begin{DoxyCompactList}\small\item\em Check if the polyline is marked as closed. \end{DoxyCompactList}\item 
void \hyperlink{a00988_a3e00211224dbfd08cb33547f6af656e9}{set\+\_\+closed} (const bool \+\_\+c)
\begin{DoxyCompactList}\small\item\em Set if the polyline should be closed and therefore forms a loop. \end{DoxyCompactList}\item 
\hypertarget{a00988_a72caeabb08762ee9d2490468497b58a8}{size\+\_\+t \hyperlink{a00988_a72caeabb08762ee9d2490468497b58a8}{n\+\_\+vertices} () const }\label{a00988_a72caeabb08762ee9d2490468497b58a8}

\begin{DoxyCompactList}\small\item\em Get number of vertices. \end{DoxyCompactList}\item 
\hypertarget{a00988_a4fc627c8473a60d8581b61834e21edc3}{size\+\_\+t \hyperlink{a00988_a4fc627c8473a60d8581b61834e21edc3}{n\+\_\+edges} () const }\label{a00988_a4fc627c8473a60d8581b61834e21edc3}

\begin{DoxyCompactList}\small\item\em Get number of edges. \end{DoxyCompactList}\item 
\hypertarget{a00988_ad944986dd63c40721b7cfd8697bf48d3}{void \hyperlink{a00988_ad944986dd63c40721b7cfd8697bf48d3}{clear} ()}\label{a00988_ad944986dd63c40721b7cfd8697bf48d3}

\begin{DoxyCompactList}\small\item\em Clear the current polyline. \end{DoxyCompactList}\item 
\hypertarget{a00988_aa720dc9eba554a6c6d109e5a0a343ada}{void \hyperlink{a00988_aa720dc9eba554a6c6d109e5a0a343ada}{resize} (unsigned int \+\_\+n)}\label{a00988_aa720dc9eba554a6c6d109e5a0a343ada}

\begin{DoxyCompactList}\small\item\em Resize current polyline. \end{DoxyCompactList}\item 
\hypertarget{a00988_ae4e5f1ac878672c2815ed337c6b0acba}{void \hyperlink{a00988_ae4e5f1ac878672c2815ed337c6b0acba}{add\+\_\+point} (const Point \&\+\_\+p)}\label{a00988_ae4e5f1ac878672c2815ed337c6b0acba}

\begin{DoxyCompactList}\small\item\em Append a point to the polyline. \end{DoxyCompactList}\item 
void \hyperlink{a00988_a13292d435e2938dfaff985f2e209c947}{insert\+\_\+point} (int \+\_\+idx, const Point \&\+\_\+p)
\begin{DoxyCompactList}\small\item\em insert \+\_\+p at \+\_\+idx into polyline \end{DoxyCompactList}\item 
\hypertarget{a00988_aa490ba91b9decb0f2a8346e85ed6486e}{void \hyperlink{a00988_aa490ba91b9decb0f2a8346e85ed6486e}{delete\+\_\+point} (int \+\_\+idx)}\label{a00988_aa490ba91b9decb0f2a8346e85ed6486e}

\begin{DoxyCompactList}\small\item\em Delete point at \+\_\+idx. \end{DoxyCompactList}\item 
\hypertarget{a00988_a896f6524f4380647fd1fee86d554f210}{Point \& \hyperlink{a00988_a896f6524f4380647fd1fee86d554f210}{point} (unsigned int \+\_\+i)}\label{a00988_a896f6524f4380647fd1fee86d554f210}

\begin{DoxyCompactList}\small\item\em Get a point of the polyline. \end{DoxyCompactList}\item 
\hypertarget{a00988_a8061aa27a2ba6699834a85d77197e29d}{const Point \& \hyperlink{a00988_a8061aa27a2ba6699834a85d77197e29d}{point} (unsigned int \+\_\+i) const }\label{a00988_a8061aa27a2ba6699834a85d77197e29d}

\begin{DoxyCompactList}\small\item\em Get a point of the polyline. \end{DoxyCompactList}\item 
\hypertarget{a00988_a2208eab4b8384d5a560dbba6c55e443c}{std\+::vector$<$ Point $>$ \& \hyperlink{a00988_a2208eab4b8384d5a560dbba6c55e443c}{points} ()}\label{a00988_a2208eab4b8384d5a560dbba6c55e443c}

\begin{DoxyCompactList}\small\item\em Get all points of the polyline. \end{DoxyCompactList}\item 
\hypertarget{a00988_a24cc5b2d8dc5b8bff4ed173d82a9ffd0}{const std\+::vector$<$ Point $>$ \& \hyperlink{a00988_a24cc5b2d8dc5b8bff4ed173d82a9ffd0}{points} () const }\label{a00988_a24cc5b2d8dc5b8bff4ed173d82a9ffd0}

\begin{DoxyCompactList}\small\item\em Get all points of the polyline. \end{DoxyCompactList}\item 
\hypertarget{a00988_a4fa019ea5e366d4f2ba170cdafca9aef}{Point \& \hyperlink{a00988_a4fa019ea5e366d4f2ba170cdafca9aef}{front} ()}\label{a00988_a4fa019ea5e366d4f2ba170cdafca9aef}

\begin{DoxyCompactList}\small\item\em Get first point of the polyline ( no range check!!!) \end{DoxyCompactList}\item 
\hypertarget{a00988_aff12c3cb832a847d2aca190668d92322}{const Point \& \hyperlink{a00988_aff12c3cb832a847d2aca190668d92322}{front} () const }\label{a00988_aff12c3cb832a847d2aca190668d92322}

\begin{DoxyCompactList}\small\item\em Get first point of the polyline ( no range check!!!) \end{DoxyCompactList}\item 
\hypertarget{a00988_adeffe94e15fbad7e0bc1c6a2dc1ed1f2}{Point \& \hyperlink{a00988_adeffe94e15fbad7e0bc1c6a2dc1ed1f2}{back} ()}\label{a00988_adeffe94e15fbad7e0bc1c6a2dc1ed1f2}

\begin{DoxyCompactList}\small\item\em Get last point of the polyline ( no range check!!!) \end{DoxyCompactList}\item 
\hypertarget{a00988_a1b2076a67400fc72053bb37001260444}{const Point \& \hyperlink{a00988_a1b2076a67400fc72053bb37001260444}{back} () const }\label{a00988_a1b2076a67400fc72053bb37001260444}

\begin{DoxyCompactList}\small\item\em Get last point of the polyline ( no range check!!!) \end{DoxyCompactList}\item 
\hypertarget{a00988_ac152b23f3f0849bae43fe0db6f1e4efa}{Point \hyperlink{a00988_ac152b23f3f0849bae43fe0db6f1e4efa}{edge\+\_\+vector} (unsigned int \+\_\+i) const }\label{a00988_ac152b23f3f0849bae43fe0db6f1e4efa}

\begin{DoxyCompactList}\small\item\em get the i-\/th oriented edge vector \end{DoxyCompactList}\item 
Scalar \hyperlink{a00988_aee35e16abb66578bd756f3cef58b540c}{length} () const 
\begin{DoxyCompactList}\small\item\em Compute the length of the polyline (in future cached method) \end{DoxyCompactList}\item 
Point \hyperlink{a00988_ae0226c01a1f847e26fa49ab124f430e6}{position} (const Scalar \+\_\+t) const 
\begin{DoxyCompactList}\small\item\em Provide linear paremterization of the polyline in \mbox{[}0,1\mbox{]}. \end{DoxyCompactList}\item 
Point \hyperlink{a00988_a66f98a69c112b95a888efd64dedad0e9}{position\+\_\+arclength} (const Scalar \+\_\+t) const 
\begin{DoxyCompactList}\small\item\em Same as position but with an arclength parameterization in \mbox{[}0,\hyperlink{a00988_aee35e16abb66578bd756f3cef58b540c}{length()}\mbox{]}. \end{DoxyCompactList}\item 
void \hyperlink{a00988_a8f555970037dab39734debb889fed126}{resample\+\_\+arclength\+\_\+uniform} (const unsigned int \+\_\+n)
\begin{DoxyCompactList}\small\item\em Perform an uniform arclength resampling while maintaining the start and end point. \end{DoxyCompactList}\item 
void \hyperlink{a00988_acc204b0dcc95d8edd64d1f4f16b424ee}{subdivide} (Scalar \+\_\+largest)
\begin{DoxyCompactList}\small\item\em Subdivide polyline. \end{DoxyCompactList}\item 
void \hyperlink{a00988_aa7b0ae55f9d0ed779a89ef2ffc372c13}{collapse} (Scalar \+\_\+smallest)
\begin{DoxyCompactList}\small\item\em Collapse polyline. \end{DoxyCompactList}\item 
\hypertarget{a00988_abbb61b1f05c683d351b6e1784acd3030}{void \hyperlink{a00988_abbb61b1f05c683d351b6e1784acd3030}{invert} ()}\label{a00988_abbb61b1f05c683d351b6e1784acd3030}

\begin{DoxyCompactList}\small\item\em Invert polyline that first vertex becomes last. \end{DoxyCompactList}\item 
\hypertarget{a00988_aeef8f48da621efe6977c31933c50b8e2}{void \hyperlink{a00988_aeef8f48da621efe6977c31933c50b8e2}{append} (const \hyperlink{a00988}{Poly\+Line\+T}$<$ Point\+T $>$ \&\+\_\+pl)}\label{a00988_aeef8f48da621efe6977c31933c50b8e2}

\begin{DoxyCompactList}\small\item\em Append second polyline \+\_\+pl to this one. \end{DoxyCompactList}\item 
\hypertarget{a00988_ab7cf959eb901164d53c8ebbc1b3b0ee6}{void \hyperlink{a00988_ab7cf959eb901164d53c8ebbc1b3b0ee6}{prepend} (const \hyperlink{a00988}{Poly\+Line\+T}$<$ Point\+T $>$ \&\+\_\+pl)}\label{a00988_ab7cf959eb901164d53c8ebbc1b3b0ee6}

\begin{DoxyCompactList}\small\item\em Prepend second polyline \+\_\+pl to polyline. \end{DoxyCompactList}\item 
void \hyperlink{a00988_a074fdffe888db65d60199a455602c41a}{split\+\_\+closed} (unsigned int \+\_\+split\+\_\+idx)
\begin{DoxyCompactList}\small\item\em Split closed polyline at vertex with index \+\_\+split\+\_\+idx. \end{DoxyCompactList}\item 
void \hyperlink{a00988_acda9e80a724c2796fe337cab0cddf6b8}{split} (unsigned int \+\_\+split\+\_\+idx, \hyperlink{a00988}{Poly\+Line\+T}$<$ Point\+T $>$ \&\+\_\+new\+\_\+pl)
\begin{DoxyCompactList}\small\item\em Split closed polyline at vertex with index \+\_\+split\+\_\+idx. \end{DoxyCompactList}\item 
void \hyperlink{a00988_a59d31b0ff2a819b1be6a7b7e87940124}{remove\+\_\+subsequent\+\_\+identical\+\_\+points} (const bool \+\_\+keep\+\_\+edge\+\_\+vertices=false, const double \+\_\+epsilon=1e-\/6)
\begin{DoxyCompactList}\small\item\em remove points which are subsequent and lie at the same position \end{DoxyCompactList}\item 
\hypertarget{a00988_a10c584696f3c1f61adcf30e890ecdeb0}{void \hyperlink{a00988_a10c584696f3c1f61adcf30e890ecdeb0}{smooth\+\_\+uniform\+\_\+laplace} ()}\label{a00988_a10c584696f3c1f61adcf30e890ecdeb0}

\begin{DoxyCompactList}\small\item\em Laplacian smoothing. \end{DoxyCompactList}\item 
\hypertarget{a00988_ab32216f5a58981d02bfde3d762e987ed}{void \hyperlink{a00988_ab32216f5a58981d02bfde3d762e987ed}{smooth\+\_\+uniform\+\_\+laplace2} ()}\label{a00988_ab32216f5a58981d02bfde3d762e987ed}

\begin{DoxyCompactList}\small\item\em Squared laplacian smoothing. \end{DoxyCompactList}\item 
\hypertarget{a00988_ac91ddc400c80d15ca790b00790ab24a1}{void \hyperlink{a00988_ac91ddc400c80d15ca790b00790ab24a1}{smooth\+\_\+uniform\+\_\+laplace3} ()}\label{a00988_ac91ddc400c80d15ca790b00790ab24a1}

\begin{DoxyCompactList}\small\item\em Cubic laplacian smoothing. \end{DoxyCompactList}\item 
\hypertarget{a00988_ae4e4a7bcb198bc4ba1143b075903fcf6}{void \hyperlink{a00988_ae4e4a7bcb198bc4ba1143b075903fcf6}{set\+\_\+to\+\_\+circle} (const Point\+T \+\_\+center, const Point\+T \+\_\+normal, double \+\_\+radius, unsigned int \+\_\+n\+\_\+samples=100)}\label{a00988_ae4e4a7bcb198bc4ba1143b075903fcf6}

\begin{DoxyCompactList}\small\item\em creating a circle with center \+\_\+center and radius \+\_\+radius lying in tangent plane specified by \+\_\+normal \end{DoxyCompactList}\item 
{\footnotesize template$<$class Mesh\+T , class Spatial\+Search\+T $>$ }\\void \hyperlink{a00988_abe2a308364a224740873d64fa95d4b63}{project\+\_\+to\+\_\+mesh} (const Mesh\+T \&\+\_\+mesh, Spatial\+Search\+T $\ast$\+\_\+ssearch=0)
\begin{DoxyCompactList}\small\item\em Project polyline points to nearest surface points (use spatial search!!!) \end{DoxyCompactList}\item 
{\footnotesize template$<$class Mesh\+T , class Spatial\+Search\+T $>$ }\\void \hyperlink{a00988_a2ede094625b39b33d6462a3b32659db4}{project\+\_\+to\+\_\+mesh} (const std\+::vector$<$ Mesh\+T $\ast$ $>$ \&\+\_\+mesh, std\+::vector$<$ Spatial\+Search\+T $\ast$ $>$ $\ast$\+\_\+ssearch=0)
\begin{DoxyCompactList}\small\item\em Project polyline points to nearest surface points (use spatial search!!!) \end{DoxyCompactList}\item 
{\footnotesize template$<$class Mesh\+T , class Spatial\+Search\+T $>$ }\\bool \hyperlink{a00988_a16680cb23a78c9f0295e3a8d73dd40e6}{on\+\_\+multiple\+\_\+components} (Mesh\+T \&\+\_\+mesh, Spatial\+Search\+T \&\+\_\+ssearch)
\item 
{\footnotesize template$<$class Mesh\+T , class Spatial\+Search\+T $>$ }\\void \hyperlink{a00988_af41de493da0fba49b2050d1090bfcf32}{split\+\_\+into\+\_\+one\+\_\+per\+\_\+component} (Mesh\+T \&\+\_\+mesh, Spatial\+Search\+T \&\+\_\+ssearch, std\+::vector$<$ \hyperlink{a00988}{Poly\+Line\+T} $>$ \&out\+\_\+polylines)
\item 
Scalar \hyperlink{a00988_aea99fa239d2a436a737d6caeada0d99c}{total\+\_\+gaussian\+\_\+curvature} ()
\begin{DoxyCompactList}\small\item\em compute total gaussian curvature of enclosed surface (via Gauss-\/\+Bonnet) \end{DoxyCompactList}\item 
{\footnotesize template$<$class Line\+Node\+T $>$ }\\Line\+Node\+T $\ast$ \hyperlink{a00988_a4a2d038bfb814c981e8cfc3b8a356e12}{get\+\_\+line\+\_\+node} (Line\+Node\+T $\ast$\&\+\_\+line\+\_\+node, int \+\_\+mode=0)
\begin{DoxyCompactList}\small\item\em Conversion Poly\+Line $<$-\/$>$ Line\+Node. \end{DoxyCompactList}\item 
{\footnotesize template$<$class Line\+Node\+T $>$ }\\void \hyperlink{a00988_adc71a5d54493b7609ce336d4afa4e4a9}{set\+\_\+line\+\_\+node} (Line\+Node\+T $\ast$\&\+\_\+line\+\_\+node, int \+\_\+mode=0)
\begin{DoxyCompactList}\small\item\em Takes a line node and sets the points of this polyline to the points of the node. \end{DoxyCompactList}\item 
\hypertarget{a00988_a25ea3640e5d89c564fac7ba69487132a}{void \hyperlink{a00988_a25ea3640e5d89c564fac7ba69487132a}{print} () const }\label{a00988_a25ea3640e5d89c564fac7ba69487132a}

\begin{DoxyCompactList}\small\item\em \hyperlink{a01015}{Print} information string to cerr. \end{DoxyCompactList}\item 
\hypertarget{a00988_a06e686362d1ac56a060f70b931cc70e2}{Scalar \hyperlink{a00988_a06e686362d1ac56a060f70b931cc70e2}{vertex\+\_\+radius} () const }\label{a00988_a06e686362d1ac56a060f70b931cc70e2}

\begin{DoxyCompactList}\small\item\em get ball-\/radius of vertices \end{DoxyCompactList}\item 
\hypertarget{a00988_a86d66c1dd38af63e0b152158d080afac}{void \hyperlink{a00988_a86d66c1dd38af63e0b152158d080afac}{set\+\_\+vertex\+\_\+radius} (const Scalar \+\_\+r)}\label{a00988_a86d66c1dd38af63e0b152158d080afac}

\begin{DoxyCompactList}\small\item\em set ball-\/radius of vertices \end{DoxyCompactList}\item 
\hypertarget{a00988_a8d1b1fc91f3a7c8d3b3db65c82e2d38e}{Scalar \hyperlink{a00988_a8d1b1fc91f3a7c8d3b3db65c82e2d38e}{edge\+\_\+radius} () const }\label{a00988_a8d1b1fc91f3a7c8d3b3db65c82e2d38e}

\begin{DoxyCompactList}\small\item\em get cylinder-\/radius of edges \end{DoxyCompactList}\item 
\hypertarget{a00988_ab1b72a5bbf8e256f3cf43df69ba01790}{void \hyperlink{a00988_ab1b72a5bbf8e256f3cf43df69ba01790}{set\+\_\+edge\+\_\+radius} (const Scalar \+\_\+r)}\label{a00988_ab1b72a5bbf8e256f3cf43df69ba01790}

\begin{DoxyCompactList}\small\item\em set cylinder-\/radius of edges \end{DoxyCompactList}\item 
\hypertarget{a00988_ab478ab1ddef2862104d3139815934d1b}{void {\bfseries request\+\_\+vertex\+\_\+normals} ()}\label{a00988_ab478ab1ddef2862104d3139815934d1b}

\item 
\hypertarget{a00988_a05588e79dafe58312c3c2a6f815a859a}{void {\bfseries request\+\_\+vertex\+\_\+binormals} ()}\label{a00988_a05588e79dafe58312c3c2a6f815a859a}

\item 
\hypertarget{a00988_a32d13f182493033596973f8b6a4d5d00}{void {\bfseries request\+\_\+vertex\+\_\+colors} ()}\label{a00988_a32d13f182493033596973f8b6a4d5d00}

\item 
\hypertarget{a00988_a88060ceb86b30437d98bf00ef1e4e557}{void {\bfseries request\+\_\+vertex\+\_\+scalars} ()}\label{a00988_a88060ceb86b30437d98bf00ef1e4e557}

\item 
\hypertarget{a00988_a146e8c2cc06108262165daadb88f2de6}{void {\bfseries request\+\_\+vertex\+\_\+selections} ()}\label{a00988_a146e8c2cc06108262165daadb88f2de6}

\item 
\hypertarget{a00988_a805f3e1480a83bec2afd7931d1096dd8}{void {\bfseries request\+\_\+vertex\+\_\+vhandles} ()}\label{a00988_a805f3e1480a83bec2afd7931d1096dd8}

\item 
\hypertarget{a00988_a8548f209472cd4a75b0cf265d0d9a88c}{void {\bfseries request\+\_\+vertex\+\_\+ehandles} ()}\label{a00988_a8548f209472cd4a75b0cf265d0d9a88c}

\item 
\hypertarget{a00988_a3cba92dd94a0357fde637e6b4948a859}{void {\bfseries request\+\_\+vertex\+\_\+fhandles} ()}\label{a00988_a3cba92dd94a0357fde637e6b4948a859}

\item 
\hypertarget{a00988_ab53aa42cf1b76cc52c865c1cfd4a5aee}{void {\bfseries request\+\_\+edge\+\_\+normals} ()}\label{a00988_ab53aa42cf1b76cc52c865c1cfd4a5aee}

\item 
\hypertarget{a00988_a517513b5018bc8d7e1b83e68ede3a272}{void {\bfseries request\+\_\+edge\+\_\+colors} ()}\label{a00988_a517513b5018bc8d7e1b83e68ede3a272}

\item 
\hypertarget{a00988_a83106ed3f47e7e9cb443dea7872073d9}{void {\bfseries request\+\_\+edge\+\_\+scalars} ()}\label{a00988_a83106ed3f47e7e9cb443dea7872073d9}

\item 
\hypertarget{a00988_a00ed7d789f6b8ecf3810c856df4c8ab0}{void {\bfseries request\+\_\+edge\+\_\+selections} ()}\label{a00988_a00ed7d789f6b8ecf3810c856df4c8ab0}

\item 
\hypertarget{a00988_a678c792a6ca8c616342514ae67ae4f54}{void {\bfseries request\+\_\+preimage\+\_\+directions} ()}\label{a00988_a678c792a6ca8c616342514ae67ae4f54}

\item 
\hypertarget{a00988_aeb0418cc478741a7068de08056566a4e}{void {\bfseries release\+\_\+vertex\+\_\+normals} ()}\label{a00988_aeb0418cc478741a7068de08056566a4e}

\item 
\hypertarget{a00988_af9081b616c44c252efff027721b272cd}{void {\bfseries release\+\_\+vertex\+\_\+binormals} ()}\label{a00988_af9081b616c44c252efff027721b272cd}

\item 
\hypertarget{a00988_a4c2a4244b9f3febec2812f4c636dfdc2}{void {\bfseries release\+\_\+vertex\+\_\+colors} ()}\label{a00988_a4c2a4244b9f3febec2812f4c636dfdc2}

\item 
\hypertarget{a00988_a20800ce0f99bbcd98ed7573ed11be7ee}{void {\bfseries release\+\_\+vertex\+\_\+scalars} ()}\label{a00988_a20800ce0f99bbcd98ed7573ed11be7ee}

\item 
\hypertarget{a00988_a3e7fd5fa609eb12067deefd564d3fcef}{void {\bfseries release\+\_\+vertex\+\_\+selections} ()}\label{a00988_a3e7fd5fa609eb12067deefd564d3fcef}

\item 
\hypertarget{a00988_a3c58c67535276b85e43755b175193507}{void {\bfseries release\+\_\+vertex\+\_\+vhandles} ()}\label{a00988_a3c58c67535276b85e43755b175193507}

\item 
\hypertarget{a00988_ae944428f37ca6ada832042290ecb3c99}{void {\bfseries release\+\_\+vertex\+\_\+ehandles} ()}\label{a00988_ae944428f37ca6ada832042290ecb3c99}

\item 
\hypertarget{a00988_adf840b939c15331501ff300940eea7f7}{void {\bfseries release\+\_\+vertex\+\_\+fhandles} ()}\label{a00988_adf840b939c15331501ff300940eea7f7}

\item 
\hypertarget{a00988_a4103446957fa485b21a895987381f4f2}{void {\bfseries release\+\_\+edge\+\_\+normals} ()}\label{a00988_a4103446957fa485b21a895987381f4f2}

\item 
\hypertarget{a00988_a143f6288b29546e4de74cf5928f7072d}{void {\bfseries release\+\_\+edge\+\_\+colors} ()}\label{a00988_a143f6288b29546e4de74cf5928f7072d}

\item 
\hypertarget{a00988_a2974cf3aebab44e186de86b2113409dc}{void {\bfseries release\+\_\+edge\+\_\+scalars} ()}\label{a00988_a2974cf3aebab44e186de86b2113409dc}

\item 
\hypertarget{a00988_a9d9bb8145d29642b90c609dfba51337e}{void {\bfseries release\+\_\+edge\+\_\+selections} ()}\label{a00988_a9d9bb8145d29642b90c609dfba51337e}

\item 
\hypertarget{a00988_a14e174273db5c3d2457e316d8fb226a9}{void {\bfseries release\+\_\+preimage\+\_\+directions} ()}\label{a00988_a14e174273db5c3d2457e316d8fb226a9}

\item 
\hypertarget{a00988_aaf95617f6e0cfc13d9bfcbc077646dad}{bool {\bfseries vertex\+\_\+normals\+\_\+available} () const }\label{a00988_aaf95617f6e0cfc13d9bfcbc077646dad}

\item 
\hypertarget{a00988_a36fcce8e965a1e276ee5d4d672e9e6a1}{bool {\bfseries vertex\+\_\+binormals\+\_\+available} () const }\label{a00988_a36fcce8e965a1e276ee5d4d672e9e6a1}

\item 
\hypertarget{a00988_ae9807489ed473dd304f8451c44cfba2a}{bool {\bfseries vertex\+\_\+colors\+\_\+available} () const }\label{a00988_ae9807489ed473dd304f8451c44cfba2a}

\item 
\hypertarget{a00988_af0527b9fdc7eb13b684b9c10951bb696}{bool {\bfseries vertex\+\_\+scalars\+\_\+available} () const }\label{a00988_af0527b9fdc7eb13b684b9c10951bb696}

\item 
\hypertarget{a00988_ac7023edf899155bc7e897d89acacc8b5}{bool {\bfseries vertex\+\_\+selections\+\_\+available} () const }\label{a00988_ac7023edf899155bc7e897d89acacc8b5}

\item 
\hypertarget{a00988_a8b083c7654f323ceb96f799a530639e4}{bool {\bfseries vertex\+\_\+vhandles\+\_\+available} () const }\label{a00988_a8b083c7654f323ceb96f799a530639e4}

\item 
\hypertarget{a00988_aedabb28e9d24ce01e20de8ea966bf0e5}{bool {\bfseries vertex\+\_\+ehandles\+\_\+available} () const }\label{a00988_aedabb28e9d24ce01e20de8ea966bf0e5}

\item 
\hypertarget{a00988_a7f03105210dce3c3602b18f4336a3437}{bool {\bfseries vertex\+\_\+fhandles\+\_\+available} () const }\label{a00988_a7f03105210dce3c3602b18f4336a3437}

\item 
\hypertarget{a00988_a66c64478598489085541dfdc5498832a}{bool {\bfseries edge\+\_\+normals\+\_\+available} () const }\label{a00988_a66c64478598489085541dfdc5498832a}

\item 
\hypertarget{a00988_a0b48efb996fe7ff887b555a169a92969}{bool {\bfseries edge\+\_\+colors\+\_\+available} () const }\label{a00988_a0b48efb996fe7ff887b555a169a92969}

\item 
\hypertarget{a00988_a53294e22843e8b9f7e0432525b411a24}{bool {\bfseries edge\+\_\+scalars\+\_\+available} () const }\label{a00988_a53294e22843e8b9f7e0432525b411a24}

\item 
\hypertarget{a00988_aac19d1f14b07463603e8f56f2f1267b4}{bool {\bfseries edge\+\_\+selections\+\_\+available} () const }\label{a00988_aac19d1f14b07463603e8f56f2f1267b4}

\item 
\hypertarget{a00988_a3d3777c38cca67dd2a64382c039dd121}{bool {\bfseries edge\+\_\+preimage\+\_\+directions\+\_\+available} () const }\label{a00988_a3d3777c38cca67dd2a64382c039dd121}

\item 
\hypertarget{a00988_a2f95e4c9b3c37366cb2bf0a1916c1a67}{Point \& {\bfseries vertex\+\_\+normal} (unsigned int \+\_\+i)}\label{a00988_a2f95e4c9b3c37366cb2bf0a1916c1a67}

\item 
\hypertarget{a00988_a216d16db10851fcecb0c28e08ed88d90}{const Point \& {\bfseries vertex\+\_\+normal} (unsigned int \+\_\+i) const }\label{a00988_a216d16db10851fcecb0c28e08ed88d90}

\item 
\hypertarget{a00988_a4e6dd4d8570cdd621cabca05e5513eb1}{Point \& {\bfseries vertex\+\_\+binormal} (unsigned int \+\_\+i)}\label{a00988_a4e6dd4d8570cdd621cabca05e5513eb1}

\item 
\hypertarget{a00988_a0837b9dae907a497a4b0b9e92dce179a}{const Point \& {\bfseries vertex\+\_\+binormal} (unsigned int \+\_\+i) const }\label{a00988_a0837b9dae907a497a4b0b9e92dce179a}

\item 
\hypertarget{a00988_a2679bcfe41099f62cfd356b4a03b4a5b}{Point \& {\bfseries vertex\+\_\+color} (unsigned int \+\_\+i)}\label{a00988_a2679bcfe41099f62cfd356b4a03b4a5b}

\item 
\hypertarget{a00988_ad1c4fbd0b4a15c6c178d21573ad4f51e}{const Point \& {\bfseries vertex\+\_\+color} (unsigned int \+\_\+i) const }\label{a00988_ad1c4fbd0b4a15c6c178d21573ad4f51e}

\item 
\hypertarget{a00988_a03a900a5d62d43fd8e99f48520f01603}{Scalar \& {\bfseries vertex\+\_\+scalar} (unsigned int \+\_\+i)}\label{a00988_a03a900a5d62d43fd8e99f48520f01603}

\item 
\hypertarget{a00988_a2d16235f9fff0e39b2d9c8e41862853a}{const Scalar \& {\bfseries vertex\+\_\+scalar} (unsigned int \+\_\+i) const }\label{a00988_a2d16235f9fff0e39b2d9c8e41862853a}

\item 
\hypertarget{a00988_adc5196ded5dbaa521e3b44639e6cacee}{unsigned char \& {\bfseries vertex\+\_\+selection} (unsigned int \+\_\+i)}\label{a00988_adc5196ded5dbaa521e3b44639e6cacee}

\item 
\hypertarget{a00988_af9cb38af4906101c8779e210c1bf45eb}{const unsigned char \& {\bfseries vertex\+\_\+selection} (unsigned int \+\_\+i) const }\label{a00988_af9cb38af4906101c8779e210c1bf45eb}

\item 
\hypertarget{a00988_aae94169c3fb2e1b8ae33560efa5c6875}{int \& {\bfseries vertex\+\_\+vhandle} (unsigned int \+\_\+i)}\label{a00988_aae94169c3fb2e1b8ae33560efa5c6875}

\item 
\hypertarget{a00988_a5b3455ee88e5e95b5b5e19759389d968}{const int \& {\bfseries vertex\+\_\+vhandle} (unsigned int \+\_\+i) const }\label{a00988_a5b3455ee88e5e95b5b5e19759389d968}

\item 
\hypertarget{a00988_ae750fe7305ab59e7578ca294cd7ce0e2}{int \& {\bfseries vertex\+\_\+ehandle} (unsigned int \+\_\+i)}\label{a00988_ae750fe7305ab59e7578ca294cd7ce0e2}

\item 
\hypertarget{a00988_a8c625d8d537f1c8189510100ad36d698}{const int \& {\bfseries vertex\+\_\+ehandle} (unsigned int \+\_\+i) const }\label{a00988_a8c625d8d537f1c8189510100ad36d698}

\item 
\hypertarget{a00988_adf013041f02777e96006036ac9bedbc4}{int \& {\bfseries vertex\+\_\+fhandle} (unsigned int \+\_\+i)}\label{a00988_adf013041f02777e96006036ac9bedbc4}

\item 
\hypertarget{a00988_ab66b4be2bc4b6416fd0f98a685f2d5a0}{const int \& {\bfseries vertex\+\_\+fhandle} (unsigned int \+\_\+i) const }\label{a00988_ab66b4be2bc4b6416fd0f98a685f2d5a0}

\item 
\hypertarget{a00988_a04853f0ca8d99bf4bfae45b113619567}{Point \& {\bfseries edge\+\_\+normal} (unsigned int \+\_\+i)}\label{a00988_a04853f0ca8d99bf4bfae45b113619567}

\item 
\hypertarget{a00988_adbc12c6c3298340ff685b5e4940f7478}{const Point \& {\bfseries edge\+\_\+normal} (unsigned int \+\_\+i) const }\label{a00988_adbc12c6c3298340ff685b5e4940f7478}

\item 
\hypertarget{a00988_ad2b7eb255dff5dbe4a28f6e9f4fe7991}{Point \& {\bfseries edge\+\_\+color} (unsigned int \+\_\+i)}\label{a00988_ad2b7eb255dff5dbe4a28f6e9f4fe7991}

\item 
\hypertarget{a00988_a3988c5a68e8ac403179c82e0720ed246}{const Point \& {\bfseries edge\+\_\+color} (unsigned int \+\_\+i) const }\label{a00988_a3988c5a68e8ac403179c82e0720ed246}

\item 
\hypertarget{a00988_a6638166e80421b134ea99f68b8755509}{Scalar \& {\bfseries edge\+\_\+scalar} (unsigned int \+\_\+i)}\label{a00988_a6638166e80421b134ea99f68b8755509}

\item 
\hypertarget{a00988_aeab87bb28480be82329687e397f3ab65}{const Scalar \& {\bfseries edge\+\_\+scalar} (unsigned int \+\_\+i) const }\label{a00988_aeab87bb28480be82329687e397f3ab65}

\item 
\hypertarget{a00988_a95426f4794f4f8c15337d151c8215c56}{unsigned char \& {\bfseries edge\+\_\+selection} (unsigned int \+\_\+i)}\label{a00988_a95426f4794f4f8c15337d151c8215c56}

\item 
\hypertarget{a00988_a6e58863dcdabc499078dce0ff740ae7b}{const unsigned char \& {\bfseries edge\+\_\+selection} (unsigned int \+\_\+i) const }\label{a00988_a6e58863dcdabc499078dce0ff740ae7b}

\item 
\hypertarget{a00988_ad2b42d38239f4d131cb6b9744c79ce70}{Point \& {\bfseries preimage\+\_\+direction} (unsigned int \+\_\+i)}\label{a00988_ad2b42d38239f4d131cb6b9744c79ce70}

\item 
\hypertarget{a00988_aa9cb837b74fccb2de7cc9167820c838c}{const Point \& {\bfseries preimage\+\_\+direction} (unsigned int \+\_\+i) const }\label{a00988_aa9cb837b74fccb2de7cc9167820c838c}

\item 
\hypertarget{a00988_ac8187ac4fda252a8331e8265ec2f31cc}{Custom\+Property\+Handle {\bfseries request\+\_\+custom\+\_\+property} (const std\+::string \&\+\_\+name, unsigned int \+\_\+prop\+\_\+size)}\label{a00988_ac8187ac4fda252a8331e8265ec2f31cc}

\item 
\hypertarget{a00988_a579daf04a4579859259471a7ea422c73}{void {\bfseries release\+\_\+custom\+\_\+property} (const std\+::string \&\+\_\+name)}\label{a00988_a579daf04a4579859259471a7ea422c73}

\item 
\hypertarget{a00988_a4eb10a6fbe1f8eff84693db9df093041}{void {\bfseries release\+\_\+custom\+\_\+property} (Custom\+Property\+Handle \+\_\+prop\+\_\+handle)}\label{a00988_a4eb10a6fbe1f8eff84693db9df093041}

\item 
\hypertarget{a00988_a09af17079fec5f61f4a434c8e7bf4611}{bool {\bfseries custom\+\_\+property\+\_\+available} (Custom\+Property\+Handle \+\_\+property\+\_\+handle) const }\label{a00988_a09af17079fec5f61f4a434c8e7bf4611}

\item 
\hypertarget{a00988_aad208149d4af1200e4bd272cf5add3ea}{bool {\bfseries custom\+\_\+property\+\_\+available} (const std\+::string \&\+\_\+name) const }\label{a00988_aad208149d4af1200e4bd272cf5add3ea}

\item 
\hypertarget{a00988_a2154abf9817af9d5b4ec846f17de65e3}{void {\bfseries set\+\_\+custom\+\_\+property} (Custom\+Property\+Handle \+\_\+property\+\_\+handle, unsigned int \+\_\+vertex, const void $\ast$\+\_\+data)}\label{a00988_a2154abf9817af9d5b4ec846f17de65e3}

\item 
\hypertarget{a00988_a0cf81a01e7bb0891d5b06db2574a56c8}{void {\bfseries get\+\_\+custom\+\_\+property} (Custom\+Property\+Handle \+\_\+property\+\_\+handle, unsigned int \+\_\+vertex, void $\ast$\+\_\+dst) const }\label{a00988_a0cf81a01e7bb0891d5b06db2574a56c8}

\item 
\hypertarget{a00988_a66eb380cfa5fe2b60cec6c4f43587147}{void {\bfseries set\+\_\+custom\+\_\+property} (const std\+::string \&\+\_\+name, unsigned int \+\_\+vertex, const void $\ast$\+\_\+data)}\label{a00988_a66eb380cfa5fe2b60cec6c4f43587147}

\item 
\hypertarget{a00988_aec1d08f77184a53ac61269efd391c2bf}{void {\bfseries get\+\_\+custom\+\_\+property} (const std\+::string \&\+\_\+name, unsigned int \+\_\+vertex, void $\ast$\+\_\+dst) const }\label{a00988_aec1d08f77184a53ac61269efd391c2bf}

\item 
void \hyperlink{a00988_a3eb4fd2d772b5677ba61d487cd4182af}{bind\+\_\+custom\+\_\+property\+\_\+to\+\_\+shader} (Custom\+Property\+Handle \+\_\+property\+\_\+handle, const std\+::string \&\+\_\+shader\+\_\+input\+\_\+name, unsigned int \+\_\+datatype)
\begin{DoxyCompactList}\small\item\em Binding to vertex shader (optional) \end{DoxyCompactList}\item 
bool \hyperlink{a00988_a4d4851c589ab59e90b3a3fa379acb079}{get\+\_\+custom\+\_\+property\+\_\+shader\+\_\+binding} (Custom\+Property\+Handle \+\_\+property\+\_\+handle, unsigned int $\ast$\+\_\+propsize, const char $\ast$$\ast$\+\_\+input\+\_\+name, unsigned int $\ast$\+\_\+datatype) const 
\begin{DoxyCompactList}\small\item\em Get shader binding information. \end{DoxyCompactList}\item 
\hypertarget{a00988_a0ca357b635c908b9ccee3abad7edb3bf}{Custom\+Property\+Handle {\bfseries get\+\_\+custom\+\_\+property\+\_\+handle} (const std\+::string \&\+\_\+name) const }\label{a00988_a0ca357b635c908b9ccee3abad7edb3bf}

\item 
\hypertarget{a00988_a7e2e252d770507009f425092026cf0dd}{const std\+::string {\bfseries get\+\_\+custom\+\_\+property\+\_\+name} (Custom\+Property\+Handle \+\_\+property\+\_\+handle) const }\label{a00988_a7e2e252d770507009f425092026cf0dd}

\item 
\hypertarget{a00988_a0b8e1aa50819e7c2824367e6fceeec8f}{unsigned int {\bfseries get\+\_\+num\+\_\+custom\+\_\+properties} () const }\label{a00988_a0b8e1aa50819e7c2824367e6fceeec8f}

\item 
\hypertarget{a00988_a6a886326d9b2c4e8417648527b5105ec}{const void $\ast$ {\bfseries get\+\_\+custom\+\_\+property\+\_\+buffer} (Custom\+Property\+Handle \+\_\+property\+\_\+handle) const }\label{a00988_a6a886326d9b2c4e8417648527b5105ec}

\item 
\hypertarget{a00988_a674477988ee997138ed074eaddef2a99}{Custom\+Property\+Handle {\bfseries enumerate\+\_\+custom\+\_\+property\+\_\+handles} (unsigned int \+\_\+i) const }\label{a00988_a674477988ee997138ed074eaddef2a99}

\item 
\hypertarget{a00988_a7bdcbf9b60746c12e3fe2d0c17756dd5}{bool {\bfseries vertex\+\_\+selected} (unsigned int \+\_\+i)}\label{a00988_a7bdcbf9b60746c12e3fe2d0c17756dd5}

\item 
\hypertarget{a00988_a9cc719f3d24ae77a0deb83e63bc387be}{bool {\bfseries edge\+\_\+selected} (unsigned int \+\_\+i)}\label{a00988_a9cc719f3d24ae77a0deb83e63bc387be}

\item 
\hypertarget{a00988_a3e659b5117d52e8f36ed2581b8b7136c}{void {\bfseries select\+\_\+vertex} (unsigned int \+\_\+i)}\label{a00988_a3e659b5117d52e8f36ed2581b8b7136c}

\item 
\hypertarget{a00988_a08b85c07a27539e7144a5724b45061d1}{void {\bfseries select\+\_\+edge} (unsigned int \+\_\+i)}\label{a00988_a08b85c07a27539e7144a5724b45061d1}

\item 
\hypertarget{a00988_ae70fe808b69b58baf0ac2d7ca0ecaf23}{void {\bfseries deselect\+\_\+vertex} (unsigned int \+\_\+i)}\label{a00988_ae70fe808b69b58baf0ac2d7ca0ecaf23}

\item 
\hypertarget{a00988_a1bd55ae4a18bdd4f7bf6f322b1bb8f07}{void {\bfseries deselect\+\_\+edge} (unsigned int \+\_\+i)}\label{a00988_a1bd55ae4a18bdd4f7bf6f322b1bb8f07}

\item 
\hypertarget{a00988_a4198907df058864e993d2a4f4c26a94f}{void {\bfseries copy\+\_\+vertex\+\_\+complete} (const \hyperlink{a00988}{Poly\+Line\+T}$<$ Point\+T $>$ \&\+\_\+pl, unsigned int \+\_\+i, unsigned int \+\_\+j)}\label{a00988_a4198907df058864e993d2a4f4c26a94f}

\item 
\hypertarget{a00988_aad7a6ddf30b1f6aa4f0754896296432d}{void {\bfseries copy\+\_\+edge\+\_\+complete} (const \hyperlink{a00988}{Poly\+Line\+T}$<$ Point\+T $>$ \&\+\_\+pl, unsigned int \+\_\+i, unsigned int \+\_\+j)}\label{a00988_aad7a6ddf30b1f6aa4f0754896296432d}

\end{DoxyCompactItemize}
\subsection*{Private Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00988_a0cf37514ca5e15e04f018fc9a236a4ef}{typedef std\+::map$<$ std\+::string, \\*
\hyperlink{a00471}{Custom\+Property} $\ast$ $>$ {\bfseries Custom\+Property\+Map}}\label{a00988_a0cf37514ca5e15e04f018fc9a236a4ef}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$class Mesh\+T , class Spatial\+Search\+T $>$ }\\Point \hyperlink{a00988_a6320841026e4ce51e9f47ac2ddf8ff00}{find\+\_\+nearest\+\_\+point} (const Mesh\+T \&\+\_\+mesh, const Point \&\+\_\+point, typename Mesh\+T\+::\+Face\+Handle \&\+\_\+fh, Spatial\+Search\+T $\ast$\+\_\+ssearch=0, double $\ast$\+\_\+dbest=0)
\item 
{\footnotesize template$<$class Mesh\+T , class Spatial\+Search\+T $>$ }\\unsigned int \hyperlink{a00988_a664eef30d8ffd9c755adeae54c34e79b}{component\+\_\+of} (const \hyperlink{a01035}{Open\+Mesh\+::\+Property\+Manager}$<$ \hyperlink{a00598}{Open\+Mesh\+::\+F\+Prop\+Handle\+T}$<$ unsigned int $>$, Mesh\+T $>$ \&component, const Point\+T \&pt, Spatial\+Search\+T \&\+\_\+ssearch)
\item 
{\footnotesize template$<$class Mesh\+T $>$ }\\void \hyperlink{a00988_a45c46293b7f5f8580db9d6f6a8a545f6}{mark\+\_\+components} (\hyperlink{a01035}{Open\+Mesh\+::\+Property\+Manager}$<$ \hyperlink{a00598}{Open\+Mesh\+::\+F\+Prop\+Handle\+T}$<$ unsigned int $>$, Mesh\+T $>$ \&component)
\item 
\hypertarget{a00988_ab5988f3995284a73627e36cd4fd1dcd3}{{\footnotesize template$<$class Prop\+T $>$ }\\void {\bfseries request\+\_\+prop} (unsigned int \&\+\_\+ref\+\_\+count, Prop\+T \&\+\_\+prop)}\label{a00988_ab5988f3995284a73627e36cd4fd1dcd3}

\item 
\hypertarget{a00988_ac92e65611200805ca7b30cbb295859a6}{{\footnotesize template$<$class Prop\+T $>$ }\\void {\bfseries release\+\_\+prop} (unsigned int \&\+\_\+ref\+\_\+count, Prop\+T \&\+\_\+prop)}\label{a00988_ac92e65611200805ca7b30cbb295859a6}

\item 
{\footnotesize template$<$class I\+Point $>$ }\\bool \hyperlink{a00988_ae713dc3182cdf290fc0119605e1bd2e1}{plane\+\_\+line\+\_\+intersection} (const I\+Point \&\+\_\+p\+\_\+plane, const I\+Point \&\+\_\+n\+\_\+plane, const I\+Point \&\+\_\+p0, const I\+Point \&\+\_\+p1, I\+Point \&\+\_\+p\+\_\+int)
\item 
\hypertarget{a00988_af1388ea6ab2cc3045f68ffb22f970566}{{\footnotesize template$<$class Mesh\+T $>$ }\\void {\bfseries edge\+\_\+points\+\_\+in\+\_\+segment} (const Mesh\+T \&\+\_\+mesh, const Point \&\+\_\+p0, const Point \&\+\_\+p1, const typename Mesh\+T\+::\+Face\+Handle \+\_\+fh0, const typename Mesh\+T\+::\+Face\+Handle \+\_\+fh1, std\+::vector$<$ Point $>$ \&\+\_\+points, std\+::vector$<$ typename Mesh\+T\+::\+Edge\+Handle $>$ \&\+\_\+ehandles)}\label{a00988_af1388ea6ab2cc3045f68ffb22f970566}

\item 
\hypertarget{a00988_a115c6e5e6bfab7868c64767d9b8870f0}{\hyperlink{a00471}{Custom\+Property} $\ast$ {\bfseries custom\+\_\+prop} (Custom\+Property\+Handle \+\_\+handle)}\label{a00988_a115c6e5e6bfab7868c64767d9b8870f0}

\item 
\hypertarget{a00988_a7c2a181728657ebad8c4d83045255948}{const \hyperlink{a00471}{Custom\+Property} $\ast$ {\bfseries custom\+\_\+prop} (Custom\+Property\+Handle \+\_\+handle) const }\label{a00988_a7c2a181728657ebad8c4d83045255948}

\item 
\hypertarget{a00988_a3ec5f5dc8d5b5ac0c12424d5961d8f32}{Custom\+Property\+Handle {\bfseries custom\+\_\+prop\+\_\+handle} (const \hyperlink{a00471}{Custom\+Property} $\ast$) const }\label{a00988_a3ec5f5dc8d5b5ac0c12424d5961d8f32}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00988_adc9486b0ad8c28b4754ed31222abc03e}{std\+::vector$<$ Point $>$ \hyperlink{a00988_adc9486b0ad8c28b4754ed31222abc03e}{points\+\_\+}}\label{a00988_adc9486b0ad8c28b4754ed31222abc03e}

\begin{DoxyCompactList}\small\item\em List of points in the polyline. \end{DoxyCompactList}\item 
\hypertarget{a00988_ac18f6b49b02a999d7ae25392ec42e265}{bool \hyperlink{a00988_ac18f6b49b02a999d7ae25392ec42e265}{closed\+\_\+}}\label{a00988_ac18f6b49b02a999d7ae25392ec42e265}

\begin{DoxyCompactList}\small\item\em Connect first and last point? \end{DoxyCompactList}\item 
\hypertarget{a00988_ae0dabdd308111f8c2e1a5a03fb9f0573}{Scalar \hyperlink{a00988_ae0dabdd308111f8c2e1a5a03fb9f0573}{vertex\+\_\+radius\+\_\+}}\label{a00988_ae0dabdd308111f8c2e1a5a03fb9f0573}

\begin{DoxyCompactList}\small\item\em ball-\/radius of vertices \end{DoxyCompactList}\item 
\hypertarget{a00988_a104e69cfeac35589b116b17737a6fcb8}{Scalar \hyperlink{a00988_a104e69cfeac35589b116b17737a6fcb8}{edge\+\_\+radius\+\_\+}}\label{a00988_a104e69cfeac35589b116b17737a6fcb8}

\begin{DoxyCompactList}\small\item\em cylinder-\/radius of edges \end{DoxyCompactList}\item 
\hypertarget{a00988_aae267fca806c8a01f82f8a469457ffc7}{std\+::vector$<$ Point $>$ {\bfseries vnormals\+\_\+}}\label{a00988_aae267fca806c8a01f82f8a469457ffc7}

\item 
\hypertarget{a00988_a87cd0ffe27f15286b4a8d3deccc0c9ce}{std\+::vector$<$ Point $>$ {\bfseries vbinormals\+\_\+}}\label{a00988_a87cd0ffe27f15286b4a8d3deccc0c9ce}

\item 
\hypertarget{a00988_ad79b7395473c32c801f4cdf0a9130061}{std\+::vector$<$ Point $>$ {\bfseries vcolors\+\_\+}}\label{a00988_ad79b7395473c32c801f4cdf0a9130061}

\item 
\hypertarget{a00988_ac3bfdd2822fb94eea80e2067937f16a1}{std\+::vector$<$ Scalar $>$ {\bfseries vscalars\+\_\+}}\label{a00988_ac3bfdd2822fb94eea80e2067937f16a1}

\item 
\hypertarget{a00988_ae169d8b875ae84749e36c77cba8e0351}{std\+::vector$<$ unsigned char $>$ {\bfseries vselections\+\_\+}}\label{a00988_ae169d8b875ae84749e36c77cba8e0351}

\item 
\hypertarget{a00988_ad6c5641ce038806bb9247aee3a69ddaa}{std\+::vector$<$ int $>$ {\bfseries vvhandles\+\_\+}}\label{a00988_ad6c5641ce038806bb9247aee3a69ddaa}

\item 
\hypertarget{a00988_ae15fa1782a764c65d8c4bb7f2b767738}{std\+::vector$<$ int $>$ {\bfseries vehandles\+\_\+}}\label{a00988_ae15fa1782a764c65d8c4bb7f2b767738}

\item 
\hypertarget{a00988_a9e387cd24078350b9d645f0819a3e819}{std\+::vector$<$ int $>$ {\bfseries vfhandles\+\_\+}}\label{a00988_a9e387cd24078350b9d645f0819a3e819}

\item 
\hypertarget{a00988_aac2bb34c71bcdbf8390155a153e7695d}{std\+::vector$<$ Point $>$ {\bfseries enormals\+\_\+}}\label{a00988_aac2bb34c71bcdbf8390155a153e7695d}

\item 
\hypertarget{a00988_a0ae0b660b8f846bf180af565a492ff99}{std\+::vector$<$ Point $>$ {\bfseries ecolors\+\_\+}}\label{a00988_a0ae0b660b8f846bf180af565a492ff99}

\item 
\hypertarget{a00988_a376f70a8a170ade5ebde2821dbba2c32}{std\+::vector$<$ Scalar $>$ {\bfseries escalars\+\_\+}}\label{a00988_a376f70a8a170ade5ebde2821dbba2c32}

\item 
\hypertarget{a00988_a32a943ef7d22293993d9e23d5ddf1eca}{std\+::vector$<$ unsigned char $>$ {\bfseries eselections\+\_\+}}\label{a00988_a32a943ef7d22293993d9e23d5ddf1eca}

\item 
\hypertarget{a00988_a0019ce0a561a320fb8467095696c604f}{std\+::vector$<$ Point $>$ {\bfseries epreimage\+\_\+direction\+\_\+}}\label{a00988_a0019ce0a561a320fb8467095696c604f}

\item 
\hypertarget{a00988_a1256efa6b616898f72f577d036783753}{unsigned int {\bfseries ref\+\_\+count\+\_\+vnormals\+\_\+}}\label{a00988_a1256efa6b616898f72f577d036783753}

\item 
\hypertarget{a00988_abeb3759c3ecb9ec3ea10de3d712e8aa7}{unsigned int {\bfseries ref\+\_\+count\+\_\+vbinormals\+\_\+}}\label{a00988_abeb3759c3ecb9ec3ea10de3d712e8aa7}

\item 
\hypertarget{a00988_a03ff003f250a7406d1e246ec412666bc}{unsigned int {\bfseries ref\+\_\+count\+\_\+vcolors\+\_\+}}\label{a00988_a03ff003f250a7406d1e246ec412666bc}

\item 
\hypertarget{a00988_a66d3f006e4678c16043143e0f25622d8}{unsigned int {\bfseries ref\+\_\+count\+\_\+vscalars\+\_\+}}\label{a00988_a66d3f006e4678c16043143e0f25622d8}

\item 
\hypertarget{a00988_a207324a1b156bf06f4e2c9a8c55acdc5}{unsigned int {\bfseries ref\+\_\+count\+\_\+vselections\+\_\+}}\label{a00988_a207324a1b156bf06f4e2c9a8c55acdc5}

\item 
\hypertarget{a00988_afb913456e1dfb6792209af66ca4242a5}{unsigned int {\bfseries ref\+\_\+count\+\_\+vvhandles\+\_\+}}\label{a00988_afb913456e1dfb6792209af66ca4242a5}

\item 
\hypertarget{a00988_ad119549f013cb5d2316921fa42eea05f}{unsigned int {\bfseries ref\+\_\+count\+\_\+vehandles\+\_\+}}\label{a00988_ad119549f013cb5d2316921fa42eea05f}

\item 
\hypertarget{a00988_a7477e051bb02cf6bca46268f4c90a371}{unsigned int {\bfseries ref\+\_\+count\+\_\+vfhandles\+\_\+}}\label{a00988_a7477e051bb02cf6bca46268f4c90a371}

\item 
\hypertarget{a00988_a73cd49368ce69f893b6fb380e5b395cc}{unsigned int {\bfseries ref\+\_\+count\+\_\+enormals\+\_\+}}\label{a00988_a73cd49368ce69f893b6fb380e5b395cc}

\item 
\hypertarget{a00988_a4a2bf37ef299f084e1fcbbdc98bf5db4}{unsigned int {\bfseries ref\+\_\+count\+\_\+ecolors\+\_\+}}\label{a00988_a4a2bf37ef299f084e1fcbbdc98bf5db4}

\item 
\hypertarget{a00988_a7162d06db85020cd6ba1624495d5ccfe}{unsigned int {\bfseries ref\+\_\+count\+\_\+escalars\+\_\+}}\label{a00988_a7162d06db85020cd6ba1624495d5ccfe}

\item 
\hypertarget{a00988_a637738bc4e548209ebdb6f1aab126fd3}{unsigned int {\bfseries ref\+\_\+count\+\_\+eselections\+\_\+}}\label{a00988_a637738bc4e548209ebdb6f1aab126fd3}

\item 
\hypertarget{a00988_a86b3f89e3ec7ec73ab22570ba2e7690f}{unsigned int {\bfseries ref\+\_\+count\+\_\+epreimage\+\_\+direction\+\_\+}}\label{a00988_a86b3f89e3ec7ec73ab22570ba2e7690f}

\item 
\hypertarget{a00988_aad09e7302696cc8019940840945502d7}{Custom\+Property\+Map {\bfseries custom\+\_\+properties}}\label{a00988_aad09e7302696cc8019940840945502d7}

\item 
\hypertarget{a00988_ab9e884ddb643aa4dda3691be420e6758}{std\+::vector$<$ \hyperlink{a00471}{Custom\+Property} $\ast$ $>$ {\bfseries cprop\+\_\+enum}}\label{a00988_ab9e884ddb643aa4dda3691be420e6758}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$class Point\+T$>$class A\+C\+G\+::\+Poly\+Line\+T$<$ Point\+T $>$}

/.../\+Poly\+Line\+T.hh$>$

Brief Description.

A more elaborate description follows. 

Definition at line 90 of file Poly\+Line\+T.\+hh.



\subsection{Member Function Documentation}
\hypertarget{a00988_a3eb4fd2d772b5677ba61d487cd4182af}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!bind\+\_\+custom\+\_\+property\+\_\+to\+\_\+shader@{bind\+\_\+custom\+\_\+property\+\_\+to\+\_\+shader}}
\index{bind\+\_\+custom\+\_\+property\+\_\+to\+\_\+shader@{bind\+\_\+custom\+\_\+property\+\_\+to\+\_\+shader}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{bind\+\_\+custom\+\_\+property\+\_\+to\+\_\+shader}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ void {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::bind\+\_\+custom\+\_\+property\+\_\+to\+\_\+shader (
\begin{DoxyParamCaption}
\item[{Custom\+Property\+Handle}]{\+\_\+property\+\_\+handle, }
\item[{const std\+::string \&}]{\+\_\+shader\+\_\+input\+\_\+name, }
\item[{unsigned int}]{\+\_\+datatype}
\end{DoxyParamCaption}
)}}\label{a00988_a3eb4fd2d772b5677ba61d487cd4182af}


Binding to vertex shader (optional) 

Bind custom vertex properties to input names in vertex shaders. The number of coordinates of a property is assumed to be \+\_\+prop\+\_\+size / bytesize(\+\_\+datatype), so the property size provided via request\+\_\+custom\+\_\+property has to be a multiple of bytesize(\+\_\+datatype).


\begin{DoxyParams}{Parameters}
{\em \+\_\+property\+\_\+handle} & handle of property \\
\hline
{\em \+\_\+shader\+\_\+input\+\_\+name} & name id of input data in the vertex shader \\
\hline
{\em \+\_\+datatype} & type of one property data coordinate, ie G\+L\+\_\+\+F\+L\+O\+A\+T, G\+L\+\_\+\+U\+N\+S\+I\+G\+N\+E\+D\+\_\+\+B\+Y\+T\+E ... \\
\hline
\end{DoxyParams}


Definition at line 2326 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_aa7b0ae55f9d0ed779a89ef2ffc372c13}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!collapse@{collapse}}
\index{collapse@{collapse}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{collapse}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ void {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::collapse (
\begin{DoxyParamCaption}
\item[{Scalar}]{\+\_\+smallest}
\end{DoxyParamCaption}
)}}\label{a00988_aa7b0ae55f9d0ed779a89ef2ffc372c13}


Collapse polyline. 

Collapses segments until the smallest interval in the line is larger than the given value


\begin{DoxyParams}{Parameters}
{\em \+\_\+smallest} & smallest interval length after collapsing \\
\hline
\end{DoxyParams}


Definition at line 672 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_a664eef30d8ffd9c755adeae54c34e79b}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!component\+\_\+of@{component\+\_\+of}}
\index{component\+\_\+of@{component\+\_\+of}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{component\+\_\+of}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T$>$ template$<$class Mesh\+T , class Spatial\+Search\+T $>$ unsigned int {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::component\+\_\+of (
\begin{DoxyParamCaption}
\item[{const {\bf Open\+Mesh\+::\+Property\+Manager}$<$ {\bf Open\+Mesh\+::\+F\+Prop\+Handle\+T}$<$ unsigned int $>$, Mesh\+T $>$ \&}]{component, }
\item[{const Point\+T \&}]{pt, }
\item[{Spatial\+Search\+T \&}]{\+\_\+ssearch}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a00988_a664eef30d8ffd9c755adeae54c34e79b}
Assuming component is a property manager that has been initialized using \hyperlink{a00988_a45c46293b7f5f8580db9d6f6a8a545f6}{mark\+\_\+components()}, return the number of the component of the face pt gets projected to using \+\_\+ssearch. 

Definition at line 1987 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_a6320841026e4ce51e9f47ac2ddf8ff00}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!find\+\_\+nearest\+\_\+point@{find\+\_\+nearest\+\_\+point}}
\index{find\+\_\+nearest\+\_\+point@{find\+\_\+nearest\+\_\+point}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{find\+\_\+nearest\+\_\+point}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ template$<$class Mesh\+T , class Spatial\+Search\+T $>$ {\bf Poly\+Line\+T}$<$ Point\+T $>$\+::Point {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::find\+\_\+nearest\+\_\+point (
\begin{DoxyParamCaption}
\item[{const Mesh\+T \&}]{\+\_\+mesh, }
\item[{const Point \&}]{\+\_\+point, }
\item[{typename Mesh\+T\+::\+Face\+Handle \&}]{\+\_\+fh, }
\item[{Spatial\+Search\+T $\ast$}]{\+\_\+ssearch = {\ttfamily 0}, }
\item[{double $\ast$}]{\+\_\+dbest = {\ttfamily 0}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a00988_a6320841026e4ce51e9f47ac2ddf8ff00}
Compute the closest point on a mesh


\begin{DoxyParams}{Parameters}
{\em \+\_\+mesh} & The corresponding mesh \\
\hline
{\em \+\_\+point} & Point that should be checked \\
\hline
{\em \+\_\+fh} & Returns closest face to the given point \\
\hline
{\em \+\_\+ssearch} & Spatial search structure to speedup search \\
\hline
{\em \+\_\+dbest} & Returns the distance \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The closest point on the mesh (Not necessarily a vertex in the mesh!) 
\end{DoxyReturn}


Definition at line 1006 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_a4d4851c589ab59e90b3a3fa379acb079}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!get\+\_\+custom\+\_\+property\+\_\+shader\+\_\+binding@{get\+\_\+custom\+\_\+property\+\_\+shader\+\_\+binding}}
\index{get\+\_\+custom\+\_\+property\+\_\+shader\+\_\+binding@{get\+\_\+custom\+\_\+property\+\_\+shader\+\_\+binding}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{get\+\_\+custom\+\_\+property\+\_\+shader\+\_\+binding}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ bool {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::get\+\_\+custom\+\_\+property\+\_\+shader\+\_\+binding (
\begin{DoxyParamCaption}
\item[{Custom\+Property\+Handle}]{\+\_\+property\+\_\+handle, }
\item[{unsigned int $\ast$}]{\+\_\+propsize, }
\item[{const char $\ast$$\ast$}]{\+\_\+input\+\_\+name, }
\item[{unsigned int $\ast$}]{\+\_\+datatype}
\end{DoxyParamCaption}
) const}}\label{a00988_a4d4851c589ab59e90b3a3fa379acb079}


Get shader binding information. 

The property has to be bound via bind\+\_\+custom\+\_\+property\+\_\+to\+\_\+shader before.


\begin{DoxyParams}{Parameters}
{\em \+\_\+property\+\_\+handle} & handle of property \\
\hline
{\em \+\_\+propsize} & \mbox{[}out\mbox{]} receives size in bytes of one property element \\
\hline
{\em \+\_\+input\+\_\+name} & \mbox{[}out\mbox{]} receives pointer to name id of input data in the vertex shader \\
\hline
{\em \+\_\+datatype} & \mbox{[}out\mbox{]} receives type of property coordinates \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if property shader binding has been specified, false otherwise 
\end{DoxyReturn}


Definition at line 2342 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_a4a2d038bfb814c981e8cfc3b8a356e12}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!get\+\_\+line\+\_\+node@{get\+\_\+line\+\_\+node}}
\index{get\+\_\+line\+\_\+node@{get\+\_\+line\+\_\+node}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{get\+\_\+line\+\_\+node}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ template$<$class Line\+Node\+T $>$ Line\+Node\+T $\ast$ {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::get\+\_\+line\+\_\+node (
\begin{DoxyParamCaption}
\item[{Line\+Node\+T $\ast$\&}]{\+\_\+line\+\_\+node, }
\item[{int}]{\+\_\+mode = {\ttfamily 0}}
\end{DoxyParamCaption}
)}}\label{a00988_a4a2d038bfb814c981e8cfc3b8a356e12}


Conversion Poly\+Line $<$-\/$>$ Line\+Node. 

Creates a line node out of the polylline


\begin{DoxyParams}{Parameters}
{\em \+\_\+line\+\_\+node} & The newly created line node \\
\hline
{\em \+\_\+mode} & 0 \+: Line\+Segments mode, 1\+: polygon mode \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}

\end{DoxyReturn}


Definition at line 1080 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_a13292d435e2938dfaff985f2e209c947}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!insert\+\_\+point@{insert\+\_\+point}}
\index{insert\+\_\+point@{insert\+\_\+point}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{insert\+\_\+point}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ void {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::insert\+\_\+point (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+idx, }
\item[{const Point \&}]{\+\_\+p}
\end{DoxyParamCaption}
)}}\label{a00988_a13292d435e2938dfaff985f2e209c947}


insert \+\_\+p at \+\_\+idx into polyline 


\begin{DoxyParams}{Parameters}
{\em \+\_\+idx} & Where to insert \\
\hline
{\em \+\_\+p} & New point \\
\hline
\end{DoxyParams}


Definition at line 352 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_ac9ee660127512629e7ed040de0f6c995}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!is\+\_\+closed@{is\+\_\+closed}}
\index{is\+\_\+closed@{is\+\_\+closed}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{is\+\_\+closed}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T$>$ bool {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::is\+\_\+closed (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00988_ac9ee660127512629e7ed040de0f6c995}


Check if the polyline is marked as closed. 

If the polyline is closed, the end vertices are connected.

\begin{DoxyReturn}{Returns}
Closed polyline 
\end{DoxyReturn}


Definition at line 113 of file Poly\+Line\+T.\+hh.

\hypertarget{a00988_aee35e16abb66578bd756f3cef58b540c}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!length@{length}}
\index{length@{length}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{length}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ {\bf Poly\+Line\+T}$<$ Point\+T $>$\+::Scalar {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::length (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}\label{a00988_aee35e16abb66578bd756f3cef58b540c}


Compute the length of the polyline (in future cached method) 

\begin{DoxyReturn}{Returns}
Length of the polyline 
\end{DoxyReturn}


Definition at line 484 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_a45c46293b7f5f8580db9d6f6a8a545f6}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!mark\+\_\+components@{mark\+\_\+components}}
\index{mark\+\_\+components@{mark\+\_\+components}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{mark\+\_\+components}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ template$<$class Mesh\+T $>$ void {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::mark\+\_\+components (
\begin{DoxyParamCaption}
\item[{{\bf Open\+Mesh\+::\+Property\+Manager}$<$ {\bf Open\+Mesh\+::\+F\+Prop\+Handle\+T}$<$ unsigned int $>$, Mesh\+T $>$ \&}]{component}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a00988_a45c46293b7f5f8580db9d6f6a8a545f6}
Enumerate connected components of the property manager's mesh and assign each face its component's number using the property manager. 

Definition at line 1935 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_a16680cb23a78c9f0295e3a8d73dd40e6}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!on\+\_\+multiple\+\_\+components@{on\+\_\+multiple\+\_\+components}}
\index{on\+\_\+multiple\+\_\+components@{on\+\_\+multiple\+\_\+components}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{on\+\_\+multiple\+\_\+components}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ template$<$class Mesh\+T , class Spatial\+Search\+T $>$ bool {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::on\+\_\+multiple\+\_\+components (
\begin{DoxyParamCaption}
\item[{Mesh\+T \&}]{\+\_\+mesh, }
\item[{Spatial\+Search\+T \&}]{\+\_\+ssearch}
\end{DoxyParamCaption}
)}}\label{a00988_a16680cb23a78c9f0295e3a8d73dd40e6}
Indicates whether the entire poly line lies on the same connected component of the supplied mesh. 

Definition at line 2005 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_ae713dc3182cdf290fc0119605e1bd2e1}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!plane\+\_\+line\+\_\+intersection@{plane\+\_\+line\+\_\+intersection}}
\index{plane\+\_\+line\+\_\+intersection@{plane\+\_\+line\+\_\+intersection}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{plane\+\_\+line\+\_\+intersection}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ template$<$class I\+Point $>$ bool {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::plane\+\_\+line\+\_\+intersection (
\begin{DoxyParamCaption}
\item[{const I\+Point \&}]{\+\_\+p\+\_\+plane, }
\item[{const I\+Point \&}]{\+\_\+n\+\_\+plane, }
\item[{const I\+Point \&}]{\+\_\+p0, }
\item[{const I\+Point \&}]{\+\_\+p1, }
\item[{I\+Point \&}]{\+\_\+p\+\_\+int}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a00988_ae713dc3182cdf290fc0119605e1bd2e1}
Intersect point with line


\begin{DoxyParams}{Parameters}
{\em \+\_\+p\+\_\+plane} & \hyperlink{a00961}{Plane} point \\
\hline
{\em \+\_\+n\+\_\+plane} & \hyperlink{a00961}{Plane} normal \\
\hline
{\em \+\_\+p0} & Startpoint of line \\
\hline
{\em \+\_\+p1} & Endpoint of line \\
\hline
{\em \+\_\+p\+\_\+int} & Intersection point \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Intersecting? 
\end{DoxyReturn}


Definition at line 1493 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_ae0226c01a1f847e26fa49ab124f430e6}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!position@{position}}
\index{position@{position}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{position}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ {\bf Poly\+Line\+T}$<$ Point\+T $>$\+::Point {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::position (
\begin{DoxyParamCaption}
\item[{const Scalar}]{\+\_\+t}
\end{DoxyParamCaption}
) const}}\label{a00988_ae0226c01a1f847e26fa49ab124f430e6}


Provide linear paremterization of the polyline in \mbox{[}0,1\mbox{]}. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+t} & parameter value in \mbox{[}0,1\mbox{]}\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
point positioned at parameter value \+\_\+t 
\end{DoxyReturn}


Definition at line 515 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_a66f98a69c112b95a888efd64dedad0e9}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!position\+\_\+arclength@{position\+\_\+arclength}}
\index{position\+\_\+arclength@{position\+\_\+arclength}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{position\+\_\+arclength}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ {\bf Poly\+Line\+T}$<$ Point\+T $>$\+::Point {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::position\+\_\+arclength (
\begin{DoxyParamCaption}
\item[{const Scalar}]{\+\_\+t}
\end{DoxyParamCaption}
) const}}\label{a00988_a66f98a69c112b95a888efd64dedad0e9}


Same as position but with an arclength parameterization in \mbox{[}0,\hyperlink{a00988_aee35e16abb66578bd756f3cef58b540c}{length()}\mbox{]}. 

\begin{DoxyNote}{Note}
invalid parameter positions are projected to \mbox{[}0,\hyperlink{a00988_aee35e16abb66578bd756f3cef58b540c}{length()}\mbox{]}
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em \+\_\+t} & parameter value in \mbox{[}0,\hyperlink{a00988_aee35e16abb66578bd756f3cef58b540c}{length()}\mbox{]}\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
point positioned at parameter value \+\_\+t 
\end{DoxyReturn}


Definition at line 528 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_abe2a308364a224740873d64fa95d4b63}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!project\+\_\+to\+\_\+mesh@{project\+\_\+to\+\_\+mesh}}
\index{project\+\_\+to\+\_\+mesh@{project\+\_\+to\+\_\+mesh}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{project\+\_\+to\+\_\+mesh}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ template$<$class Mesh\+T , class Spatial\+Search\+T $>$ void {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::project\+\_\+to\+\_\+mesh (
\begin{DoxyParamCaption}
\item[{const Mesh\+T \&}]{\+\_\+mesh, }
\item[{Spatial\+Search\+T $\ast$}]{\+\_\+ssearch = {\ttfamily 0}}
\end{DoxyParamCaption}
)}}\label{a00988_abe2a308364a224740873d64fa95d4b63}


Project polyline points to nearest surface points (use spatial search!!!) 

\begin{DoxyNote}{Note}
The points of the polyline are updated in place!
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em \+\_\+mesh} & The mesh to project to \\
\hline
{\em \+\_\+ssearch} & A spatial search to improve speed \\
\hline
\end{DoxyParams}


Definition at line 937 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_a2ede094625b39b33d6462a3b32659db4}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!project\+\_\+to\+\_\+mesh@{project\+\_\+to\+\_\+mesh}}
\index{project\+\_\+to\+\_\+mesh@{project\+\_\+to\+\_\+mesh}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{project\+\_\+to\+\_\+mesh}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ template$<$class Mesh\+T , class Spatial\+Search\+T $>$ void {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::project\+\_\+to\+\_\+mesh (
\begin{DoxyParamCaption}
\item[{const std\+::vector$<$ Mesh\+T $\ast$ $>$ \&}]{\+\_\+mesh, }
\item[{std\+::vector$<$ Spatial\+Search\+T $\ast$ $>$ $\ast$}]{\+\_\+ssearch = {\ttfamily 0}}
\end{DoxyParamCaption}
)}}\label{a00988_a2ede094625b39b33d6462a3b32659db4}


Project polyline points to nearest surface points (use spatial search!!!) 

This function projects the polyline points to the closest of the given meshes.

\begin{DoxyNote}{Note}
The points of the polyline are updated in place!
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em \+\_\+mesh} & vector of meshes that should be used \\
\hline
{\em \+\_\+ssearch} & A spatial search to improve speed \\
\hline
\end{DoxyParams}


Definition at line 958 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_a59d31b0ff2a819b1be6a7b7e87940124}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!remove\+\_\+subsequent\+\_\+identical\+\_\+points@{remove\+\_\+subsequent\+\_\+identical\+\_\+points}}
\index{remove\+\_\+subsequent\+\_\+identical\+\_\+points@{remove\+\_\+subsequent\+\_\+identical\+\_\+points}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{remove\+\_\+subsequent\+\_\+identical\+\_\+points}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ void {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::remove\+\_\+subsequent\+\_\+identical\+\_\+points (
\begin{DoxyParamCaption}
\item[{const bool}]{\+\_\+keep\+\_\+edge\+\_\+vertices = {\ttfamily false}, }
\item[{const double}]{\+\_\+epsilon = {\ttfamily 1e-\/6}}
\end{DoxyParamCaption}
)}}\label{a00988_a59d31b0ff2a819b1be6a7b7e87940124}


remove points which are subsequent and lie at the same position 


\begin{DoxyParams}{Parameters}
{\em \+\_\+keep\+\_\+edge\+\_\+vertices} & Keep the corresponding edge vertices \\
\hline
{\em \+\_\+epsilon} & Vertices which are closer than this distance are considered at same position \\
\hline
\end{DoxyParams}


Definition at line 1759 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_a8f555970037dab39734debb889fed126}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!resample\+\_\+arclength\+\_\+uniform@{resample\+\_\+arclength\+\_\+uniform}}
\index{resample\+\_\+arclength\+\_\+uniform@{resample\+\_\+arclength\+\_\+uniform}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{resample\+\_\+arclength\+\_\+uniform}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ void {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::resample\+\_\+arclength\+\_\+uniform (
\begin{DoxyParamCaption}
\item[{const unsigned int}]{\+\_\+n}
\end{DoxyParamCaption}
)}}\label{a00988_a8f555970037dab39734debb889fed126}


Perform an uniform arclength resampling while maintaining the start and end point. 

\begin{DoxyNote}{Note}
invalid number of samples are projected by n = max(2,n)
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em \+\_\+n} & number of sample points in \mbox{[}2,infinity\mbox{]} \\
\hline
\end{DoxyParams}


Definition at line 580 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_a3e00211224dbfd08cb33547f6af656e9}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!set\+\_\+closed@{set\+\_\+closed}}
\index{set\+\_\+closed@{set\+\_\+closed}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{set\+\_\+closed}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T$>$ void {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::set\+\_\+closed (
\begin{DoxyParamCaption}
\item[{const bool}]{\+\_\+c}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00988_a3e00211224dbfd08cb33547f6af656e9}


Set if the polyline should be closed and therefore forms a loop. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+c} & Set polyline closed or not? \\
\hline
\end{DoxyParams}


Definition at line 119 of file Poly\+Line\+T.\+hh.

\hypertarget{a00988_adc71a5d54493b7609ce336d4afa4e4a9}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!set\+\_\+line\+\_\+node@{set\+\_\+line\+\_\+node}}
\index{set\+\_\+line\+\_\+node@{set\+\_\+line\+\_\+node}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{set\+\_\+line\+\_\+node}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ template$<$class Line\+Node\+T $>$ void {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::set\+\_\+line\+\_\+node (
\begin{DoxyParamCaption}
\item[{Line\+Node\+T $\ast$\&}]{\+\_\+line\+\_\+node, }
\item[{int}]{\+\_\+mode = {\ttfamily 0}}
\end{DoxyParamCaption}
)}}\label{a00988_adc71a5d54493b7609ce336d4afa4e4a9}


Takes a line node and sets the points of this polyline to the points of the node. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+line\+\_\+node} & The line node with the data \\
\hline
{\em \+\_\+mode} & 0 \+: Line\+Segments mode, 1\+: polygon mode \\
\hline
\end{DoxyParams}


Definition at line 1143 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_acda9e80a724c2796fe337cab0cddf6b8}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!split@{split}}
\index{split@{split}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{split}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T$>$ void {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::split (
\begin{DoxyParamCaption}
\item[{unsigned int}]{\+\_\+split\+\_\+idx, }
\item[{{\bf Poly\+Line\+T}$<$ Point\+T $>$ \&}]{\+\_\+new\+\_\+pl}
\end{DoxyParamCaption}
)}}\label{a00988_acda9e80a724c2796fe337cab0cddf6b8}


Split closed polyline at vertex with index \+\_\+split\+\_\+idx. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+split\+\_\+idx} & Where to split \\
\hline
{\em \+\_\+new\+\_\+pl} & The new polyline is returned in this variable \\
\hline
\end{DoxyParams}


Definition at line 1463 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_a074fdffe888db65d60199a455602c41a}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!split\+\_\+closed@{split\+\_\+closed}}
\index{split\+\_\+closed@{split\+\_\+closed}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{split\+\_\+closed}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ void {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::split\+\_\+closed (
\begin{DoxyParamCaption}
\item[{unsigned int}]{\+\_\+split\+\_\+idx}
\end{DoxyParamCaption}
)}}\label{a00988_a074fdffe888db65d60199a455602c41a}


Split closed polyline at vertex with index \+\_\+split\+\_\+idx. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+split\+\_\+idx} & Where to split \\
\hline
\end{DoxyParams}


Definition at line 1431 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_af41de493da0fba49b2050d1090bfcf32}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!split\+\_\+into\+\_\+one\+\_\+per\+\_\+component@{split\+\_\+into\+\_\+one\+\_\+per\+\_\+component}}
\index{split\+\_\+into\+\_\+one\+\_\+per\+\_\+component@{split\+\_\+into\+\_\+one\+\_\+per\+\_\+component}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{split\+\_\+into\+\_\+one\+\_\+per\+\_\+component}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ template$<$class Mesh\+T , class Spatial\+Search\+T $>$ void {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::split\+\_\+into\+\_\+one\+\_\+per\+\_\+component (
\begin{DoxyParamCaption}
\item[{Mesh\+T \&}]{\+\_\+mesh, }
\item[{Spatial\+Search\+T \&}]{\+\_\+ssearch, }
\item[{std\+::vector$<$ {\bf Poly\+Line\+T}$<$ Point\+T $>$ $>$ \&}]{out\+\_\+polylines}
\end{DoxyParamCaption}
)}}\label{a00988_af41de493da0fba49b2050d1090bfcf32}
Splits the poly line up into multiple poly lines each of which lie entirely on one connected component of the supplied mesh. There will be small gap between the new poly lines. 

Definition at line 2034 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_acc204b0dcc95d8edd64d1f4f16b424ee}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!subdivide@{subdivide}}
\index{subdivide@{subdivide}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{subdivide}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ void {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::subdivide (
\begin{DoxyParamCaption}
\item[{Scalar}]{\+\_\+largest}
\end{DoxyParamCaption}
)}}\label{a00988_acc204b0dcc95d8edd64d1f4f16b424ee}


Subdivide polyline. 

Subdivides segments until the longest interval in the line is smaller than the given value


\begin{DoxyParams}{Parameters}
{\em \+\_\+largest} & largest interval length after subdivision \\
\hline
\end{DoxyParams}


Definition at line 619 of file Poly\+Line\+T.\+cc.

\hypertarget{a00988_aea99fa239d2a436a737d6caeada0d99c}{\index{A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}!total\+\_\+gaussian\+\_\+curvature@{total\+\_\+gaussian\+\_\+curvature}}
\index{total\+\_\+gaussian\+\_\+curvature@{total\+\_\+gaussian\+\_\+curvature}!A\+C\+G\+::\+Poly\+Line\+T@{A\+C\+G\+::\+Poly\+Line\+T}}
\subsubsection[{total\+\_\+gaussian\+\_\+curvature}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Point\+T $>$ {\bf Poly\+Line\+T}$<$ Point\+T $>$\+::Scalar {\bf A\+C\+G\+::\+Poly\+Line\+T}$<$ Point\+T $>$\+::total\+\_\+gaussian\+\_\+curvature (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a00988_aea99fa239d2a436a737d6caeada0d99c}


compute total gaussian curvature of enclosed surface (via Gauss-\/\+Bonnet) 

The enclosed surface is defined to be on the left side of the curve given through N x E This function requires Edge-\/\+Normals!!! 

Definition at line 1841 of file Poly\+Line\+T.\+cc.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
Object\+Types/\+Poly\+Line/Poly\+Line\+T.\+hh\item 
Object\+Types/\+Poly\+Line/Poly\+Line\+T.\+cc\end{DoxyCompactItemize}
