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


{\ttfamily \#include $<$AC$>$}

\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structACG_1_1PolyLineT_1_1CustomProperty}{Custom\+Property}
\end{DoxyCompactItemize}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_aa1cd14502c9552da09fda657c9b18d59}\label{classACG_1_1PolyLineT_aa1cd14502c9552da09fda657c9b18d59}} 
typedef PointT {\bfseries Point}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a087c7aed2c96705c0521b79c450e8562}\label{classACG_1_1PolyLineT_a087c7aed2c96705c0521b79c450e8562}} 
typedef Point\+::value\+\_\+type {\bfseries Scalar}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a80f8883cd05577db270d651ee7006622}\label{classACG_1_1PolyLineT_a80f8883cd05577db270d651ee7006622}} 
typedef int {\bfseries Custom\+Property\+Handle}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a79acdbaa2fbcf5b91db792c6f22af492}\label{classACG_1_1PolyLineT_a79acdbaa2fbcf5b91db792c6f22af492}} 
\hyperlink{classACG_1_1PolyLineT_a79acdbaa2fbcf5b91db792c6f22af492}{Poly\+LineT} (bool \+\_\+closed=false)
\begin{DoxyCompactList}\small\item\em Constructor. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_afb08df18c3db2855a59b5a1979fbeb89}\label{classACG_1_1PolyLineT_afb08df18c3db2855a59b5a1979fbeb89}} 
\hyperlink{classACG_1_1PolyLineT_afb08df18c3db2855a59b5a1979fbeb89}{Poly\+LineT} (const \hyperlink{classACG_1_1PolyLineT}{Poly\+LineT} \&\+\_\+line)
\begin{DoxyCompactList}\small\item\em Copy Constructor. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a91ffae3afc611be9bb3347a949f85aa6}\label{classACG_1_1PolyLineT_a91ffae3afc611be9bb3347a949f85aa6}} 
\hyperlink{classACG_1_1PolyLineT_a91ffae3afc611be9bb3347a949f85aa6}{$\sim$\+Poly\+LineT} ()
\begin{DoxyCompactList}\small\item\em Destructor. \end{DoxyCompactList}\item 
bool \hyperlink{classACG_1_1PolyLineT_acc823da0afe1c96bba47a3acd801be3b}{is\+\_\+closed} () const
\begin{DoxyCompactList}\small\item\em Check if the polyline is marked as closed. \end{DoxyCompactList}\item 
void \hyperlink{classACG_1_1PolyLineT_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 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a05011865bfee501fce5c6a47179e8e46}\label{classACG_1_1PolyLineT_a05011865bfee501fce5c6a47179e8e46}} 
size\+\_\+t \hyperlink{classACG_1_1PolyLineT_a05011865bfee501fce5c6a47179e8e46}{n\+\_\+vertices} () const
\begin{DoxyCompactList}\small\item\em Get number of vertices. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a790b6e71fc16b794b8455d67659f19c0}\label{classACG_1_1PolyLineT_a790b6e71fc16b794b8455d67659f19c0}} 
size\+\_\+t \hyperlink{classACG_1_1PolyLineT_a790b6e71fc16b794b8455d67659f19c0}{n\+\_\+edges} () const
\begin{DoxyCompactList}\small\item\em Get number of edges. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ad944986dd63c40721b7cfd8697bf48d3}\label{classACG_1_1PolyLineT_ad944986dd63c40721b7cfd8697bf48d3}} 
void \hyperlink{classACG_1_1PolyLineT_ad944986dd63c40721b7cfd8697bf48d3}{clear} ()
\begin{DoxyCompactList}\small\item\em Clear the current polyline. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_aa720dc9eba554a6c6d109e5a0a343ada}\label{classACG_1_1PolyLineT_aa720dc9eba554a6c6d109e5a0a343ada}} 
void \hyperlink{classACG_1_1PolyLineT_aa720dc9eba554a6c6d109e5a0a343ada}{resize} (unsigned int \+\_\+n)
\begin{DoxyCompactList}\small\item\em Resize current polyline. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ae4e5f1ac878672c2815ed337c6b0acba}\label{classACG_1_1PolyLineT_ae4e5f1ac878672c2815ed337c6b0acba}} 
void \hyperlink{classACG_1_1PolyLineT_ae4e5f1ac878672c2815ed337c6b0acba}{add\+\_\+point} (const Point \&\+\_\+p)
\begin{DoxyCompactList}\small\item\em Append a point to the polyline. \end{DoxyCompactList}\item 
void \hyperlink{classACG_1_1PolyLineT_a13292d435e2938dfaff985f2e209c947}{insert\+\_\+point} (int \+\_\+idx, const Point \&\+\_\+p)
\begin{DoxyCompactList}\small\item\em insert \+\_\+p at \+\_\+idx into polyline \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_aa490ba91b9decb0f2a8346e85ed6486e}\label{classACG_1_1PolyLineT_aa490ba91b9decb0f2a8346e85ed6486e}} 
void \hyperlink{classACG_1_1PolyLineT_aa490ba91b9decb0f2a8346e85ed6486e}{delete\+\_\+point} (int \+\_\+idx)
\begin{DoxyCompactList}\small\item\em Delete point at \+\_\+idx. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a896f6524f4380647fd1fee86d554f210}\label{classACG_1_1PolyLineT_a896f6524f4380647fd1fee86d554f210}} 
Point \& \hyperlink{classACG_1_1PolyLineT_a896f6524f4380647fd1fee86d554f210}{point} (unsigned int \+\_\+i)
\begin{DoxyCompactList}\small\item\em Get a point of the polyline. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a7b69c0729bbc2a27a62e9ef2c231e533}\label{classACG_1_1PolyLineT_a7b69c0729bbc2a27a62e9ef2c231e533}} 
const Point \& \hyperlink{classACG_1_1PolyLineT_a7b69c0729bbc2a27a62e9ef2c231e533}{point} (unsigned int \+\_\+i) const
\begin{DoxyCompactList}\small\item\em Get a point of the polyline. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a2208eab4b8384d5a560dbba6c55e443c}\label{classACG_1_1PolyLineT_a2208eab4b8384d5a560dbba6c55e443c}} 
std\+::vector$<$ Point $>$ \& \hyperlink{classACG_1_1PolyLineT_a2208eab4b8384d5a560dbba6c55e443c}{points} ()
\begin{DoxyCompactList}\small\item\em Get all points of the polyline. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a641b664de0b4f11e54d5d9eed9404987}\label{classACG_1_1PolyLineT_a641b664de0b4f11e54d5d9eed9404987}} 
const std\+::vector$<$ Point $>$ \& \hyperlink{classACG_1_1PolyLineT_a641b664de0b4f11e54d5d9eed9404987}{points} () const
\begin{DoxyCompactList}\small\item\em Get all points of the polyline. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a4fa019ea5e366d4f2ba170cdafca9aef}\label{classACG_1_1PolyLineT_a4fa019ea5e366d4f2ba170cdafca9aef}} 
Point \& \hyperlink{classACG_1_1PolyLineT_a4fa019ea5e366d4f2ba170cdafca9aef}{front} ()
\begin{DoxyCompactList}\small\item\em Get first point of the polyline ( no range check!!!) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a52f52ed16298e7eef93659604ea0d826}\label{classACG_1_1PolyLineT_a52f52ed16298e7eef93659604ea0d826}} 
const Point \& \hyperlink{classACG_1_1PolyLineT_a52f52ed16298e7eef93659604ea0d826}{front} () const
\begin{DoxyCompactList}\small\item\em Get first point of the polyline ( no range check!!!) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_adeffe94e15fbad7e0bc1c6a2dc1ed1f2}\label{classACG_1_1PolyLineT_adeffe94e15fbad7e0bc1c6a2dc1ed1f2}} 
Point \& \hyperlink{classACG_1_1PolyLineT_adeffe94e15fbad7e0bc1c6a2dc1ed1f2}{back} ()
\begin{DoxyCompactList}\small\item\em Get last point of the polyline ( no range check!!!) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a7e33ad17f5adfa54d22566a82888f197}\label{classACG_1_1PolyLineT_a7e33ad17f5adfa54d22566a82888f197}} 
const Point \& \hyperlink{classACG_1_1PolyLineT_a7e33ad17f5adfa54d22566a82888f197}{back} () const
\begin{DoxyCompactList}\small\item\em Get last point of the polyline ( no range check!!!) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a18d36c6daea37d5236cf9f456fb2ef2c}\label{classACG_1_1PolyLineT_a18d36c6daea37d5236cf9f456fb2ef2c}} 
Point \hyperlink{classACG_1_1PolyLineT_a18d36c6daea37d5236cf9f456fb2ef2c}{edge\+\_\+vector} (unsigned int \+\_\+i) const
\begin{DoxyCompactList}\small\item\em get the i-\/th oriented edge vector \end{DoxyCompactList}\item 
Scalar \hyperlink{classACG_1_1PolyLineT_ad84ed4609808fbf3367058382039bed8}{length} () const
\begin{DoxyCompactList}\small\item\em Compute the length of the polyline (in future cached method) \end{DoxyCompactList}\item 
Point \hyperlink{classACG_1_1PolyLineT_a774f94c0b7fb5e1b102fd338089563ed}{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{classACG_1_1PolyLineT_a4a157f88b1ae6ee154924d17a03acdcb}{position\+\_\+arclength} (const Scalar \+\_\+t) const
\begin{DoxyCompactList}\small\item\em Same as position but with an arclength parameterization in \mbox{[}0,\hyperlink{classACG_1_1PolyLineT_ad84ed4609808fbf3367058382039bed8}{length()}\mbox{]}. \end{DoxyCompactList}\item 
void \hyperlink{classACG_1_1PolyLineT_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{classACG_1_1PolyLineT_acc204b0dcc95d8edd64d1f4f16b424ee}{subdivide} (Scalar \+\_\+largest)
\begin{DoxyCompactList}\small\item\em Subdivide polyline. \end{DoxyCompactList}\item 
void \hyperlink{classACG_1_1PolyLineT_aa7b0ae55f9d0ed779a89ef2ffc372c13}{collapse} (Scalar \+\_\+smallest)
\begin{DoxyCompactList}\small\item\em Collapse polyline. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_abbb61b1f05c683d351b6e1784acd3030}\label{classACG_1_1PolyLineT_abbb61b1f05c683d351b6e1784acd3030}} 
void \hyperlink{classACG_1_1PolyLineT_abbb61b1f05c683d351b6e1784acd3030}{invert} ()
\begin{DoxyCompactList}\small\item\em Invert polyline that first vertex becomes last. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_aeef8f48da621efe6977c31933c50b8e2}\label{classACG_1_1PolyLineT_aeef8f48da621efe6977c31933c50b8e2}} 
void \hyperlink{classACG_1_1PolyLineT_aeef8f48da621efe6977c31933c50b8e2}{append} (const \hyperlink{classACG_1_1PolyLineT}{Poly\+LineT}$<$ PointT $>$ \&\+\_\+pl)
\begin{DoxyCompactList}\small\item\em Append second polyline \+\_\+pl to this one. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ab7cf959eb901164d53c8ebbc1b3b0ee6}\label{classACG_1_1PolyLineT_ab7cf959eb901164d53c8ebbc1b3b0ee6}} 
void \hyperlink{classACG_1_1PolyLineT_ab7cf959eb901164d53c8ebbc1b3b0ee6}{prepend} (const \hyperlink{classACG_1_1PolyLineT}{Poly\+LineT}$<$ PointT $>$ \&\+\_\+pl)
\begin{DoxyCompactList}\small\item\em Prepend second polyline \+\_\+pl to polyline. \end{DoxyCompactList}\item 
void \hyperlink{classACG_1_1PolyLineT_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{classACG_1_1PolyLineT_acda9e80a724c2796fe337cab0cddf6b8}{split} (unsigned int \+\_\+split\+\_\+idx, \hyperlink{classACG_1_1PolyLineT}{Poly\+LineT}$<$ PointT $>$ \&\+\_\+new\+\_\+pl)
\begin{DoxyCompactList}\small\item\em Split closed polyline at vertex with index \+\_\+split\+\_\+idx. \end{DoxyCompactList}\item 
void \hyperlink{classACG_1_1PolyLineT_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 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a10c584696f3c1f61adcf30e890ecdeb0}\label{classACG_1_1PolyLineT_a10c584696f3c1f61adcf30e890ecdeb0}} 
void \hyperlink{classACG_1_1PolyLineT_a10c584696f3c1f61adcf30e890ecdeb0}{smooth\+\_\+uniform\+\_\+laplace} ()
\begin{DoxyCompactList}\small\item\em Laplacian smoothing. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ab32216f5a58981d02bfde3d762e987ed}\label{classACG_1_1PolyLineT_ab32216f5a58981d02bfde3d762e987ed}} 
void \hyperlink{classACG_1_1PolyLineT_ab32216f5a58981d02bfde3d762e987ed}{smooth\+\_\+uniform\+\_\+laplace2} ()
\begin{DoxyCompactList}\small\item\em Squared laplacian smoothing. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ac91ddc400c80d15ca790b00790ab24a1}\label{classACG_1_1PolyLineT_ac91ddc400c80d15ca790b00790ab24a1}} 
void \hyperlink{classACG_1_1PolyLineT_ac91ddc400c80d15ca790b00790ab24a1}{smooth\+\_\+uniform\+\_\+laplace3} ()
\begin{DoxyCompactList}\small\item\em Cubic laplacian smoothing. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ae4e4a7bcb198bc4ba1143b075903fcf6}\label{classACG_1_1PolyLineT_ae4e4a7bcb198bc4ba1143b075903fcf6}} 
void \hyperlink{classACG_1_1PolyLineT_ae4e4a7bcb198bc4ba1143b075903fcf6}{set\+\_\+to\+\_\+circle} (const PointT \+\_\+center, const PointT \+\_\+normal, double \+\_\+radius, unsigned int \+\_\+n\+\_\+samples=100)
\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 MeshT , class Spatial\+SearchT $>$ }\\void \hyperlink{classACG_1_1PolyLineT_abe2a308364a224740873d64fa95d4b63}{project\+\_\+to\+\_\+mesh} (const MeshT \&\+\_\+mesh, Spatial\+SearchT $\ast$\+\_\+ssearch=0)
\begin{DoxyCompactList}\small\item\em Project polyline points to nearest surface points (use spatial search!!!) \end{DoxyCompactList}\item 
{\footnotesize template$<$class MeshT , class Spatial\+SearchT $>$ }\\void \hyperlink{classACG_1_1PolyLineT_a3f7b10e0f0c5eab6d91215cc22abd5f2}{project\+\_\+to\+\_\+mesh} (const std\+::vector$<$ MeshT $\ast$$>$ \&\+\_\+mesh, std\+::vector$<$ Spatial\+SearchT $\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 MeshT , class Spatial\+SearchT $>$ }\\bool \hyperlink{classACG_1_1PolyLineT_a16680cb23a78c9f0295e3a8d73dd40e6}{on\+\_\+multiple\+\_\+components} (MeshT \&\+\_\+mesh, Spatial\+SearchT \&\+\_\+ssearch)
\item 
{\footnotesize template$<$class MeshT , class Spatial\+SearchT $>$ }\\void \hyperlink{classACG_1_1PolyLineT_af41de493da0fba49b2050d1090bfcf32}{split\+\_\+into\+\_\+one\+\_\+per\+\_\+component} (MeshT \&\+\_\+mesh, Spatial\+SearchT \&\+\_\+ssearch, std\+::vector$<$ \hyperlink{classACG_1_1PolyLineT}{Poly\+LineT} $>$ \&out\+\_\+polylines)
\item 
Scalar \hyperlink{classACG_1_1PolyLineT_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\+NodeT $>$ }\\Line\+NodeT $\ast$ \hyperlink{classACG_1_1PolyLineT_a4a2d038bfb814c981e8cfc3b8a356e12}{get\+\_\+line\+\_\+node} (Line\+NodeT $\ast$\&\+\_\+line\+\_\+node, int \+\_\+mode=0)
\begin{DoxyCompactList}\small\item\em Conversion Poly\+Line $<$-\/$>$ Line\+Node. \end{DoxyCompactList}\item 
{\footnotesize template$<$class Line\+NodeT $>$ }\\void \hyperlink{classACG_1_1PolyLineT_adc71a5d54493b7609ce336d4afa4e4a9}{set\+\_\+line\+\_\+node} (Line\+NodeT $\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 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a418aaa034c441a7512cfc2b941fdee19}\label{classACG_1_1PolyLineT_a418aaa034c441a7512cfc2b941fdee19}} 
void \hyperlink{classACG_1_1PolyLineT_a418aaa034c441a7512cfc2b941fdee19}{print} () const
\begin{DoxyCompactList}\small\item\em \hyperlink{classPrint}{Print} information string to cerr. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a72277e282d9906f8f6118cae0604f31a}\label{classACG_1_1PolyLineT_a72277e282d9906f8f6118cae0604f31a}} 
Scalar \hyperlink{classACG_1_1PolyLineT_a72277e282d9906f8f6118cae0604f31a}{vertex\+\_\+radius} () const
\begin{DoxyCompactList}\small\item\em get ball-\/radius of vertices \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a86d66c1dd38af63e0b152158d080afac}\label{classACG_1_1PolyLineT_a86d66c1dd38af63e0b152158d080afac}} 
void \hyperlink{classACG_1_1PolyLineT_a86d66c1dd38af63e0b152158d080afac}{set\+\_\+vertex\+\_\+radius} (const Scalar \+\_\+r)
\begin{DoxyCompactList}\small\item\em set ball-\/radius of vertices \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a872423e649fd5050bfee9151cb777d72}\label{classACG_1_1PolyLineT_a872423e649fd5050bfee9151cb777d72}} 
Scalar \hyperlink{classACG_1_1PolyLineT_a872423e649fd5050bfee9151cb777d72}{edge\+\_\+radius} () const
\begin{DoxyCompactList}\small\item\em get cylinder-\/radius of edges \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ab1b72a5bbf8e256f3cf43df69ba01790}\label{classACG_1_1PolyLineT_ab1b72a5bbf8e256f3cf43df69ba01790}} 
void \hyperlink{classACG_1_1PolyLineT_ab1b72a5bbf8e256f3cf43df69ba01790}{set\+\_\+edge\+\_\+radius} (const Scalar \+\_\+r)
\begin{DoxyCompactList}\small\item\em set cylinder-\/radius of edges \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ab478ab1ddef2862104d3139815934d1b}\label{classACG_1_1PolyLineT_ab478ab1ddef2862104d3139815934d1b}} 
void {\bfseries request\+\_\+vertex\+\_\+normals} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a05588e79dafe58312c3c2a6f815a859a}\label{classACG_1_1PolyLineT_a05588e79dafe58312c3c2a6f815a859a}} 
void {\bfseries request\+\_\+vertex\+\_\+binormals} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a32d13f182493033596973f8b6a4d5d00}\label{classACG_1_1PolyLineT_a32d13f182493033596973f8b6a4d5d00}} 
void {\bfseries request\+\_\+vertex\+\_\+colors} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a88060ceb86b30437d98bf00ef1e4e557}\label{classACG_1_1PolyLineT_a88060ceb86b30437d98bf00ef1e4e557}} 
void {\bfseries request\+\_\+vertex\+\_\+scalars} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a146e8c2cc06108262165daadb88f2de6}\label{classACG_1_1PolyLineT_a146e8c2cc06108262165daadb88f2de6}} 
void {\bfseries request\+\_\+vertex\+\_\+selections} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a805f3e1480a83bec2afd7931d1096dd8}\label{classACG_1_1PolyLineT_a805f3e1480a83bec2afd7931d1096dd8}} 
void {\bfseries request\+\_\+vertex\+\_\+vhandles} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a8548f209472cd4a75b0cf265d0d9a88c}\label{classACG_1_1PolyLineT_a8548f209472cd4a75b0cf265d0d9a88c}} 
void {\bfseries request\+\_\+vertex\+\_\+ehandles} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a3cba92dd94a0357fde637e6b4948a859}\label{classACG_1_1PolyLineT_a3cba92dd94a0357fde637e6b4948a859}} 
void {\bfseries request\+\_\+vertex\+\_\+fhandles} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ab53aa42cf1b76cc52c865c1cfd4a5aee}\label{classACG_1_1PolyLineT_ab53aa42cf1b76cc52c865c1cfd4a5aee}} 
void {\bfseries request\+\_\+edge\+\_\+normals} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a517513b5018bc8d7e1b83e68ede3a272}\label{classACG_1_1PolyLineT_a517513b5018bc8d7e1b83e68ede3a272}} 
void {\bfseries request\+\_\+edge\+\_\+colors} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a83106ed3f47e7e9cb443dea7872073d9}\label{classACG_1_1PolyLineT_a83106ed3f47e7e9cb443dea7872073d9}} 
void {\bfseries request\+\_\+edge\+\_\+scalars} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a00ed7d789f6b8ecf3810c856df4c8ab0}\label{classACG_1_1PolyLineT_a00ed7d789f6b8ecf3810c856df4c8ab0}} 
void {\bfseries request\+\_\+edge\+\_\+selections} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a678c792a6ca8c616342514ae67ae4f54}\label{classACG_1_1PolyLineT_a678c792a6ca8c616342514ae67ae4f54}} 
void {\bfseries request\+\_\+preimage\+\_\+directions} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_aeb0418cc478741a7068de08056566a4e}\label{classACG_1_1PolyLineT_aeb0418cc478741a7068de08056566a4e}} 
void {\bfseries release\+\_\+vertex\+\_\+normals} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_af9081b616c44c252efff027721b272cd}\label{classACG_1_1PolyLineT_af9081b616c44c252efff027721b272cd}} 
void {\bfseries release\+\_\+vertex\+\_\+binormals} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a4c2a4244b9f3febec2812f4c636dfdc2}\label{classACG_1_1PolyLineT_a4c2a4244b9f3febec2812f4c636dfdc2}} 
void {\bfseries release\+\_\+vertex\+\_\+colors} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a20800ce0f99bbcd98ed7573ed11be7ee}\label{classACG_1_1PolyLineT_a20800ce0f99bbcd98ed7573ed11be7ee}} 
void {\bfseries release\+\_\+vertex\+\_\+scalars} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a3e7fd5fa609eb12067deefd564d3fcef}\label{classACG_1_1PolyLineT_a3e7fd5fa609eb12067deefd564d3fcef}} 
void {\bfseries release\+\_\+vertex\+\_\+selections} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a3c58c67535276b85e43755b175193507}\label{classACG_1_1PolyLineT_a3c58c67535276b85e43755b175193507}} 
void {\bfseries release\+\_\+vertex\+\_\+vhandles} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ae944428f37ca6ada832042290ecb3c99}\label{classACG_1_1PolyLineT_ae944428f37ca6ada832042290ecb3c99}} 
void {\bfseries release\+\_\+vertex\+\_\+ehandles} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_adf840b939c15331501ff300940eea7f7}\label{classACG_1_1PolyLineT_adf840b939c15331501ff300940eea7f7}} 
void {\bfseries release\+\_\+vertex\+\_\+fhandles} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a4103446957fa485b21a895987381f4f2}\label{classACG_1_1PolyLineT_a4103446957fa485b21a895987381f4f2}} 
void {\bfseries release\+\_\+edge\+\_\+normals} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a143f6288b29546e4de74cf5928f7072d}\label{classACG_1_1PolyLineT_a143f6288b29546e4de74cf5928f7072d}} 
void {\bfseries release\+\_\+edge\+\_\+colors} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a2974cf3aebab44e186de86b2113409dc}\label{classACG_1_1PolyLineT_a2974cf3aebab44e186de86b2113409dc}} 
void {\bfseries release\+\_\+edge\+\_\+scalars} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a9d9bb8145d29642b90c609dfba51337e}\label{classACG_1_1PolyLineT_a9d9bb8145d29642b90c609dfba51337e}} 
void {\bfseries release\+\_\+edge\+\_\+selections} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a14e174273db5c3d2457e316d8fb226a9}\label{classACG_1_1PolyLineT_a14e174273db5c3d2457e316d8fb226a9}} 
void {\bfseries release\+\_\+preimage\+\_\+directions} ()
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a264d2b7734a3233d9b24dac8ad3c4c29}\label{classACG_1_1PolyLineT_a264d2b7734a3233d9b24dac8ad3c4c29}} 
bool {\bfseries vertex\+\_\+normals\+\_\+available} () const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a07baf8a3cd880829ebc8e0ce063d26a2}\label{classACG_1_1PolyLineT_a07baf8a3cd880829ebc8e0ce063d26a2}} 
bool {\bfseries vertex\+\_\+binormals\+\_\+available} () const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a23dc49dbdce68d26b9dddc1647947f09}\label{classACG_1_1PolyLineT_a23dc49dbdce68d26b9dddc1647947f09}} 
bool {\bfseries vertex\+\_\+colors\+\_\+available} () const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a928d87fccfd784dee5e2358df2b71212}\label{classACG_1_1PolyLineT_a928d87fccfd784dee5e2358df2b71212}} 
bool {\bfseries vertex\+\_\+scalars\+\_\+available} () const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_abcc106aecea26e8f5d3570884ea088d4}\label{classACG_1_1PolyLineT_abcc106aecea26e8f5d3570884ea088d4}} 
bool {\bfseries vertex\+\_\+selections\+\_\+available} () const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a2ba8d0bc0e0597e4489444f0749fddcf}\label{classACG_1_1PolyLineT_a2ba8d0bc0e0597e4489444f0749fddcf}} 
bool {\bfseries vertex\+\_\+vhandles\+\_\+available} () const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_aa78f92fa576b2516bc8827e34d83c493}\label{classACG_1_1PolyLineT_aa78f92fa576b2516bc8827e34d83c493}} 
bool {\bfseries vertex\+\_\+ehandles\+\_\+available} () const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a8cf3dc9ec6f8814b470edcb298ce30a9}\label{classACG_1_1PolyLineT_a8cf3dc9ec6f8814b470edcb298ce30a9}} 
bool {\bfseries vertex\+\_\+fhandles\+\_\+available} () const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_abc86d8aaca39b2a53a1f16a65d114bf4}\label{classACG_1_1PolyLineT_abc86d8aaca39b2a53a1f16a65d114bf4}} 
bool {\bfseries edge\+\_\+normals\+\_\+available} () const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a7a8516eaf3c8df772d6430ee059d9a50}\label{classACG_1_1PolyLineT_a7a8516eaf3c8df772d6430ee059d9a50}} 
bool {\bfseries edge\+\_\+colors\+\_\+available} () const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_aad9faf5603668419831a4637d6a8083e}\label{classACG_1_1PolyLineT_aad9faf5603668419831a4637d6a8083e}} 
bool {\bfseries edge\+\_\+scalars\+\_\+available} () const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ab01b34cc8f81005fff4592c5123a6fd6}\label{classACG_1_1PolyLineT_ab01b34cc8f81005fff4592c5123a6fd6}} 
bool {\bfseries edge\+\_\+selections\+\_\+available} () const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a18663abbe0debbd1c3ec638c55a4e380}\label{classACG_1_1PolyLineT_a18663abbe0debbd1c3ec638c55a4e380}} 
bool {\bfseries edge\+\_\+preimage\+\_\+directions\+\_\+available} () const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a2f95e4c9b3c37366cb2bf0a1916c1a67}\label{classACG_1_1PolyLineT_a2f95e4c9b3c37366cb2bf0a1916c1a67}} 
Point \& {\bfseries vertex\+\_\+normal} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a7d7fe927f2a3e7c70fcf234cb2f5a085}\label{classACG_1_1PolyLineT_a7d7fe927f2a3e7c70fcf234cb2f5a085}} 
const Point \& {\bfseries vertex\+\_\+normal} (unsigned int \+\_\+i) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a4e6dd4d8570cdd621cabca05e5513eb1}\label{classACG_1_1PolyLineT_a4e6dd4d8570cdd621cabca05e5513eb1}} 
Point \& {\bfseries vertex\+\_\+binormal} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ad20aa70f19baa9ada8ce72ec63fa5f6d}\label{classACG_1_1PolyLineT_ad20aa70f19baa9ada8ce72ec63fa5f6d}} 
const Point \& {\bfseries vertex\+\_\+binormal} (unsigned int \+\_\+i) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a2679bcfe41099f62cfd356b4a03b4a5b}\label{classACG_1_1PolyLineT_a2679bcfe41099f62cfd356b4a03b4a5b}} 
Point \& {\bfseries vertex\+\_\+color} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_aef527c2a5658a2cbb83aeedd5b21882b}\label{classACG_1_1PolyLineT_aef527c2a5658a2cbb83aeedd5b21882b}} 
const Point \& {\bfseries vertex\+\_\+color} (unsigned int \+\_\+i) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a03a900a5d62d43fd8e99f48520f01603}\label{classACG_1_1PolyLineT_a03a900a5d62d43fd8e99f48520f01603}} 
Scalar \& {\bfseries vertex\+\_\+scalar} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a6bf46b84f44f0118a99d702c1b19f9ad}\label{classACG_1_1PolyLineT_a6bf46b84f44f0118a99d702c1b19f9ad}} 
const Scalar \& {\bfseries vertex\+\_\+scalar} (unsigned int \+\_\+i) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_adc5196ded5dbaa521e3b44639e6cacee}\label{classACG_1_1PolyLineT_adc5196ded5dbaa521e3b44639e6cacee}} 
unsigned char \& {\bfseries vertex\+\_\+selection} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_adfd07a9676ddd7227b810f4bb9930cef}\label{classACG_1_1PolyLineT_adfd07a9676ddd7227b810f4bb9930cef}} 
const unsigned char \& {\bfseries vertex\+\_\+selection} (unsigned int \+\_\+i) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_aae94169c3fb2e1b8ae33560efa5c6875}\label{classACG_1_1PolyLineT_aae94169c3fb2e1b8ae33560efa5c6875}} 
int \& {\bfseries vertex\+\_\+vhandle} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a3d089aa8832e914f05bfc41cd2109416}\label{classACG_1_1PolyLineT_a3d089aa8832e914f05bfc41cd2109416}} 
const int \& {\bfseries vertex\+\_\+vhandle} (unsigned int \+\_\+i) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ae750fe7305ab59e7578ca294cd7ce0e2}\label{classACG_1_1PolyLineT_ae750fe7305ab59e7578ca294cd7ce0e2}} 
int \& {\bfseries vertex\+\_\+ehandle} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a2319c17a343c4fd60f21da197c700352}\label{classACG_1_1PolyLineT_a2319c17a343c4fd60f21da197c700352}} 
const int \& {\bfseries vertex\+\_\+ehandle} (unsigned int \+\_\+i) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_adf013041f02777e96006036ac9bedbc4}\label{classACG_1_1PolyLineT_adf013041f02777e96006036ac9bedbc4}} 
int \& {\bfseries vertex\+\_\+fhandle} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_afbc7fb68fab83beee224e274f55abe31}\label{classACG_1_1PolyLineT_afbc7fb68fab83beee224e274f55abe31}} 
const int \& {\bfseries vertex\+\_\+fhandle} (unsigned int \+\_\+i) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a04853f0ca8d99bf4bfae45b113619567}\label{classACG_1_1PolyLineT_a04853f0ca8d99bf4bfae45b113619567}} 
Point \& {\bfseries edge\+\_\+normal} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a3627ea2079acefa03848c24961e8e39a}\label{classACG_1_1PolyLineT_a3627ea2079acefa03848c24961e8e39a}} 
const Point \& {\bfseries edge\+\_\+normal} (unsigned int \+\_\+i) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ad2b7eb255dff5dbe4a28f6e9f4fe7991}\label{classACG_1_1PolyLineT_ad2b7eb255dff5dbe4a28f6e9f4fe7991}} 
Point \& {\bfseries edge\+\_\+color} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a652b9210a76cb4dfa781a753d77b8780}\label{classACG_1_1PolyLineT_a652b9210a76cb4dfa781a753d77b8780}} 
const Point \& {\bfseries edge\+\_\+color} (unsigned int \+\_\+i) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a6638166e80421b134ea99f68b8755509}\label{classACG_1_1PolyLineT_a6638166e80421b134ea99f68b8755509}} 
Scalar \& {\bfseries edge\+\_\+scalar} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a93c1cebbfd2aabf2cb24ac43c3b5ec93}\label{classACG_1_1PolyLineT_a93c1cebbfd2aabf2cb24ac43c3b5ec93}} 
const Scalar \& {\bfseries edge\+\_\+scalar} (unsigned int \+\_\+i) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a95426f4794f4f8c15337d151c8215c56}\label{classACG_1_1PolyLineT_a95426f4794f4f8c15337d151c8215c56}} 
unsigned char \& {\bfseries edge\+\_\+selection} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a2a02152617e8913bd74b362638c69925}\label{classACG_1_1PolyLineT_a2a02152617e8913bd74b362638c69925}} 
const unsigned char \& {\bfseries edge\+\_\+selection} (unsigned int \+\_\+i) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ad2b42d38239f4d131cb6b9744c79ce70}\label{classACG_1_1PolyLineT_ad2b42d38239f4d131cb6b9744c79ce70}} 
Point \& {\bfseries preimage\+\_\+direction} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a417a3b45756bcb8126f5a5b04fe182f5}\label{classACG_1_1PolyLineT_a417a3b45756bcb8126f5a5b04fe182f5}} 
const Point \& {\bfseries preimage\+\_\+direction} (unsigned int \+\_\+i) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ac8187ac4fda252a8331e8265ec2f31cc}\label{classACG_1_1PolyLineT_ac8187ac4fda252a8331e8265ec2f31cc}} 
Custom\+Property\+Handle {\bfseries request\+\_\+custom\+\_\+property} (const std\+::string \&\+\_\+name, unsigned int \+\_\+prop\+\_\+size)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a579daf04a4579859259471a7ea422c73}\label{classACG_1_1PolyLineT_a579daf04a4579859259471a7ea422c73}} 
void {\bfseries release\+\_\+custom\+\_\+property} (const std\+::string \&\+\_\+name)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a4eb10a6fbe1f8eff84693db9df093041}\label{classACG_1_1PolyLineT_a4eb10a6fbe1f8eff84693db9df093041}} 
void {\bfseries release\+\_\+custom\+\_\+property} (Custom\+Property\+Handle \+\_\+prop\+\_\+handle)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a5218dee1718680010dc21e15d2148393}\label{classACG_1_1PolyLineT_a5218dee1718680010dc21e15d2148393}} 
bool {\bfseries custom\+\_\+property\+\_\+available} (Custom\+Property\+Handle \+\_\+property\+\_\+handle) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ab790cb40d11a7ec28c95af283f8ce6af}\label{classACG_1_1PolyLineT_ab790cb40d11a7ec28c95af283f8ce6af}} 
bool {\bfseries custom\+\_\+property\+\_\+available} (const std\+::string \&\+\_\+name) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a2154abf9817af9d5b4ec846f17de65e3}\label{classACG_1_1PolyLineT_a2154abf9817af9d5b4ec846f17de65e3}} 
void {\bfseries set\+\_\+custom\+\_\+property} (Custom\+Property\+Handle \+\_\+property\+\_\+handle, unsigned int \+\_\+vertex, const void $\ast$\+\_\+data)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a5ae10e9eb001e357cbf41508cbe34af2}\label{classACG_1_1PolyLineT_a5ae10e9eb001e357cbf41508cbe34af2}} 
void {\bfseries get\+\_\+custom\+\_\+property} (Custom\+Property\+Handle \+\_\+property\+\_\+handle, unsigned int \+\_\+vertex, void $\ast$\+\_\+dst) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a66eb380cfa5fe2b60cec6c4f43587147}\label{classACG_1_1PolyLineT_a66eb380cfa5fe2b60cec6c4f43587147}} 
void {\bfseries set\+\_\+custom\+\_\+property} (const std\+::string \&\+\_\+name, unsigned int \+\_\+vertex, const void $\ast$\+\_\+data)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a6f210c8f559cfd0ed2bec795d2989ec3}\label{classACG_1_1PolyLineT_a6f210c8f559cfd0ed2bec795d2989ec3}} 
void {\bfseries get\+\_\+custom\+\_\+property} (const std\+::string \&\+\_\+name, unsigned int \+\_\+vertex, void $\ast$\+\_\+dst) const
\item 
void \hyperlink{classACG_1_1PolyLineT_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{classACG_1_1PolyLineT_a696d319de7bf52692098c5367c8d97a3}{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 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ab8b71b4982c410d6dd7e1ef02cec38b8}\label{classACG_1_1PolyLineT_ab8b71b4982c410d6dd7e1ef02cec38b8}} 
Custom\+Property\+Handle {\bfseries get\+\_\+custom\+\_\+property\+\_\+handle} (const std\+::string \&\+\_\+name) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_aec8a89e1d59481a8030de73efe7a8590}\label{classACG_1_1PolyLineT_aec8a89e1d59481a8030de73efe7a8590}} 
const std\+::string {\bfseries get\+\_\+custom\+\_\+property\+\_\+name} (Custom\+Property\+Handle \+\_\+property\+\_\+handle) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_aa6264baae214037edfc3ef11949bae3d}\label{classACG_1_1PolyLineT_aa6264baae214037edfc3ef11949bae3d}} 
unsigned int {\bfseries get\+\_\+num\+\_\+custom\+\_\+properties} () const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a6dcd908f4fa12a4ac8b66a45169adeff}\label{classACG_1_1PolyLineT_a6dcd908f4fa12a4ac8b66a45169adeff}} 
const void $\ast$ {\bfseries get\+\_\+custom\+\_\+property\+\_\+buffer} (Custom\+Property\+Handle \+\_\+property\+\_\+handle) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ad32d2b14e6d5a60dac5aecb7af133f90}\label{classACG_1_1PolyLineT_ad32d2b14e6d5a60dac5aecb7af133f90}} 
Custom\+Property\+Handle {\bfseries enumerate\+\_\+custom\+\_\+property\+\_\+handles} (unsigned int \+\_\+i) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a7bdcbf9b60746c12e3fe2d0c17756dd5}\label{classACG_1_1PolyLineT_a7bdcbf9b60746c12e3fe2d0c17756dd5}} 
bool {\bfseries vertex\+\_\+selected} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a9cc719f3d24ae77a0deb83e63bc387be}\label{classACG_1_1PolyLineT_a9cc719f3d24ae77a0deb83e63bc387be}} 
bool {\bfseries edge\+\_\+selected} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a3e659b5117d52e8f36ed2581b8b7136c}\label{classACG_1_1PolyLineT_a3e659b5117d52e8f36ed2581b8b7136c}} 
void {\bfseries select\+\_\+vertex} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a08b85c07a27539e7144a5724b45061d1}\label{classACG_1_1PolyLineT_a08b85c07a27539e7144a5724b45061d1}} 
void {\bfseries select\+\_\+edge} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ae70fe808b69b58baf0ac2d7ca0ecaf23}\label{classACG_1_1PolyLineT_ae70fe808b69b58baf0ac2d7ca0ecaf23}} 
void {\bfseries deselect\+\_\+vertex} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a1bd55ae4a18bdd4f7bf6f322b1bb8f07}\label{classACG_1_1PolyLineT_a1bd55ae4a18bdd4f7bf6f322b1bb8f07}} 
void {\bfseries deselect\+\_\+edge} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a4198907df058864e993d2a4f4c26a94f}\label{classACG_1_1PolyLineT_a4198907df058864e993d2a4f4c26a94f}} 
void {\bfseries copy\+\_\+vertex\+\_\+complete} (const \hyperlink{classACG_1_1PolyLineT}{Poly\+LineT}$<$ PointT $>$ \&\+\_\+pl, unsigned int \+\_\+i, unsigned int \+\_\+j)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_aad7a6ddf30b1f6aa4f0754896296432d}\label{classACG_1_1PolyLineT_aad7a6ddf30b1f6aa4f0754896296432d}} 
void {\bfseries copy\+\_\+edge\+\_\+complete} (const \hyperlink{classACG_1_1PolyLineT}{Poly\+LineT}$<$ PointT $>$ \&\+\_\+pl, unsigned int \+\_\+i, unsigned int \+\_\+j)
\end{DoxyCompactItemize}
\subsection*{Private Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a0cf37514ca5e15e04f018fc9a236a4ef}\label{classACG_1_1PolyLineT_a0cf37514ca5e15e04f018fc9a236a4ef}} 
typedef std\+::map$<$ std\+::string, \hyperlink{structACG_1_1PolyLineT_1_1CustomProperty}{Custom\+Property} $\ast$$>$ {\bfseries Custom\+Property\+Map}
\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$class MeshT , class Spatial\+SearchT $>$ }\\Point \hyperlink{classACG_1_1PolyLineT_a6320841026e4ce51e9f47ac2ddf8ff00}{find\+\_\+nearest\+\_\+point} (const MeshT \&\+\_\+mesh, const Point \&\+\_\+point, typename Mesh\+T\+::\+Face\+Handle \&\+\_\+fh, Spatial\+SearchT $\ast$\+\_\+ssearch=0, double $\ast$\+\_\+dbest=0)
\item 
{\footnotesize template$<$class MeshT , class Spatial\+SearchT $>$ }\\unsigned int \hyperlink{classACG_1_1PolyLineT_a664eef30d8ffd9c755adeae54c34e79b}{component\+\_\+of} (const \hyperlink{classOpenMesh_1_1PropertyManager}{Open\+Mesh\+::\+Property\+Manager}$<$ \hyperlink{structOpenMesh_1_1FPropHandleT}{Open\+Mesh\+::\+F\+Prop\+HandleT}$<$ unsigned int $>$, MeshT $>$ \&component, const PointT \&pt, Spatial\+SearchT \&\+\_\+ssearch)
\item 
{\footnotesize template$<$class MeshT $>$ }\\void \hyperlink{classACG_1_1PolyLineT_a45c46293b7f5f8580db9d6f6a8a545f6}{mark\+\_\+components} (\hyperlink{classOpenMesh_1_1PropertyManager}{Open\+Mesh\+::\+Property\+Manager}$<$ \hyperlink{structOpenMesh_1_1FPropHandleT}{Open\+Mesh\+::\+F\+Prop\+HandleT}$<$ unsigned int $>$, MeshT $>$ \&component)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ab5988f3995284a73627e36cd4fd1dcd3}\label{classACG_1_1PolyLineT_ab5988f3995284a73627e36cd4fd1dcd3}} 
{\footnotesize template$<$class PropT $>$ }\\void {\bfseries request\+\_\+prop} (unsigned int \&\+\_\+ref\+\_\+count, PropT \&\+\_\+prop)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ac92e65611200805ca7b30cbb295859a6}\label{classACG_1_1PolyLineT_ac92e65611200805ca7b30cbb295859a6}} 
{\footnotesize template$<$class PropT $>$ }\\void {\bfseries release\+\_\+prop} (unsigned int \&\+\_\+ref\+\_\+count, PropT \&\+\_\+prop)
\item 
{\footnotesize template$<$class I\+Point $>$ }\\bool \hyperlink{classACG_1_1PolyLineT_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 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a35b638708b4fed858a55e8a565779a08}\label{classACG_1_1PolyLineT_a35b638708b4fed858a55e8a565779a08}} 
{\footnotesize template$<$class MeshT $>$ }\\void {\bfseries edge\+\_\+points\+\_\+in\+\_\+segment} (const MeshT \&\+\_\+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)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a115c6e5e6bfab7868c64767d9b8870f0}\label{classACG_1_1PolyLineT_a115c6e5e6bfab7868c64767d9b8870f0}} 
\hyperlink{structACG_1_1PolyLineT_1_1CustomProperty}{Custom\+Property} $\ast$ {\bfseries custom\+\_\+prop} (Custom\+Property\+Handle \+\_\+handle)
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a9efa457355fa30f2595cc81d2052166d}\label{classACG_1_1PolyLineT_a9efa457355fa30f2595cc81d2052166d}} 
const \hyperlink{structACG_1_1PolyLineT_1_1CustomProperty}{Custom\+Property} $\ast$ {\bfseries custom\+\_\+prop} (Custom\+Property\+Handle \+\_\+handle) const
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a08aac903c69811cb80de7b613c1d4f7a}\label{classACG_1_1PolyLineT_a08aac903c69811cb80de7b613c1d4f7a}} 
Custom\+Property\+Handle {\bfseries custom\+\_\+prop\+\_\+handle} (const \hyperlink{structACG_1_1PolyLineT_1_1CustomProperty}{Custom\+Property} $\ast$) const
\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_adc9486b0ad8c28b4754ed31222abc03e}\label{classACG_1_1PolyLineT_adc9486b0ad8c28b4754ed31222abc03e}} 
std\+::vector$<$ Point $>$ \hyperlink{classACG_1_1PolyLineT_adc9486b0ad8c28b4754ed31222abc03e}{points\+\_\+}
\begin{DoxyCompactList}\small\item\em List of points in the polyline. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ac18f6b49b02a999d7ae25392ec42e265}\label{classACG_1_1PolyLineT_ac18f6b49b02a999d7ae25392ec42e265}} 
bool \hyperlink{classACG_1_1PolyLineT_ac18f6b49b02a999d7ae25392ec42e265}{closed\+\_\+}
\begin{DoxyCompactList}\small\item\em Connect first and last point? \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ae0dabdd308111f8c2e1a5a03fb9f0573}\label{classACG_1_1PolyLineT_ae0dabdd308111f8c2e1a5a03fb9f0573}} 
Scalar \hyperlink{classACG_1_1PolyLineT_ae0dabdd308111f8c2e1a5a03fb9f0573}{vertex\+\_\+radius\+\_\+}
\begin{DoxyCompactList}\small\item\em ball-\/radius of vertices \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a104e69cfeac35589b116b17737a6fcb8}\label{classACG_1_1PolyLineT_a104e69cfeac35589b116b17737a6fcb8}} 
Scalar \hyperlink{classACG_1_1PolyLineT_a104e69cfeac35589b116b17737a6fcb8}{edge\+\_\+radius\+\_\+}
\begin{DoxyCompactList}\small\item\em cylinder-\/radius of edges \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_aae267fca806c8a01f82f8a469457ffc7}\label{classACG_1_1PolyLineT_aae267fca806c8a01f82f8a469457ffc7}} 
std\+::vector$<$ Point $>$ {\bfseries vnormals\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a87cd0ffe27f15286b4a8d3deccc0c9ce}\label{classACG_1_1PolyLineT_a87cd0ffe27f15286b4a8d3deccc0c9ce}} 
std\+::vector$<$ Point $>$ {\bfseries vbinormals\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ad79b7395473c32c801f4cdf0a9130061}\label{classACG_1_1PolyLineT_ad79b7395473c32c801f4cdf0a9130061}} 
std\+::vector$<$ Point $>$ {\bfseries vcolors\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ac3bfdd2822fb94eea80e2067937f16a1}\label{classACG_1_1PolyLineT_ac3bfdd2822fb94eea80e2067937f16a1}} 
std\+::vector$<$ Scalar $>$ {\bfseries vscalars\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ae169d8b875ae84749e36c77cba8e0351}\label{classACG_1_1PolyLineT_ae169d8b875ae84749e36c77cba8e0351}} 
std\+::vector$<$ unsigned char $>$ {\bfseries vselections\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ad6c5641ce038806bb9247aee3a69ddaa}\label{classACG_1_1PolyLineT_ad6c5641ce038806bb9247aee3a69ddaa}} 
std\+::vector$<$ int $>$ {\bfseries vvhandles\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ae15fa1782a764c65d8c4bb7f2b767738}\label{classACG_1_1PolyLineT_ae15fa1782a764c65d8c4bb7f2b767738}} 
std\+::vector$<$ int $>$ {\bfseries vehandles\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a9e387cd24078350b9d645f0819a3e819}\label{classACG_1_1PolyLineT_a9e387cd24078350b9d645f0819a3e819}} 
std\+::vector$<$ int $>$ {\bfseries vfhandles\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_aac2bb34c71bcdbf8390155a153e7695d}\label{classACG_1_1PolyLineT_aac2bb34c71bcdbf8390155a153e7695d}} 
std\+::vector$<$ Point $>$ {\bfseries enormals\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a0ae0b660b8f846bf180af565a492ff99}\label{classACG_1_1PolyLineT_a0ae0b660b8f846bf180af565a492ff99}} 
std\+::vector$<$ Point $>$ {\bfseries ecolors\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a376f70a8a170ade5ebde2821dbba2c32}\label{classACG_1_1PolyLineT_a376f70a8a170ade5ebde2821dbba2c32}} 
std\+::vector$<$ Scalar $>$ {\bfseries escalars\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a32a943ef7d22293993d9e23d5ddf1eca}\label{classACG_1_1PolyLineT_a32a943ef7d22293993d9e23d5ddf1eca}} 
std\+::vector$<$ unsigned char $>$ {\bfseries eselections\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a0019ce0a561a320fb8467095696c604f}\label{classACG_1_1PolyLineT_a0019ce0a561a320fb8467095696c604f}} 
std\+::vector$<$ Point $>$ {\bfseries epreimage\+\_\+direction\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a1256efa6b616898f72f577d036783753}\label{classACG_1_1PolyLineT_a1256efa6b616898f72f577d036783753}} 
unsigned int {\bfseries ref\+\_\+count\+\_\+vnormals\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_abeb3759c3ecb9ec3ea10de3d712e8aa7}\label{classACG_1_1PolyLineT_abeb3759c3ecb9ec3ea10de3d712e8aa7}} 
unsigned int {\bfseries ref\+\_\+count\+\_\+vbinormals\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a03ff003f250a7406d1e246ec412666bc}\label{classACG_1_1PolyLineT_a03ff003f250a7406d1e246ec412666bc}} 
unsigned int {\bfseries ref\+\_\+count\+\_\+vcolors\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a66d3f006e4678c16043143e0f25622d8}\label{classACG_1_1PolyLineT_a66d3f006e4678c16043143e0f25622d8}} 
unsigned int {\bfseries ref\+\_\+count\+\_\+vscalars\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a207324a1b156bf06f4e2c9a8c55acdc5}\label{classACG_1_1PolyLineT_a207324a1b156bf06f4e2c9a8c55acdc5}} 
unsigned int {\bfseries ref\+\_\+count\+\_\+vselections\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_afb913456e1dfb6792209af66ca4242a5}\label{classACG_1_1PolyLineT_afb913456e1dfb6792209af66ca4242a5}} 
unsigned int {\bfseries ref\+\_\+count\+\_\+vvhandles\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ad119549f013cb5d2316921fa42eea05f}\label{classACG_1_1PolyLineT_ad119549f013cb5d2316921fa42eea05f}} 
unsigned int {\bfseries ref\+\_\+count\+\_\+vehandles\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a7477e051bb02cf6bca46268f4c90a371}\label{classACG_1_1PolyLineT_a7477e051bb02cf6bca46268f4c90a371}} 
unsigned int {\bfseries ref\+\_\+count\+\_\+vfhandles\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a73cd49368ce69f893b6fb380e5b395cc}\label{classACG_1_1PolyLineT_a73cd49368ce69f893b6fb380e5b395cc}} 
unsigned int {\bfseries ref\+\_\+count\+\_\+enormals\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a4a2bf37ef299f084e1fcbbdc98bf5db4}\label{classACG_1_1PolyLineT_a4a2bf37ef299f084e1fcbbdc98bf5db4}} 
unsigned int {\bfseries ref\+\_\+count\+\_\+ecolors\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a7162d06db85020cd6ba1624495d5ccfe}\label{classACG_1_1PolyLineT_a7162d06db85020cd6ba1624495d5ccfe}} 
unsigned int {\bfseries ref\+\_\+count\+\_\+escalars\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a637738bc4e548209ebdb6f1aab126fd3}\label{classACG_1_1PolyLineT_a637738bc4e548209ebdb6f1aab126fd3}} 
unsigned int {\bfseries ref\+\_\+count\+\_\+eselections\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_a86b3f89e3ec7ec73ab22570ba2e7690f}\label{classACG_1_1PolyLineT_a86b3f89e3ec7ec73ab22570ba2e7690f}} 
unsigned int {\bfseries ref\+\_\+count\+\_\+epreimage\+\_\+direction\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_aad09e7302696cc8019940840945502d7}\label{classACG_1_1PolyLineT_aad09e7302696cc8019940840945502d7}} 
Custom\+Property\+Map {\bfseries custom\+\_\+properties}
\item 
\mbox{\Hypertarget{classACG_1_1PolyLineT_ab9e884ddb643aa4dda3691be420e6758}\label{classACG_1_1PolyLineT_ab9e884ddb643aa4dda3691be420e6758}} 
std\+::vector$<$ \hyperlink{structACG_1_1PolyLineT_1_1CustomProperty}{Custom\+Property} $\ast$ $>$ {\bfseries cprop\+\_\+enum}
\end{DoxyCompactItemize}


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

