24#ifndef POLYPARTITION_H
25#define POLYPARTITION_H
30typedef double tppl_float;
33 TPPL_ORIENTATION_CW = -1,
34 TPPL_ORIENTATION_NONE = 0,
35 TPPL_ORIENTATION_CCW = 1,
39 TPPL_VERTEXTYPE_REGULAR = 0,
40 TPPL_VERTEXTYPE_START = 1,
41 TPPL_VERTEXTYPE_END = 2,
42 TPPL_VERTEXTYPE_SPLIT = 3,
43 TPPL_VERTEXTYPE_MERGE = 4,
68 TPPLPoint operator*(
const tppl_float f)
const {
75 TPPLPoint operator/(
const tppl_float f)
const {
82 bool operator==(
const TPPLPoint &p)
const {
83 return ((x == p.x) && (y == p.y));
86 bool operator!=(
const TPPLPoint &p)
const {
87 return !((x == p.x) && (y == p.y));
107 long GetNumPoints()
const {
111 bool IsHole()
const {
115 void SetHole(
bool hole) {
123 const TPPLPoint &GetPoint(
long i)
const {
135 const TPPLPoint &operator[](
int i)
const {
143 void Init(
long numpoints);
156 TPPLOrientation GetOrientation()
const;
164 void SetOrientation(TPPLOrientation orientation);
167 inline bool Valid()
const {
return this->numpoints >= 3; }
173typedef std::list<TPPLPoly> TPPLPolyList;
203 bool operator()(
long index1,
long index2);
214 typedef std::list<Diagonal> DiagonalList;
261 void UpdateState(
long a,
long b,
long w,
long i,
long j,
DPState2 **dpstates);
267 void AddDiagonal(
MonotoneVertex *vertices,
long *numvertices,
long index1,
long index2,
268 TPPLVertexType *vertextypes, std::set<ScanLineEdge>::iterator *edgeTreeIterators,
269 std::set<ScanLineEdge> *edgeTree,
long *helpers);
272 int TriangulateMonotone(
TPPLPoly *inPoly, TPPLPolyList *triangles);
288 int RemoveHoles(TPPLPolyList *inpolys, TPPLPolyList *outpolys);
300 int Triangulate_EC(
TPPLPoly *poly, TPPLPolyList *triangles);
315 int Triangulate_EC(TPPLPolyList *inpolys, TPPLPolyList *triangles);
327 int Triangulate_OPT(
TPPLPoly *poly, TPPLPolyList *triangles);
339 int Triangulate_MONO(
TPPLPoly *poly, TPPLPolyList *triangles);
353 int Triangulate_MONO(TPPLPolyList *inpolys, TPPLPolyList *triangles);
368 int MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monotonePolys);
384 int ConvexPartition_HM(
TPPLPoly *poly, TPPLPolyList *parts);
401 int ConvexPartition_HM(TPPLPolyList *inpolys, TPPLPolyList *parts);
416 int ConvexPartition_OPT(
TPPLPoly *poly, TPPLPolyList *parts);
Definition polypartition.h:197
Definition polypartition.h:176
Definition polypartition.h:92
Definition polypartition.h:225
Definition polypartition.h:218
Definition polypartition.h:206
Definition polypartition.h:191
Definition polypartition.h:178
Definition polypartition.h:232
Definition polypartition.h:47