#ifndef POLYGONCALCULUS_H #define POLYGONCALCULUS_H #endif #include #include #include "PlanimetryCalculus.h" #include "OptimisationTools.h" namespace PolygonCalculus { enum JoinPolygonError { NotSimplePolygon, PolygonJoined, Disjoint, PathSizeLow}; int closestVertexIndex (const QPolygonF &polygon, const QPointF &coordinate); QPointF closestVertex (const QPolygonF &polygon, const QPointF &coordinate); int nextVertexIndex (int pathsize, int index); int previousVertexIndex (int pathsize, int index); JoinPolygonError joinPolygon (QPolygonF polygon1, QPolygonF polygon2, QPolygonF &joinedPolygon); bool isSimplePolygon (const QPolygonF &polygon); bool hasClockwiseWinding (const QPolygonF &path); void reversePath (QPolygonF &path); void offsetPolygon (QPolygonF &polygon, double offset); bool containsPath (QPolygonF polygon, const QPointF &c1, const QPointF &c2); void decomposeToConvex (const QPolygonF &polygon, QList &convexPolygons); bool shortestPath (const QPolygonF &polygon, const QPointF &startVertex, const QPointF &endVertex, QList &shortestPath); }