/.../\+Poly\+LineT.hh$>$

Brief Description.

A more elaborate description follows. 

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



\subsection{Member Function Documentation}
\mbox{\Hypertarget{classACG_1_1PolyLineT_a3eb4fd2d772b5677ba61d487cd4182af}\label{classACG_1_1PolyLineT_a3eb4fd2d772b5677ba61d487cd4182af}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!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\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{bind\+\_\+custom\+\_\+property\+\_\+to\+\_\+shader()}{bind\_custom\_property\_to\_shader()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
void \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::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})}



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\+AT, G\+L\+\_\+\+U\+N\+S\+I\+G\+N\+E\+D\+\_\+\+B\+Y\+TE ... \\
\hline
\end{DoxyParams}


Definition at line 2321 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_aa7b0ae55f9d0ed779a89ef2ffc372c13}\label{classACG_1_1PolyLineT_aa7b0ae55f9d0ed779a89ef2ffc372c13}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!collapse@{collapse}}
\index{collapse@{collapse}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{collapse()}{collapse()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
void \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::collapse (\begin{DoxyParamCaption}\item[{Scalar}]{\+\_\+smallest }\end{DoxyParamCaption})}



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 667 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_a664eef30d8ffd9c755adeae54c34e79b}\label{classACG_1_1PolyLineT_a664eef30d8ffd9c755adeae54c34e79b}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!component\+\_\+of@{component\+\_\+of}}
\index{component\+\_\+of@{component\+\_\+of}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{component\+\_\+of()}{component\_of()}}
{\footnotesize\ttfamily template$<$class PointT$>$ \\
template$<$class MeshT , class Spatial\+SearchT $>$ \\
unsigned int \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::component\+\_\+of (\begin{DoxyParamCaption}\item[{const \hyperlink{classOpenMesh_1_1PropertyManager}{Open\+Mesh\+::\+Property\+Manager}$<$ \hyperlink{structOpenMesh_1_1FPropHandleT}{Open\+Mesh\+::\+F\+Prop\+HandleT}$<$ unsigned int $>$, MeshT $>$ \&}]{component,  }\item[{const PointT \&}]{pt,  }\item[{Spatial\+SearchT \&}]{\+\_\+ssearch }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}

Assuming component is a property manager that has been initialized using \hyperlink{classACG_1_1PolyLineT_a45c46293b7f5f8580db9d6f6a8a545f6}{mark\+\_\+components()}, return the number of the component of the face pt gets projected to using \+\_\+ssearch. 

Definition at line 1982 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_a6320841026e4ce51e9f47ac2ddf8ff00}\label{classACG_1_1PolyLineT_a6320841026e4ce51e9f47ac2ddf8ff00}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!find\+\_\+nearest\+\_\+point@{find\+\_\+nearest\+\_\+point}}
\index{find\+\_\+nearest\+\_\+point@{find\+\_\+nearest\+\_\+point}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{find\+\_\+nearest\+\_\+point()}{find\_nearest\_point()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
template$<$class MeshT , class Spatial\+SearchT $>$ \\
\hyperlink{classACG_1_1PolyLineT}{Poly\+LineT}$<$ PointT $>$\+::Point \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::find\+\_\+nearest\+\_\+point (\begin{DoxyParamCaption}\item[{const MeshT \&}]{\+\_\+mesh,  }\item[{const Point \&}]{\+\_\+point,  }\item[{typename Mesh\+T\+::\+Face\+Handle \&}]{\+\_\+fh,  }\item[{Spatial\+SearchT $\ast$}]{\+\_\+ssearch = {\ttfamily 0},  }\item[{double $\ast$}]{\+\_\+dbest = {\ttfamily 0} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}

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 1001 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_a696d319de7bf52692098c5367c8d97a3}\label{classACG_1_1PolyLineT_a696d319de7bf52692098c5367c8d97a3}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!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\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{get\+\_\+custom\+\_\+property\+\_\+shader\+\_\+binding()}{get\_custom\_property\_shader\_binding()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
bool \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::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}



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 2337 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_a4a2d038bfb814c981e8cfc3b8a356e12}\label{classACG_1_1PolyLineT_a4a2d038bfb814c981e8cfc3b8a356e12}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!get\+\_\+line\+\_\+node@{get\+\_\+line\+\_\+node}}
\index{get\+\_\+line\+\_\+node@{get\+\_\+line\+\_\+node}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{get\+\_\+line\+\_\+node()}{get\_line\_node()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
template$<$class Line\+NodeT $>$ \\
Line\+NodeT $\ast$ \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::get\+\_\+line\+\_\+node (\begin{DoxyParamCaption}\item[{Line\+NodeT $\ast$\&}]{\+\_\+line\+\_\+node,  }\item[{int}]{\+\_\+mode = {\ttfamily 0} }\end{DoxyParamCaption})}



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 1075 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_a13292d435e2938dfaff985f2e209c947}\label{classACG_1_1PolyLineT_a13292d435e2938dfaff985f2e209c947}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!insert\+\_\+point@{insert\+\_\+point}}
\index{insert\+\_\+point@{insert\+\_\+point}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{insert\+\_\+point()}{insert\_point()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
void \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::insert\+\_\+point (\begin{DoxyParamCaption}\item[{int}]{\+\_\+idx,  }\item[{const Point \&}]{\+\_\+p }\end{DoxyParamCaption})}



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 347 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_acc823da0afe1c96bba47a3acd801be3b}\label{classACG_1_1PolyLineT_acc823da0afe1c96bba47a3acd801be3b}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!is\+\_\+closed@{is\+\_\+closed}}
\index{is\+\_\+closed@{is\+\_\+closed}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{is\+\_\+closed()}{is\_closed()}}
{\footnotesize\ttfamily template$<$class PointT$>$ \\
bool \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::is\+\_\+closed (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



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 107 of file Poly\+Line\+T.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_ad84ed4609808fbf3367058382039bed8}\label{classACG_1_1PolyLineT_ad84ed4609808fbf3367058382039bed8}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!length@{length}}
\index{length@{length}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{length()}{length()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
\hyperlink{classACG_1_1PolyLineT}{Poly\+LineT}$<$ PointT $>$\+::Scalar \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::length (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}



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

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


Definition at line 479 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_a45c46293b7f5f8580db9d6f6a8a545f6}\label{classACG_1_1PolyLineT_a45c46293b7f5f8580db9d6f6a8a545f6}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!mark\+\_\+components@{mark\+\_\+components}}
\index{mark\+\_\+components@{mark\+\_\+components}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{mark\+\_\+components()}{mark\_components()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
template$<$class MeshT $>$ \\
void \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::mark\+\_\+components (\begin{DoxyParamCaption}\item[{\hyperlink{classOpenMesh_1_1PropertyManager}{Open\+Mesh\+::\+Property\+Manager}$<$ \hyperlink{structOpenMesh_1_1FPropHandleT}{Open\+Mesh\+::\+F\+Prop\+HandleT}$<$ unsigned int $>$, MeshT $>$ \&}]{component }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}

Enumerate connected components of the property manager\textquotesingle{}s mesh and assign each face its component\textquotesingle{}s number using the property manager. 

Definition at line 1930 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_a16680cb23a78c9f0295e3a8d73dd40e6}\label{classACG_1_1PolyLineT_a16680cb23a78c9f0295e3a8d73dd40e6}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!on\+\_\+multiple\+\_\+components@{on\+\_\+multiple\+\_\+components}}
\index{on\+\_\+multiple\+\_\+components@{on\+\_\+multiple\+\_\+components}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{on\+\_\+multiple\+\_\+components()}{on\_multiple\_components()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
template$<$class MeshT , class Spatial\+SearchT $>$ \\
bool \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::on\+\_\+multiple\+\_\+components (\begin{DoxyParamCaption}\item[{MeshT \&}]{\+\_\+mesh,  }\item[{Spatial\+SearchT \&}]{\+\_\+ssearch }\end{DoxyParamCaption})}

Indicates whether the entire poly line lies on the same connected component of the supplied mesh. 

Definition at line 2000 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_ae713dc3182cdf290fc0119605e1bd2e1}\label{classACG_1_1PolyLineT_ae713dc3182cdf290fc0119605e1bd2e1}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!plane\+\_\+line\+\_\+intersection@{plane\+\_\+line\+\_\+intersection}}
\index{plane\+\_\+line\+\_\+intersection@{plane\+\_\+line\+\_\+intersection}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{plane\+\_\+line\+\_\+intersection()}{plane\_line\_intersection()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
template$<$class I\+Point $>$ \\
bool \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::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]}}

