\doxysection{AShape.\+hpp}
\hypertarget{AShape_8hpp_source}{}\label{AShape_8hpp_source}\index{/home/chr/devel/PhD/Environment/pub/PCBEnv/pcbenv/cxx/AShape.hpp@{/home/chr/devel/PhD/Environment/pub/PCBEnv/pcbenv/cxx/AShape.hpp}}

\begin{DoxyCode}{0}
\DoxyCodeLine{00001\ }
\DoxyCodeLine{00002\ \textcolor{preprocessor}{\#ifndef\ GYM\_PCB\_ASHAPE\_H}}
\DoxyCodeLine{00003\ \textcolor{preprocessor}{\#define\ GYM\_PCB\_ASHAPE\_H}}
\DoxyCodeLine{00004\ }
\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#include\ "{}Py.hpp"{}}}
\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#include\ "{}Geometry.hpp"{}}}
\DoxyCodeLine{00007\ \textcolor{preprocessor}{\#include\ "{}Math/Misc.hpp"{}}}
\DoxyCodeLine{00008\ \textcolor{preprocessor}{\#include\ <cassert>}}
\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <sstream>}}
\DoxyCodeLine{00010\ }
\DoxyCodeLine{00011\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classCircleEx}{CircleEx}};}
\DoxyCodeLine{00012\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classIsoRectEx}{IsoRectEx}};}
\DoxyCodeLine{00013\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classTriangleEx}{TriangleEx}};}
\DoxyCodeLine{00014\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classPolygonEx}{PolygonEx}};}
\DoxyCodeLine{00015\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classWideSegment__25}{WideSegment\_25}};}
\DoxyCodeLine{00016\ }
\DoxyCodeLine{00020\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classAShape}{AShape}}}
\DoxyCodeLine{00021\ \{}
\DoxyCodeLine{00022\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00023\ \ \ \ \ \textcolor{keyword}{virtual}\ \mbox{\hyperlink{classAShape}{\string~AShape}}()\ \{\ \}}
\DoxyCodeLine{00024\ }
\DoxyCodeLine{00025\ \ \ \ \ \textcolor{keyword}{template}<\textcolor{keyword}{typename}\ T>\ \ \ \ \ \ \ T\ *as()\ \ \ \ \ \ \ \{\ \textcolor{keywordflow}{return}\ \textcolor{keyword}{dynamic\_cast<}\ \ \ \ \ \ T\ *\textcolor{keyword}{>}(\textcolor{keyword}{this});\ \}}
\DoxyCodeLine{00026\ \ \ \ \ \textcolor{keyword}{template}<\textcolor{keyword}{typename}\ T>\ \textcolor{keyword}{const}\ T\ *as()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \textcolor{keyword}{dynamic\_cast<}\textcolor{keyword}{const\ }T\ *\textcolor{keyword}{>}(\textcolor{keyword}{this});\ \}}
\DoxyCodeLine{00027\ }
\DoxyCodeLine{00028\ \ \ \ \ \textcolor{keyword}{virtual}\ \mbox{\hyperlink{classAShape}{AShape}}\ *clone()\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00029\ }
\DoxyCodeLine{00033\ \ \ \ \ \textcolor{keyword}{virtual}\ uint\ \mbox{\hyperlink{classAShape_a5c1e088fcefb55861c198cc0bda1d22c}{vertexCount}}()\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00034\ \ \ \ \ \textcolor{keyword}{virtual}\ uint\ indexCountWithRestart()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classAShape_a5c1e088fcefb55861c198cc0bda1d22c}{vertexCount}}()\ +\ 1;\ \}}
\DoxyCodeLine{00035\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{bool}\ canDrawAsTriFan()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \textcolor{keyword}{true};\ \}}
\DoxyCodeLine{00036\ }
\DoxyCodeLine{00037\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{bool}\ isRound()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \textcolor{keyword}{false};\ \}}
\DoxyCodeLine{00038\ }
\DoxyCodeLine{00039\ \ \ \ \ \textcolor{keyword}{virtual}\ Real\ unsignedArea()\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00040\ }
\DoxyCodeLine{00041\ \ \ \ \ \textcolor{keyword}{virtual}\ Bbox\_2\ bbox()\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00042\ }
\DoxyCodeLine{00043\ \ \ \ \ Real\ boundingRadius()\ \textcolor{keyword}{const};}
\DoxyCodeLine{00044\ }
\DoxyCodeLine{00050\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{classAShape_a00057d53de327c100757dd10a6656285}{transformPreservesType}}(\textcolor{keyword}{const}\ CGAL::Aff\_transformation\_2<Kernel>\&)\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \textcolor{keyword}{true};\ \}}
\DoxyCodeLine{00051\ }
\DoxyCodeLine{00055\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classAShape_a396ab3ae1d921d8d3f37f5f2f0f98c66}{transform}}(\textcolor{keyword}{const}\ CGAL::Aff\_transformation\_2<Kernel>\&)\ =\ 0;}
\DoxyCodeLine{00056\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{void}\ translate(\textcolor{keyword}{const}\ Vector\_2\&)\ =\ 0;}
\DoxyCodeLine{00057\ }
\DoxyCodeLine{00062\ \ \ \ \ \textcolor{keyword}{virtual}\ \mbox{\hyperlink{classAShape}{AShape}}\ *\mbox{\hyperlink{classAShape_a6357c580061743d2393287c585c7149a}{transformType}}(\textcolor{keyword}{const}\ CGAL::Aff\_transformation\_2<Kernel>\&);}
\DoxyCodeLine{00063\ }
\DoxyCodeLine{00064\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{bool}\ contains(\textcolor{keyword}{const}\ Point\_2\&)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00065\ }
\DoxyCodeLine{00066\ \ \ \ \ \textcolor{keyword}{virtual}\ Real\ squared\_distance(\textcolor{keyword}{const}\ \mbox{\hyperlink{classAShape}{AShape}}\&)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00067\ }
\DoxyCodeLine{00068\ \ \ \ \ \textcolor{keyword}{virtual}\ Real\ squared\_distance(const\ ::Point\_2\&)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00069\ \ \ \ \ \textcolor{keyword}{virtual}\ Real\ squared\_distance(\textcolor{keyword}{const}\ Segment\_2\&)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00070\ \ \ \ \ \textcolor{keyword}{virtual}\ Real\ squared\_distance(\textcolor{keyword}{const}\ Circle\_2\&)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00071\ \ \ \ \ \textcolor{keyword}{virtual}\ Real\ squared\_distance(\textcolor{keyword}{const}\ Iso\_rectangle\_2\&)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00072\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Bbox\_2\&)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00073\ \ \ \ \ \textcolor{keyword}{virtual}\ Real\ squared\_distance(\textcolor{keyword}{const}\ Triangle\_2\&)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00074\ \ \ \ \ \textcolor{keyword}{virtual}\ Real\ squared\_distance(\textcolor{keyword}{const}\ Polygon\_2\&)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00075\ \ \ \ \ \textcolor{keyword}{virtual}\ Real\ squared\_distance(\textcolor{keyword}{const}\ \mbox{\hyperlink{classWideSegment__25}{WideSegment\_25}}\&)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00076\ }
\DoxyCodeLine{00077\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ \mbox{\hyperlink{classAShape}{AShape}}\&)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00078\ }
\DoxyCodeLine{00079\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Circle\_2\&)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00080\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Iso\_rectangle\_2\&)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00081\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Bbox\_2\&)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00082\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Triangle\_2\&)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00083\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Polygon\_2\&)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00084\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ \mbox{\hyperlink{classWideSegment__25}{WideSegment\_25}}\&)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00085\ }
\DoxyCodeLine{00086\ \ \ \ \ virtual\ ::Point\_2\ centroid()\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00087\ }
\DoxyCodeLine{00088\ \ \ \ \ \textcolor{keyword}{virtual}\ std::string\ str()\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00089\ }
\DoxyCodeLine{00099\ \ \ \ \ \textcolor{keyword}{virtual}\ PyObject\ *\mbox{\hyperlink{classAShape_a940139bb31886cb147e5a4da958dab2e}{getPy}}()\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00100\ \};}
\DoxyCodeLine{00101\ }
\DoxyCodeLine{00102\ \textcolor{keyword}{inline}\ Real\ AShape::boundingRadius()\textcolor{keyword}{\ const}}
\DoxyCodeLine{00103\ \textcolor{keyword}{}\{}
\DoxyCodeLine{00104\ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keyword}{auto}\ B\ =\ bbox();}
\DoxyCodeLine{00105\ \ \ \ \ \textcolor{keywordflow}{return}\ std::max(B.xmax()\ -\/\ B.xmin(),\ B.ymax()\ -\/\ B.ymin());}
\DoxyCodeLine{00106\ \}}
\DoxyCodeLine{00107\ }
\DoxyCodeLine{00108\ \textcolor{keyword}{inline}\ \textcolor{keywordtype}{bool}\ AShape::intersects(\textcolor{keyword}{const}\ Bbox\_2\ \&bbox)\textcolor{keyword}{\ const}}
\DoxyCodeLine{00109\ \textcolor{keyword}{}\{}
\DoxyCodeLine{00110\ \ \ \ \ \textcolor{keywordflow}{return}\ intersects(Iso\_rectangle\_2(bbox));}
\DoxyCodeLine{00111\ \}}
\DoxyCodeLine{00112\ \textcolor{keyword}{inline}\ Real\ AShape::squared\_distance(\textcolor{keyword}{const}\ Bbox\_2\ \&bbox)\textcolor{keyword}{\ const}}
\DoxyCodeLine{00113\ \textcolor{keyword}{}\{}
\DoxyCodeLine{00114\ \ \ \ \ \textcolor{keywordflow}{return}\ squared\_distance(Iso\_rectangle\_2(bbox));}
\DoxyCodeLine{00115\ \}}
\DoxyCodeLine{00116\ }
\DoxyCodeLine{00117\ \textcolor{keyword}{class\ }CircleEx\ :\ \textcolor{keyword}{public}\ \mbox{\hyperlink{classAShape}{AShape}},\ \textcolor{keyword}{public}\ Circle\_2}
\DoxyCodeLine{00118\ \{}
\DoxyCodeLine{00119\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00120\ \ \ \ \ CircleEx(\textcolor{keyword}{const}\ Circle\_2\ \&base)\ :\ Circle\_2(base)\ \{\ \}}
\DoxyCodeLine{00121\ }
\DoxyCodeLine{00122\ \ \ \ \ \mbox{\hyperlink{classAShape}{AShape}}\ *clone()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ \textcolor{keyword}{new}\ CircleEx(*\textcolor{keyword}{this});\ \}}
\DoxyCodeLine{00123\ }
\DoxyCodeLine{00124\ \ \ \ \ CircleEx\ grown(Real)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00125\ }
\DoxyCodeLine{00126\ \ \ \ \ uint\ \mbox{\hyperlink{classCircleEx_a8ae4cc893342890d59d928f3792584dc}{vertexCount}}()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ 4;\ \}\ }
\DoxyCodeLine{00127\ \ \ \ \ \textcolor{keywordtype}{bool}\ canDrawAsTriFan()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ \textcolor{keyword}{true};\ \}}
\DoxyCodeLine{00128\ }
\DoxyCodeLine{00129\ \ \ \ \ \textcolor{keywordtype}{bool}\ isRound()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ \textcolor{keyword}{true};\ \}}
\DoxyCodeLine{00130\ }
\DoxyCodeLine{00131\ \ \ \ \ Real\ unsignedArea()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ squared\_radius()\ *\ M\_PI;\ \}}
\DoxyCodeLine{00132\ }
\DoxyCodeLine{00133\ \ \ \ \ Bbox\_2\ bbox()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ Circle\_2::bbox();\ \}}
\DoxyCodeLine{00134\ }
\DoxyCodeLine{00135\ \ \ \ \ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{classCircleEx_acfb3c6bd348aef17e5d3c3bcfdfe6e8d}{transformPreservesType}}(\textcolor{keyword}{const}\ CGAL::Aff\_transformation\_2<Kernel>\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00136\ }
\DoxyCodeLine{00137\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classCircleEx_a56c6d63e5a4c2470eace9bc15e67b251}{transform}}(\textcolor{keyword}{const}\ CGAL::Aff\_transformation\_2<Kernel>\&)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00138\ \ \ \ \ \textcolor{keywordtype}{void}\ translate(const\ ::Vector\_2\&)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00139\ }
\DoxyCodeLine{00140\ \ \ \ \ \textcolor{keywordtype}{bool}\ contains(const\ ::Point\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00141\ }
\DoxyCodeLine{00142\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ \mbox{\hyperlink{classAShape}{AShape}}\ \&S)\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ S.squared\_distance(*\textcolor{keyword}{static\_cast<}\textcolor{keyword}{const\ }Circle\_2\ *\textcolor{keyword}{>}(\textcolor{keyword}{this}));\ \}}
\DoxyCodeLine{00143\ }
\DoxyCodeLine{00144\ \ \ \ \ Real\ squared\_distance(const\ ::Point\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00145\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Segment\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00146\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Circle\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00147\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Iso\_rectangle\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00148\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Triangle\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00149\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Polygon\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00150\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ \mbox{\hyperlink{classWideSegment__25}{WideSegment\_25}}\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00151\ }
\DoxyCodeLine{00152\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ \mbox{\hyperlink{classAShape}{AShape}}\ \&S)\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ S.intersects(*\textcolor{keyword}{static\_cast<}\textcolor{keyword}{const\ }Circle\_2\ *\textcolor{keyword}{>}(\textcolor{keyword}{this}));\ \}}
\DoxyCodeLine{00153\ }
\DoxyCodeLine{00154\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Circle\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00155\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Iso\_rectangle\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00156\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Triangle\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00157\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Polygon\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00158\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ WideSegment\_25\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00159\ }
\DoxyCodeLine{00160\ \ \ \ \ ::Point\_2\ centroid()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ center();\ \}}
\DoxyCodeLine{00161\ }
\DoxyCodeLine{00162\ \ \ \ \ std::string\ str()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00163\ \ \ \ \ PyObject\ *\mbox{\hyperlink{classCircleEx_a11adda3385c4c4b106f388191ee709d6}{getPy}}()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00164\ \};}
\DoxyCodeLine{00165\ \textcolor{keyword}{inline}\ \mbox{\hyperlink{classCircleEx}{CircleEx}}\ CircleEx::grown(Real\ dr)\textcolor{keyword}{\ const}}
\DoxyCodeLine{00166\ \textcolor{keyword}{}\{}
\DoxyCodeLine{00167\ \ \ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classCircleEx}{CircleEx}}(Circle\_2(center(),\ math::squared(std::sqrt(squared\_radius())\ +\ dr)));}
\DoxyCodeLine{00168\ \}}
\DoxyCodeLine{00169\ }
\DoxyCodeLine{00170\ \textcolor{keyword}{class\ }TriangleEx\ :\ \textcolor{keyword}{public}\ \mbox{\hyperlink{classAShape}{AShape}},\ \textcolor{keyword}{public}\ Triangle\_2}
\DoxyCodeLine{00171\ \{}
\DoxyCodeLine{00172\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00173\ \ \ \ \ TriangleEx(\textcolor{keyword}{const}\ Triangle\_2\ \&base)\ :\ Triangle\_2(base)\ \{\ \}}
\DoxyCodeLine{00174\ \ \ \ \ TriangleEx(Triangle\_2\ \&\&base)\ :\ Triangle\_2(base)\ \{\ \}}
\DoxyCodeLine{00175\ }
\DoxyCodeLine{00176\ \ \ \ \ \mbox{\hyperlink{classAShape}{AShape}}\ *clone()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ \textcolor{keyword}{new}\ TriangleEx(*\textcolor{keyword}{this});\ \}}
\DoxyCodeLine{00177\ }
\DoxyCodeLine{00178\ \ \ \ \ uint\ \mbox{\hyperlink{classTriangleEx_a3940e414ad48f00a917f7feccc276756}{vertexCount}}()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ 3;\ \}}
\DoxyCodeLine{00179\ }
\DoxyCodeLine{00180\ \ \ \ \ Real\ unsignedArea()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ std::abs(area());\ \}}
\DoxyCodeLine{00181\ }
\DoxyCodeLine{00182\ \ \ \ \ Bbox\_2\ bbox()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ Triangle\_2::bbox();\ \}}
\DoxyCodeLine{00183\ }
\DoxyCodeLine{00184\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTriangleEx_aa3acbe5880bc4e92e4a81ac09fc851a8}{transform}}(\textcolor{keyword}{const}\ CGAL::Aff\_transformation\_2<Kernel>\&)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00185\ \ \ \ \ \textcolor{keywordtype}{void}\ translate(const\ ::Vector\_2\&)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00186\ }
\DoxyCodeLine{00187\ \ \ \ \ \textcolor{keywordtype}{bool}\ contains(const\ ::Point\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00188\ }
\DoxyCodeLine{00189\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ \mbox{\hyperlink{classAShape}{AShape}}\ \&S)\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ S.squared\_distance(*\textcolor{keyword}{static\_cast<}\textcolor{keyword}{const\ }Triangle\_2\ *\textcolor{keyword}{>}(\textcolor{keyword}{this}));\ \}}
\DoxyCodeLine{00190\ }
\DoxyCodeLine{00191\ \ \ \ \ Real\ squared\_distance(const\ ::Point\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00192\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Segment\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00193\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Circle\_2\ \&C)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00194\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Iso\_rectangle\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00195\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Triangle\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00196\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Polygon\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00197\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ \mbox{\hyperlink{classWideSegment__25}{WideSegment\_25}}\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00198\ }
\DoxyCodeLine{00199\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ \mbox{\hyperlink{classAShape}{AShape}}\ \&S)\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ S.intersects(*\textcolor{keyword}{static\_cast<}\textcolor{keyword}{const\ }Triangle\_2\ *\textcolor{keyword}{>}(\textcolor{keyword}{this}));\ \}}
\DoxyCodeLine{00200\ }
\DoxyCodeLine{00201\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Circle\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00202\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Iso\_rectangle\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00203\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Triangle\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00204\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Polygon\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00205\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ WideSegment\_25\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00206\ }
\DoxyCodeLine{00207\ \ \ \ \ ::Point\_2\ centroid()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00208\ }
\DoxyCodeLine{00209\ \ \ \ \ std::string\ str()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00210\ \ \ \ \ PyObject\ *\mbox{\hyperlink{classTriangleEx_acdb1b84c2c04b26116e6f7dc701d0b27}{getPy}}()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00211\ \};}
\DoxyCodeLine{00212\ }
\DoxyCodeLine{00213\ \textcolor{keyword}{class\ }IsoRectEx\ :\ \textcolor{keyword}{public}\ \mbox{\hyperlink{classAShape}{AShape}},\ \textcolor{keyword}{public}\ Iso\_rectangle\_2}
\DoxyCodeLine{00214\ \{}
\DoxyCodeLine{00215\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00216\ \ \ \ \ IsoRectEx(\textcolor{keyword}{const}\ Iso\_rectangle\_2\ \&base)\ :\ Iso\_rectangle\_2(base)\ \{\ \}}
\DoxyCodeLine{00217\ \ \ \ \ IsoRectEx(Iso\_rectangle\_2\ \&\&base)\ :\ Iso\_rectangle\_2(base)\ \{\ \}}
\DoxyCodeLine{00218\ }
\DoxyCodeLine{00219\ \ \ \ \ IsoRectEx(\textcolor{keyword}{const}\ Bbox\_2\ \&bbox)\ :\ Iso\_rectangle\_2(bbox)\ \{\ \}}
\DoxyCodeLine{00220\ }
\DoxyCodeLine{00221\ \ \ \ \ \mbox{\hyperlink{classAShape}{AShape}}\ *clone()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ \textcolor{keyword}{new}\ IsoRectEx(*\textcolor{keyword}{this});\ \}}
\DoxyCodeLine{00222\ }
\DoxyCodeLine{00223\ \ \ \ \ uint\ \mbox{\hyperlink{classIsoRectEx_afd6a94cd1c1601086901485b45f5d92c}{vertexCount}}()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ 4;\ \}}
\DoxyCodeLine{00224\ }
\DoxyCodeLine{00225\ \ \ \ \ Real\ unsignedArea()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ std::abs(area());\ \}}
\DoxyCodeLine{00226\ }
\DoxyCodeLine{00227\ \ \ \ \ Bbox\_2\ bbox()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ Iso\_rectangle\_2::bbox();\ \}}
\DoxyCodeLine{00228\ }
\DoxyCodeLine{00229\ \ \ \ \ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{classIsoRectEx_acece5199895bc66f7634ccb2d9e54936}{transformPreservesType}}(\textcolor{keyword}{const}\ CGAL::Aff\_transformation\_2<Kernel>\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00230\ }
\DoxyCodeLine{00231\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classIsoRectEx_a171237514454baafe0877727348a50b1}{transform}}(\textcolor{keyword}{const}\ CGAL::Aff\_transformation\_2<Kernel>\&)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00232\ \ \ \ \ \textcolor{keywordtype}{void}\ translate(const\ ::Vector\_2\&)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00233\ }
\DoxyCodeLine{00234\ \ \ \ \ \mbox{\hyperlink{classAShape}{AShape}}\ *\mbox{\hyperlink{classIsoRectEx_acdc2a1771db95e47372737620167ecc3}{transformType}}(\textcolor{keyword}{const}\ CGAL::Aff\_transformation\_2<Kernel>\&)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00235\ }
\DoxyCodeLine{00236\ \ \ \ \ \textcolor{keywordtype}{bool}\ contains(const\ ::Point\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00237\ }
\DoxyCodeLine{00238\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ \mbox{\hyperlink{classAShape}{AShape}}\ \&S)\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ S.squared\_distance(*\textcolor{keyword}{static\_cast<}\textcolor{keyword}{const\ }Iso\_rectangle\_2\ *\textcolor{keyword}{>}(\textcolor{keyword}{this}));\ \}}
\DoxyCodeLine{00239\ }
\DoxyCodeLine{00240\ \ \ \ \ Real\ squared\_distance(const\ ::Point\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00241\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Segment\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00242\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Circle\_2\ \&C)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00243\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Triangle\_2\ \&T)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00244\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Iso\_rectangle\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00245\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Polygon\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00246\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ \mbox{\hyperlink{classWideSegment__25}{WideSegment\_25}}\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00247\ }
\DoxyCodeLine{00248\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ \mbox{\hyperlink{classAShape}{AShape}}\ \&S)\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ S.intersects(*\textcolor{keyword}{static\_cast<}\textcolor{keyword}{const\ }Iso\_rectangle\_2\ *\textcolor{keyword}{>}(\textcolor{keyword}{this}));\ \}}
\DoxyCodeLine{00249\ }
\DoxyCodeLine{00250\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Circle\_2\ \&C)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00251\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Triangle\_2\ \&T)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00252\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Iso\_rectangle\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00253\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Polygon\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00254\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ WideSegment\_25\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00255\ }
\DoxyCodeLine{00259\ \ \ \ \ Real\ \mbox{\hyperlink{classIsoRectEx_a9d2101ada78f5f5984086b9cda31cf91}{lengthOutside}}(\textcolor{keyword}{const}\ Segment\_2\&)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00260\ }
\DoxyCodeLine{00261\ \ \ \ \ ::Point\_2\ centroid()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00262\ }
\DoxyCodeLine{00263\ \ \ \ \ std::string\ str()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00264\ \ \ \ \ PyObject\ *\mbox{\hyperlink{classIsoRectEx_afec8e57896667aa176678e718d4ebe13}{getPy}}()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00265\ \};}
\DoxyCodeLine{00266\ }
\DoxyCodeLine{00267\ \textcolor{keyword}{class\ }PolygonEx\ :\ \textcolor{keyword}{public}\ \mbox{\hyperlink{classAShape}{AShape}},\ \textcolor{keyword}{public}\ Polygon\_2}
\DoxyCodeLine{00268\ \{}
\DoxyCodeLine{00269\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00270\ \ \ \ \ PolygonEx(\textcolor{keyword}{const}\ Polygon\_2\ \&base)\ :\ Polygon\_2(base)\ \{\ \}}
\DoxyCodeLine{00271\ \ \ \ \ PolygonEx(Polygon\_2\ \&\&base)\ :\ Polygon\_2(base)\ \{\ \}}
\DoxyCodeLine{00272\ }
\DoxyCodeLine{00273\ \ \ \ \ \mbox{\hyperlink{classAShape}{AShape}}\ *clone()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ \textcolor{keyword}{new}\ PolygonEx(*\textcolor{keyword}{this});\ \}}
\DoxyCodeLine{00274\ }
\DoxyCodeLine{00275\ \ \ \ \ PolygonEx\ grown(Real\ size,\ Real\ epsilon\ =\ 0.125)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00276\ }
\DoxyCodeLine{00283\ \ \ \ \ \textcolor{keyword}{static}\ Polygon\_2\ \mbox{\hyperlink{classPolygonEx_aca375299510998c8ed21b72e26d4a577}{grow}}(\textcolor{keyword}{const}\ Polygon\_2\&,\ Real\ size,\ Real\ epsilon\ =\ 0.125);}
\DoxyCodeLine{00284\ }
\DoxyCodeLine{00285\ \ \ \ \ uint\ \mbox{\hyperlink{classPolygonEx_a58990a768563f40a8285789f56e6dc5f}{vertexCount}}()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ size();\ \}}
\DoxyCodeLine{00286\ \ \ \ \ uint\ indexCountWithRestart()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ is\_convex()\ ?\ (\mbox{\hyperlink{classPolygonEx_a58990a768563f40a8285789f56e6dc5f}{vertexCount}}()\ +\ 1)\ :\ 0;\ \}}
\DoxyCodeLine{00287\ \ \ \ \ \textcolor{keywordtype}{bool}\ canDrawAsTriFan()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ is\_convex();\ \}}
\DoxyCodeLine{00288\ }
\DoxyCodeLine{00289\ \ \ \ \ Real\ unsignedArea()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ std::abs(area());\ \}}
\DoxyCodeLine{00290\ }
\DoxyCodeLine{00291\ \ \ \ \ Bbox\_2\ bbox()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ Polygon\_2::bbox();\ \}}
\DoxyCodeLine{00292\ }
\DoxyCodeLine{00293\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classPolygonEx_a973c8aaf2d84ba87cf7229ad3b435ff5}{transform}}(\textcolor{keyword}{const}\ CGAL::Aff\_transformation\_2<Kernel>\&)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00294\ \ \ \ \ \textcolor{keywordtype}{void}\ translate(const\ ::Vector\_2\&)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00295\ }
\DoxyCodeLine{00296\ \ \ \ \ \textcolor{keywordtype}{bool}\ contains(const\ ::Point\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00297\ }
\DoxyCodeLine{00298\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ \mbox{\hyperlink{classAShape}{AShape}}\ \&S)\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ S.squared\_distance(*\textcolor{keyword}{static\_cast<}\textcolor{keyword}{const\ }Polygon\_2\ *\textcolor{keyword}{>}(\textcolor{keyword}{this}));\ \}}
\DoxyCodeLine{00299\ }
\DoxyCodeLine{00300\ \ \ \ \ Real\ squared\_distance(const\ ::Point\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00301\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Segment\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00302\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Circle\_2\ \&C)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00303\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Iso\_rectangle\_2\ \&R)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00304\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Triangle\_2\ \&T)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00305\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Polygon\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00306\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ \mbox{\hyperlink{classWideSegment__25}{WideSegment\_25}}\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00307\ }
\DoxyCodeLine{00308\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ \mbox{\hyperlink{classAShape}{AShape}}\ \&S)\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ S.intersects(*\textcolor{keyword}{static\_cast<}\textcolor{keyword}{const\ }Polygon\_2\ *\textcolor{keyword}{>}(\textcolor{keyword}{this}));\ \}}
\DoxyCodeLine{00309\ }
\DoxyCodeLine{00310\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Circle\_2\ \&C)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00311\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Iso\_rectangle\_2\ \&R)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00312\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Triangle\_2\ \&T)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00313\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Polygon\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00314\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ WideSegment\_25\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00315\ }
\DoxyCodeLine{00316\ \ \ \ \ ::Point\_2\ centroid()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00317\ }
\DoxyCodeLine{00318\ \ \ \ \ std::string\ str()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00319\ \ \ \ \ PyObject\ *\mbox{\hyperlink{classPolygonEx_a0f34d02d8d6684259b0b199cbfe8299f}{getPy}}()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00320\ }
\DoxyCodeLine{00321\ \textcolor{keyword}{private}:}
\DoxyCodeLine{00322\ \ \ \ \ \textcolor{keyword}{static}\ Polygon\_2\ \_grow\_offset(\textcolor{keyword}{const}\ Polygon\_2\&,\ Real\ size,\ Real\ epsilon\ =\ 0.125);}
\DoxyCodeLine{00323\ \ \ \ \ \textcolor{keyword}{static}\ Polygon\_2\ \_grow\_stupid(\textcolor{keyword}{const}\ Polygon\_2\&,\ Real\ size);}
\DoxyCodeLine{00324\ \};}
\DoxyCodeLine{00325\ }
\DoxyCodeLine{00331\ \textcolor{keyword}{class\ }WideSegment\_25\ :\ \textcolor{keyword}{public}\ \mbox{\hyperlink{classAShape}{AShape}}}
\DoxyCodeLine{00332\ \{}
\DoxyCodeLine{00333\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00334\ \ \ \ \ WideSegment\_25(\textcolor{keyword}{const}\ \mbox{\hyperlink{classSegment__25}{Segment\_25}}\ \&s,\ Real\ halfWidth)\ :\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}}(s),\ mHW(halfWidth)\ \{\ \}}
\DoxyCodeLine{00335\ \ \ \ \ WideSegment\_25(\textcolor{keyword}{const}\ Segment\_2\ \&s,\ \textcolor{keywordtype}{int}\ z,\ Real\ halfWidth)\ :\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}}(s,\ z),\ mHW(halfWidth)\ \{\ \}}
\DoxyCodeLine{00336\ \ \ \ \ WideSegment\_25(\textcolor{keyword}{const}\ Point\_2\ \&v0,\ \textcolor{keyword}{const}\ Point\_2\ \&v1,\ \textcolor{keywordtype}{int}\ z,\ Real\ halfWidth)\ :\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}}(v0,\ v1,\ z),\ mHW(halfWidth)\ \{\ \}}
\DoxyCodeLine{00337\ }
\DoxyCodeLine{00338\ \ \ \ \ \textcolor{keywordtype}{void}\ \_setBase(\textcolor{keyword}{const}\ \mbox{\hyperlink{classSegment__25}{Segment\_25}}\ \&s)\ \{\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}}\ =\ s;\ \}}
\DoxyCodeLine{00339\ }
\DoxyCodeLine{00340\ \ \ \ \ \mbox{\hyperlink{classSegment__25}{Segment\_25}}\&\ \_base()\ \{\ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}};\ \}}
\DoxyCodeLine{00341\ \ \ \ \ \textcolor{keyword}{const}\ \mbox{\hyperlink{classSegment__25}{Segment\_25}}\&\ base()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}};\ \}}
\DoxyCodeLine{00342\ }
\DoxyCodeLine{00347\ \ \ \ \ Segment\_2\ \mbox{\hyperlink{classWideSegment__25_a3fe8f9228b57aa9fb29c7171c676658f}{s2\_extended}}(uint\ mask\ =\ 0x3)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00348\ }
\DoxyCodeLine{00349\ \ \ \ \ Real\ halfWidth()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ mHW;\ \}}
\DoxyCodeLine{00350\ \ \ \ \ Real\ width()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ mHW\ +\ mHW;\ \}}
\DoxyCodeLine{00351\ \ \ \ \ Real\ squared\_width()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ width()\ *\ width();\ \}}
\DoxyCodeLine{00352\ }
\DoxyCodeLine{00353\ \ \ \ \ \textcolor{keywordtype}{int}\ z()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}}.z();\ \}}
\DoxyCodeLine{00354\ \ \ \ \ Point\_25\ source()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}}.source();\ \}}
\DoxyCodeLine{00355\ \ \ \ \ Point\_25\ target()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}}.target();\ \}}
\DoxyCodeLine{00356\ \ \ \ \ \textcolor{keyword}{const}\ Point\_2\&\ source\_2()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}}.source\_2();\ \}}
\DoxyCodeLine{00357\ \ \ \ \ \textcolor{keyword}{const}\ Point\_2\&\ target\_2()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}}.target\_2();\ \}}
\DoxyCodeLine{00358\ }
\DoxyCodeLine{00359\ \ \ \ \ Circle\_2\ sourceCap()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ Circle\_2(source\_2(),\ mHW\ *\ mHW);\ \}}
\DoxyCodeLine{00360\ \ \ \ \ Circle\_2\ targetCap()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ Circle\_2(target\_2(),\ mHW\ *\ mHW);\ \}}
\DoxyCodeLine{00361\ }
\DoxyCodeLine{00367\ \ \ \ \ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{classWideSegment__25_a3fe90be2a2beba53aa4af264fbf9e4d0}{joins2D}}(\textcolor{keyword}{const}\ Point\_2\&,\ Real\ leewaySquared\ =\ -\/1.0)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00368\ }
\DoxyCodeLine{00369\ \ \ \ \ \textcolor{keywordtype}{bool}\ widerThanBaseLen()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ squared\_width()\ >\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}}.squared\_length();\ \}}
\DoxyCodeLine{00370\ }
\DoxyCodeLine{00374\ \ \ \ \ ::Vector\_2\ \mbox{\hyperlink{classWideSegment__25_a62644b597b91b946af708e0001bac07c}{getHalfWidthSpan}}(Real\ delta\ =\ 0.0)\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}}.getPerpendicularCCW(mHW\ +\ delta);\ \}}
\DoxyCodeLine{00375\ }
\DoxyCodeLine{00381\ \ \ \ \ \mbox{\hyperlink{classWideSegment__25}{WideSegment\_25}}\ \mbox{\hyperlink{classWideSegment__25_ae4b3c77c9060f54c8d515fa248fb42c6}{swapWL}}(Real\ deltaHW\ =\ 0.0,\ Real\ deltaL\ =\ 0.0)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00382\ }
\DoxyCodeLine{00383\ \ \ \ \ WideSegment\_25\ \mbox{\hyperlink{classWideSegment__25_a2b76e82258ca20a8988b8de9d66c05f3}{opposite}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ WideSegment\_25(\mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}}.opposite(),\ halfWidth());\ \}\ }
\DoxyCodeLine{00384\ \ \ \ \ \mbox{\hyperlink{classWideSegment__25}{WideSegment\_25}}\ orderedX()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}}.isXOrdered()\ ?\ *this\ :\ \mbox{\hyperlink{classWideSegment__25_a2b76e82258ca20a8988b8de9d66c05f3}{opposite}}();\ \}}
\DoxyCodeLine{00385\ \ \ \ \ WideSegment\_25\ orderedY()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}}.isYOrdered()\ ?\ *this\ :\ \mbox{\hyperlink{classWideSegment__25_a2b76e82258ca20a8988b8de9d66c05f3}{opposite}}();\ \}}
\DoxyCodeLine{00386\ }
\DoxyCodeLine{00387\ \ \ \ \ AShape\ *clone()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ \textcolor{keyword}{new}\ WideSegment\_25(*\textcolor{keyword}{this});\ \}}
\DoxyCodeLine{00388\ }
\DoxyCodeLine{00389\ \ \ \ \ uint\ \mbox{\hyperlink{classWideSegment__25_a5e7d7fb7d291573fb5d97b8172cc2cf8}{vertexCount}}()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ 4;\ \}}
\DoxyCodeLine{00390\ \ \ \ \ \textcolor{keywordtype}{bool}\ canDrawAsTriFan()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ \textcolor{keyword}{true};\ \}}
\DoxyCodeLine{00391\ }
\DoxyCodeLine{00392\ \ \ \ \ \textcolor{keywordtype}{bool}\ isRound()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ \textcolor{keyword}{true};\ \}}
\DoxyCodeLine{00393\ }
\DoxyCodeLine{00394\ \ \ \ \ Real\ unsignedArea()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ width()\ *\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}}.length()\ +\ mHW\ *\ mHW\ *\ M\_PI;\ \}}
\DoxyCodeLine{00395\ }
\DoxyCodeLine{00396\ \ \ \ \ Bbox\_2\ bbox()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00397\ }
\DoxyCodeLine{00398\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classWideSegment__25_a34d95b04e0db56d93cee2cd46dc3badb}{transform}}(\textcolor{keyword}{const}\ CGAL::Aff\_transformation\_2<Kernel>\&)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00399\ \ \ \ \ \textcolor{keywordtype}{void}\ translate(const\ ::Vector\_2\&)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00400\ }
\DoxyCodeLine{00404\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classWideSegment__25_accf96df8ab7e2512f70c3d5d0fe2b2f8}{nudge}}(\textcolor{keywordtype}{int}\ s,\ \textcolor{keywordtype}{int}\ t);}
\DoxyCodeLine{00405\ }
\DoxyCodeLine{00409\ \ \ \ \ WideSegment\_25\&\ \mbox{\hyperlink{classWideSegment__25_a287596dae28901257021ddd13efd4afd}{rectify}}(Real\ angleTolerance)\ \{\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}}.rectify(angleTolerance);\ \textcolor{keywordflow}{return}\ *\textcolor{keyword}{this};\ \}}
\DoxyCodeLine{00410\ }
\DoxyCodeLine{00414\ \ \ \ \ WideSegment\_25\ \mbox{\hyperlink{classWideSegment__25_afd78d0c3b56432188d4abceb9760089e}{grown}}(Real)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00415\ }
\DoxyCodeLine{00416\ \ \ \ \ \textcolor{keywordtype}{bool}\ contains(const\ ::Point\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00417\ }
\DoxyCodeLine{00418\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ \mbox{\hyperlink{classAShape}{AShape}}\ \&S)\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ S.squared\_distance(*\textcolor{keyword}{static\_cast<}\textcolor{keyword}{const\ }WideSegment\_25\ *\textcolor{keyword}{>}(\textcolor{keyword}{this}));\ \}}
\DoxyCodeLine{00419\ }
\DoxyCodeLine{00420\ \ \ \ \ Real\ squared\_distance(const\ ::Point\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00421\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Segment\_2\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00422\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Circle\_2\ \&C)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00423\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Iso\_rectangle\_2\ \&R)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00424\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Triangle\_2\ \&T)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00425\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ Polygon\_2\ \&P)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00426\ \ \ \ \ Real\ squared\_distance(\textcolor{keyword}{const}\ \mbox{\hyperlink{classWideSegment__25}{WideSegment\_25}}\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00427\ }
\DoxyCodeLine{00428\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ \mbox{\hyperlink{classAShape}{AShape}}\ \&S)\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ S.intersects(*\textcolor{keyword}{static\_cast<}\textcolor{keyword}{const\ }\mbox{\hyperlink{classWideSegment__25}{WideSegment\_25}}\ *\textcolor{keyword}{>}(\textcolor{keyword}{this}));\ \}}
\DoxyCodeLine{00429\ }
\DoxyCodeLine{00430\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Circle\_2\ \&C)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00431\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Iso\_rectangle\_2\ \&R)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00432\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Triangle\_2\ \&T)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00433\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ Polygon\_2\ \&P)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00434\ \ \ \ \ \textcolor{keywordtype}{bool}\ intersects(\textcolor{keyword}{const}\ WideSegment\_25\&)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00435\ }
\DoxyCodeLine{00440\ \ \ \ \ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{classWideSegment__25_a399c043d6c775e8dacbde1e4ad252036}{violatesClearance}}(\textcolor{keyword}{const}\ WideSegment\_25\&,\ Real\ clearance,\ \mbox{\hyperlink{classPoint__25}{Point\_25}}\ *\ =\ 0)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00441\ \ \ \ \ \textcolor{keywordtype}{bool}\ violatesClearance2D(\textcolor{keyword}{const}\ WideSegment\_25\&,\ Real\ clearance,\ \mbox{\hyperlink{classPoint__25}{Point\_25}}\ *\ =\ 0)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00442\ }
\DoxyCodeLine{00443\ \ \ \ \ ::Point\_2\ centroid()\textcolor{keyword}{\ const\ override\ }\{\ \textcolor{keywordflow}{return}\ source\_2()\ +\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}}.s2().to\_vector()\ *\ 0.5;\ \}}
\DoxyCodeLine{00444\ }
\DoxyCodeLine{00445\ \ \ \ \ \textcolor{keyword}{static}\ WideSegment\_25\ \mbox{\hyperlink{classWideSegment__25_a94ad82e68f6a8971916c65180d3b6898}{fromPy}}(PyObject\ *);\ }
\DoxyCodeLine{00446\ }
\DoxyCodeLine{00447\ \ \ \ \ std::string\ str()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00448\ \ \ \ \ PyObject\ *\mbox{\hyperlink{classWideSegment__25_a0ab4c6f52ea6328095d2a095616adb8d}{getPy}}()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00449\ }
\DoxyCodeLine{00450\ \ \ \ \ PyObject\ *getShortPy()\ \textcolor{keyword}{const};\ }
\DoxyCodeLine{00451\ \textcolor{keyword}{protected}:}
\DoxyCodeLine{00452\ \ \ \ \ \mbox{\hyperlink{classSegment__25}{Segment\_25}}\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}};}
\DoxyCodeLine{00453\ \ \ \ \ Real\ mHW;}
\DoxyCodeLine{00454\ \};}
\DoxyCodeLine{00455\ \textcolor{keyword}{inline}\ WideSegment\_25\ \mbox{\hyperlink{classWideSegment__25_ae4b3c77c9060f54c8d515fa248fb42c6}{WideSegment\_25::swapWL}}(Real\ deltaHW,\ Real\ deltaL)\textcolor{keyword}{\ const}}
\DoxyCodeLine{00456\ \textcolor{keyword}{}\{}
\DoxyCodeLine{00457\ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keyword}{auto}\ M\ =\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}}.source\_2()\ +\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}}.s2().to\_vector()\ *\ 0.5;}
\DoxyCodeLine{00458\ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keyword}{auto}\ v\ =\ \mbox{\hyperlink{classWideSegment__25_a62644b597b91b946af708e0001bac07c}{getHalfWidthSpan}}(deltaL\ *\ 0.5);}
\DoxyCodeLine{00459\ \ \ \ \ \textcolor{keywordflow}{return}\ WideSegment\_25(M\ +\ v,\ M\ -\/\ v,\ z(),\ \mbox{\hyperlink{classWideSegment__25_ae413cc14eec7259ab1fa8814d0c4f871}{mBase}}.length()\ *\ 0.5\ +\ deltaHW);}
\DoxyCodeLine{00460\ \}}
\DoxyCodeLine{00461\ }
\DoxyCodeLine{00462\ \textcolor{keyword}{inline}\ std::ostream\&\ operator<<(std::ostream\ \&os,\ \textcolor{keyword}{const}\ \mbox{\hyperlink{classWideSegment__25}{WideSegment\_25}}\ \&s)}
\DoxyCodeLine{00463\ \{}
\DoxyCodeLine{00464\ \ \ \ \ \textcolor{keywordflow}{return}\ os\ <<\ s.str();}
\DoxyCodeLine{00465\ \}}
\DoxyCodeLine{00466\ }
\DoxyCodeLine{00467\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ GYM\_PCB\_ASHAPE\_H}}

\end{DoxyCode}
