\doxysection{Path Class Reference}
\hypertarget{classPath}{}\label{classPath}\index{Path@{Path}}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classPath_a1fbf57d4482affa9abc115c94a7be322}\label{classPath_a1fbf57d4482affa9abc115c94a7be322} 
const \mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} \& {\bfseries get\+Point} (uint i) const
\item 
\Hypertarget{classPath_a24149efab2e31190dd53959483cd0a10}\label{classPath_a24149efab2e31190dd53959483cd0a10} 
const std\+::vector$<$ \mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} $>$ \& {\bfseries get\+Points} () const
\item 
\Hypertarget{classPath_a25acc046895b709ad9fa4713f05bcd63}\label{classPath_a25acc046895b709ad9fa4713f05bcd63} 
void {\bfseries set\+Point} (uint i, const \mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} \&v)
\item 
\Hypertarget{classPath_a3bf3a5369242a131a18ca881925a4516}\label{classPath_a3bf3a5369242a131a18ca881925a4516} 
const \mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} \& {\bfseries front} () const
\item 
\Hypertarget{classPath_aafbb72158b8aefec6264b803de5065c6}\label{classPath_aafbb72158b8aefec6264b803de5065c6} 
const \mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} \& {\bfseries back} () const
\item 
\Hypertarget{classPath_addd13e4d7ce92f8bda0826d56e95d33e}\label{classPath_addd13e4d7ce92f8bda0826d56e95d33e} 
const \mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} \& {\bfseries back} (uint n) const
\item 
\Hypertarget{classPath_ad57b410f90644e148bda5ea43d55e678}\label{classPath_ad57b410f90644e148bda5ea43d55e678} 
\mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} {\bfseries pop\+\_\+back} ()
\item 
\Hypertarget{classPath_a96ddacf1fcbb3f4b4d0829596df0f4c9}\label{classPath_a96ddacf1fcbb3f4b4d0829596df0f4c9} 
bool {\bfseries is\+Planar\+At} (uint i) const
\item 
\Hypertarget{classPath_adeff62948352dce1653fad19503f9541}\label{classPath_adeff62948352dce1653fad19503f9541} 
Segment\+\_\+2 {\bfseries get\+Segment\+At} (uint i) const
\item 
\Hypertarget{classPath_a3d54ab32aab416a52e387f57ee08e44d}\label{classPath_a3d54ab32aab416a52e387f57ee08e44d} 
uint {\bfseries num\+Points} () const
\item 
\Hypertarget{classPath_a75bd5ccf60152fefaff1df56be09946b}\label{classPath_a75bd5ccf60152fefaff1df56be09946b} 
bool {\bfseries empty} () const
\item 
\Hypertarget{classPath_a689c8f8ee7009f1cc5782fa895bbd181}\label{classPath_a689c8f8ee7009f1cc5782fa895bbd181} 
uint {\bfseries num\+Layer\+Changes} () const
\item 
\Hypertarget{classPath_a4630da04de7520bc74d63f4d3f876349}\label{classPath_a4630da04de7520bc74d63f4d3f876349} 
Real {\bfseries length} () const
\begin{DoxyCompactList}\small\item\em \doxylink{classLength}{Length} of the path (assumes it is contiguous). \end{DoxyCompactList}\item 
\Hypertarget{classPath_acff95a303d8c067ca614e20af902b1ad}\label{classPath_acff95a303d8c067ca614e20af902b1ad} 
Real {\bfseries RMSD} () const
\begin{DoxyCompactList}\small\item\em The root mean squared distance of the from the straight line between the first and last point (assumes a contiguous path). \end{DoxyCompactList}\item 
\Hypertarget{classPath_a63c7be5313fdbf8bea4f2c58cfa678c5}\label{classPath_a63c7be5313fdbf8bea4f2c58cfa678c5} 
float {\bfseries winding} () const
\begin{DoxyCompactList}\small\item\em The winding number is the sum of the angles between the segments (0 for an Z, 90 for an L, 180 for a U). \end{DoxyCompactList}\item 
\Hypertarget{classPath_ab54a6b8c97506cb25ea6091bc6a6f8d3}\label{classPath_ab54a6b8c97506cb25ea6091bc6a6f8d3} 
float {\bfseries turning} () const
\item 
\Hypertarget{classPath_a226cea5a06ae39f9646e8e26bcc2cb24}\label{classPath_a226cea5a06ae39f9646e8e26bcc2cb24} 
Bbox\+\_\+2 {\bfseries bbox} () const
\item 
\Hypertarget{classPath_a263df0daa57d9b641d8285ac435f7b64}\label{classPath_a263df0daa57d9b641d8285ac435f7b64} 
Bbox\+\_\+2 {\bfseries bbox} (int z) const
\item 
\Hypertarget{classPath_a3e94fc24f7c713442f3d52478d0772fb}\label{classPath_a3e94fc24f7c713442f3d52478d0772fb} 
void {\bfseries clear} ()
\item 
\Hypertarget{classPath_a3952313259448f75fb63505d3f15f70c}\label{classPath_a3952313259448f75fb63505d3f15f70c} 
void {\bfseries resize\+To1} ()
\item 
\Hypertarget{classPath_a5d6beb7e112816272c0018a5e01da5b3}\label{classPath_a5d6beb7e112816272c0018a5e01da5b3} 
void {\bfseries set\+Points} (const std\+::vector$<$ \mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} $>$ \&, uint start, uint size)
\begin{DoxyCompactList}\small\item\em All modification functions except reverse() invalidate the statistics. \end{DoxyCompactList}\item 
\Hypertarget{classPath_aa6f25e9daec874cec56e477a0e37bbac}\label{classPath_aa6f25e9daec874cec56e477a0e37bbac} 
void {\bfseries \+\_\+add} (const \mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} \&v)
\begin{DoxyCompactList}\small\item\em Adds the new point but does not update any statistics or do any checks. \end{DoxyCompactList}\item 
\Hypertarget{classPath_ae36608956c5c9df3619dbb92a70a656c}\label{classPath_ae36608956c5c9df3619dbb92a70a656c} 
void {\bfseries add} (const \mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} \&)
\begin{DoxyCompactList}\small\item\em Adds the new point and updates length and layer change count. Asserts that layer changes don\textquotesingle{}t have planar movement. \end{DoxyCompactList}\item 
\Hypertarget{classPath_a07a449389efd36a74abedd56f3b016e0}\label{classPath_a07a449389efd36a74abedd56f3b016e0} 
void {\bfseries extend\+To} (const \mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} \&)
\begin{DoxyCompactList}\small\item\em Adds the new point; replaces the last point if the new one continues the segment formed by the last two points (but not if its between the last two, i.\+e. if the path turns back). \end{DoxyCompactList}\item 
\Hypertarget{classPath_aa6d065513cd18d7e1fe5b03b21d85c9d}\label{classPath_aa6d065513cd18d7e1fe5b03b21d85c9d} 
void {\bfseries append} (const \mbox{\hyperlink{classPath}{Path}} \&)
\item 
\Hypertarget{classPath_a7bba11c6c32823d91b1e9bf00a6baa2e}\label{classPath_a7bba11c6c32823d91b1e9bf00a6baa2e} 
void {\bfseries reverse} ()
\item 
\Hypertarget{classPath_af4bdaa4c9994b7320bc963f0711228d0}\label{classPath_af4bdaa4c9994b7320bc963f0711228d0} 
uint {\bfseries remove\+Unnecessary\+Points} ()
\item 
\Hypertarget{classPath_af0b7f2edf9ac2ea96f96a235c0c52340}\label{classPath_af0b7f2edf9ac2ea96f96a235c0c52340} 
void {\bfseries compute\+Length} ()
\begin{DoxyCompactList}\small\item\em These need to be called whenever segments are added or removed. \end{DoxyCompactList}\item 
\Hypertarget{classPath_a6a6f230eb15dcfbfde0863a245181179}\label{classPath_a6a6f230eb15dcfbfde0863a245181179} 
void {\bfseries compute\+RMSD} ()
\item 
\Hypertarget{classPath_ad07d9d718eb3cfe1562ca56e69cd66d2}\label{classPath_ad07d9d718eb3cfe1562ca56e69cd66d2} 
void {\bfseries compute\+Winding} ()
\item 
\Hypertarget{classPath_a3089719178b4646357bb0fee041d12cf}\label{classPath_a3089719178b4646357bb0fee041d12cf} 
bool {\bfseries compare} (const \mbox{\hyperlink{classPath}{Path}} \&) const
\item 
\Hypertarget{classPath_a6dbbcdba80378993797fe5b416466066}\label{classPath_a6dbbcdba80378993797fe5b416466066} 
Real {\bfseries squared\+\_\+distance} (const \mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} \&, Real dz=std\+::numeric\+\_\+limits$<$ Real $>$\+::infinity()) const
\item 
\Hypertarget{classPath_ab0be4476b013a47ec22dcfebc74313ae}\label{classPath_ab0be4476b013a47ec22dcfebc74313ae} 
Real {\bfseries squared\+\_\+distance} (const \mbox{\hyperlink{classPin}{Pin}} \&) const
\item 
\Hypertarget{classPath_a9bab6a76b62dfb434ba6f2ec6f50b5f2}\label{classPath_a9bab6a76b62dfb434ba6f2ec6f50b5f2} 
bool {\bfseries intersects} (const \mbox{\hyperlink{classPath}{Path}} \&) const
\item 
\Hypertarget{classPath_a5f01ce1eff78b7ced24f3cf818fa15bb}\label{classPath_a5f01ce1eff78b7ced24f3cf818fa15bb} 
bool {\bfseries violates\+Clearance} (const \mbox{\hyperlink{classPath}{Path}} \&, Real clearance) const
\item 
\Hypertarget{classPath_afb50ada51c9a264311c3d1eac1cbe1f2}\label{classPath_afb50ada51c9a264311c3d1eac1cbe1f2} 
bool {\bfseries violates\+Clearance} (const \mbox{\hyperlink{classVia}{Via}} \&, Real clearance) const
\item 
\Hypertarget{classPath_a299b7cd0e912bc2f40152867970a350d}\label{classPath_a299b7cd0e912bc2f40152867970a350d} 
uint {\bfseries count\+Intersections} (const \mbox{\hyperlink{classPath}{Path}} \&) const
\item 
\Hypertarget{classPath_a486a92501ee0ef7281a5146ccaf243be}\label{classPath_a486a92501ee0ef7281a5146ccaf243be} 
std\+::string {\bfseries str} () const
\item 
\Hypertarget{classPath_aa36c6c7af1fda595038e3002f933f3f9}\label{classPath_aa36c6c7af1fda595038e3002f933f3f9} 
Py\+Object \texorpdfstring{$\ast$}{*} {\bfseries get\+Integer\+Points\+Py} (Real scale\+XY) const
\item 
\Hypertarget{classPath_a6e08f72b7d449cddeb7ce11296dd83c5}\label{classPath_a6e08f72b7d449cddeb7ce11296dd83c5} 
Py\+Object \texorpdfstring{$\ast$}{*} {\bfseries get\+Points\+Numpy} () const
\end{DoxyCompactItemize}
\doxysubsubsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classPath_a75bdee75c59fd3fceccb1734c36d8c03}\label{classPath_a75bdee75c59fd3fceccb1734c36d8c03} 
std\+::vector$<$ \mbox{\hyperlink{classPoint__25}{Point\+\_\+25}} $>$ {\bfseries m\+Points}
\item 
\Hypertarget{classPath_a7bcf9fcaffaed5a305bde9d9c3eb6e73}\label{classPath_a7bcf9fcaffaed5a305bde9d9c3eb6e73} 
uint {\bfseries m\+Num\+Layer\+Changes} \{0\}
\item 
\Hypertarget{classPath_a8c33de82ae94010d4bb2c9ced9145ff0}\label{classPath_a8c33de82ae94010d4bb2c9ced9145ff0} 
Real {\bfseries m\+Length} \{0.\+0f\}
\item 
\Hypertarget{classPath_a6a886b7dee0cf3a2366a94f8b1a27ba5}\label{classPath_a6a886b7dee0cf3a2366a94f8b1a27ba5} 
Real {\bfseries m\+RMSD}
\item 
\Hypertarget{classPath_ad60228a02a15ac1320b5a6dc20d6f871}\label{classPath_ad60228a02a15ac1320b5a6dc20d6f871} 
float {\bfseries m\+Winding}
\item 
\Hypertarget{classPath_a7b8c72a3b932926221af28b7ca89100d}\label{classPath_a7b8c72a3b932926221af28b7ca89100d} 
float {\bfseries m\+Turning}
\end{DoxyCompactItemize}


The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
/home/chr/devel/\+Ph\+D/\+Environment/pub/\+PCBEnv/pcbenv/cxx/Path.\+hpp\end{DoxyCompactItemize}