Intersect point with line


\begin{DoxyParams}{Parameters}
{\em \+\_\+p\+\_\+plane} & Plane point \\
\hline
{\em \+\_\+n\+\_\+plane} & 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 1488 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_a774f94c0b7fb5e1b102fd338089563ed}\label{classACG_1_1PolyLineT_a774f94c0b7fb5e1b102fd338089563ed}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!position@{position}}
\index{position@{position}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{position()}{position()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
\hyperlink{classACG_1_1PolyLineT}{Poly\+LineT}$<$ PointT $>$\+::Point \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::position (\begin{DoxyParamCaption}\item[{const Scalar}]{\+\_\+t }\end{DoxyParamCaption}) const}



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 510 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_a4a157f88b1ae6ee154924d17a03acdcb}\label{classACG_1_1PolyLineT_a4a157f88b1ae6ee154924d17a03acdcb}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!position\+\_\+arclength@{position\+\_\+arclength}}
\index{position\+\_\+arclength@{position\+\_\+arclength}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{position\+\_\+arclength()}{position\_arclength()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
\hyperlink{classACG_1_1PolyLineT}{Poly\+LineT}$<$ PointT $>$\+::Point \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::position\+\_\+arclength (\begin{DoxyParamCaption}\item[{const Scalar}]{\+\_\+t }\end{DoxyParamCaption}) const}



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

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

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


Definition at line 523 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_abe2a308364a224740873d64fa95d4b63}\label{classACG_1_1PolyLineT_abe2a308364a224740873d64fa95d4b63}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!project\+\_\+to\+\_\+mesh@{project\+\_\+to\+\_\+mesh}}
\index{project\+\_\+to\+\_\+mesh@{project\+\_\+to\+\_\+mesh}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{project\+\_\+to\+\_\+mesh()}{project\_to\_mesh()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
template$<$class MeshT , class Spatial\+SearchT $>$ \\
void \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::project\+\_\+to\+\_\+mesh (\begin{DoxyParamCaption}\item[{const MeshT \&}]{\+\_\+mesh,  }\item[{Spatial\+SearchT $\ast$}]{\+\_\+ssearch = {\ttfamily 0} }\end{DoxyParamCaption})}



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 932 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_a3f7b10e0f0c5eab6d91215cc22abd5f2}\label{classACG_1_1PolyLineT_a3f7b10e0f0c5eab6d91215cc22abd5f2}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!project\+\_\+to\+\_\+mesh@{project\+\_\+to\+\_\+mesh}}
\index{project\+\_\+to\+\_\+mesh@{project\+\_\+to\+\_\+mesh}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{project\+\_\+to\+\_\+mesh()}{project\_to\_mesh()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
template$<$class MeshT , class Spatial\+SearchT $>$ \\
void \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::project\+\_\+to\+\_\+mesh (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ MeshT $\ast$$>$ \&}]{\+\_\+mesh,  }\item[{std\+::vector$<$ Spatial\+SearchT $\ast$$>$ $\ast$}]{\+\_\+ssearch = {\ttfamily 0} }\end{DoxyParamCaption})}



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 953 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_a59d31b0ff2a819b1be6a7b7e87940124}\label{classACG_1_1PolyLineT_a59d31b0ff2a819b1be6a7b7e87940124}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!remove\+\_\+subsequent\+\_\+identical\+\_\+points@{remove\+\_\+subsequent\+\_\+identical\+\_\+points}}
\index{remove\+\_\+subsequent\+\_\+identical\+\_\+points@{remove\+\_\+subsequent\+\_\+identical\+\_\+points}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{remove\+\_\+subsequent\+\_\+identical\+\_\+points()}{remove\_subsequent\_identical\_points()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
void \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::remove\+\_\+subsequent\+\_\+identical\+\_\+points (\begin{DoxyParamCaption}\item[{const bool}]{\+\_\+keep\+\_\+edge\+\_\+vertices = {\ttfamily false},  }\item[{const double}]{\+\_\+epsilon = {\ttfamily 1e-\/6} }\end{DoxyParamCaption})}



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 1754 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_a8f555970037dab39734debb889fed126}\label{classACG_1_1PolyLineT_a8f555970037dab39734debb889fed126}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!resample\+\_\+arclength\+\_\+uniform@{resample\+\_\+arclength\+\_\+uniform}}
\index{resample\+\_\+arclength\+\_\+uniform@{resample\+\_\+arclength\+\_\+uniform}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{resample\+\_\+arclength\+\_\+uniform()}{resample\_arclength\_uniform()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
void \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::resample\+\_\+arclength\+\_\+uniform (\begin{DoxyParamCaption}\item[{const unsigned int}]{\+\_\+n }\end{DoxyParamCaption})}



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 575 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_a3e00211224dbfd08cb33547f6af656e9}\label{classACG_1_1PolyLineT_a3e00211224dbfd08cb33547f6af656e9}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!set\+\_\+closed@{set\+\_\+closed}}
\index{set\+\_\+closed@{set\+\_\+closed}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{set\+\_\+closed()}{set\_closed()}}
{\footnotesize\ttfamily template$<$class PointT$>$ \\
void \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::set\+\_\+closed (\begin{DoxyParamCaption}\item[{const bool}]{\+\_\+c }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



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 113 of file Poly\+Line\+T.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_adc71a5d54493b7609ce336d4afa4e4a9}\label{classACG_1_1PolyLineT_adc71a5d54493b7609ce336d4afa4e4a9}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!set\+\_\+line\+\_\+node@{set\+\_\+line\+\_\+node}}
\index{set\+\_\+line\+\_\+node@{set\+\_\+line\+\_\+node}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{set\+\_\+line\+\_\+node()}{set\_line\_node()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
template$<$class Line\+NodeT $>$ \\
void \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::set\+\_\+line\+\_\+node (\begin{DoxyParamCaption}\item[{Line\+NodeT $\ast$\&}]{\+\_\+line\+\_\+node,  }\item[{int}]{\+\_\+mode = {\ttfamily 0} }\end{DoxyParamCaption})}



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 1138 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_acda9e80a724c2796fe337cab0cddf6b8}\label{classACG_1_1PolyLineT_acda9e80a724c2796fe337cab0cddf6b8}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!split@{split}}
\index{split@{split}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{split()}{split()}}
{\footnotesize\ttfamily template$<$class PointT$>$ \\
void \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::split (\begin{DoxyParamCaption}\item[{unsigned int}]{\+\_\+split\+\_\+idx,  }\item[{\hyperlink{classACG_1_1PolyLineT}{Poly\+LineT}$<$ PointT $>$ \&}]{\+\_\+new\+\_\+pl }\end{DoxyParamCaption})}



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 1458 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_a074fdffe888db65d60199a455602c41a}\label{classACG_1_1PolyLineT_a074fdffe888db65d60199a455602c41a}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!split\+\_\+closed@{split\+\_\+closed}}
\index{split\+\_\+closed@{split\+\_\+closed}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{split\+\_\+closed()}{split\_closed()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
void \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::split\+\_\+closed (\begin{DoxyParamCaption}\item[{unsigned int}]{\+\_\+split\+\_\+idx }\end{DoxyParamCaption})}



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


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


Definition at line 1426 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_af41de493da0fba49b2050d1090bfcf32}\label{classACG_1_1PolyLineT_af41de493da0fba49b2050d1090bfcf32}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!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\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{split\+\_\+into\+\_\+one\+\_\+per\+\_\+component()}{split\_into\_one\_per\_component()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
template$<$class MeshT , class Spatial\+SearchT $>$ \\
void \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::split\+\_\+into\+\_\+one\+\_\+per\+\_\+component (\begin{DoxyParamCaption}\item[{MeshT \&}]{\+\_\+mesh,  }\item[{Spatial\+SearchT \&}]{\+\_\+ssearch,  }\item[{std\+::vector$<$ \hyperlink{classACG_1_1PolyLineT}{Poly\+LineT}$<$ PointT $>$ $>$ \&}]{out\+\_\+polylines }\end{DoxyParamCaption})}

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 2029 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_acc204b0dcc95d8edd64d1f4f16b424ee}\label{classACG_1_1PolyLineT_acc204b0dcc95d8edd64d1f4f16b424ee}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!subdivide@{subdivide}}
\index{subdivide@{subdivide}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{subdivide()}{subdivide()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
void \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::subdivide (\begin{DoxyParamCaption}\item[{Scalar}]{\+\_\+largest }\end{DoxyParamCaption})}



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 614 of file Poly\+Line\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1PolyLineT_aea99fa239d2a436a737d6caeada0d99c}\label{classACG_1_1PolyLineT_aea99fa239d2a436a737d6caeada0d99c}} 
\index{A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}!total\+\_\+gaussian\+\_\+curvature@{total\+\_\+gaussian\+\_\+curvature}}
\index{total\+\_\+gaussian\+\_\+curvature@{total\+\_\+gaussian\+\_\+curvature}!A\+C\+G\+::\+Poly\+LineT@{A\+C\+G\+::\+Poly\+LineT}}
\subsubsection{\texorpdfstring{total\+\_\+gaussian\+\_\+curvature()}{total\_gaussian\_curvature()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
\hyperlink{classACG_1_1PolyLineT}{Poly\+LineT}$<$ PointT $>$\+::Scalar \hyperlink{classACG_1_1PolyLineT}{A\+C\+G\+::\+Poly\+LineT}$<$ PointT $>$\+::total\+\_\+gaussian\+\_\+curvature (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



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 1836 of file Poly\+Line\+T\+\_\+impl.\+hh.



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