int main() { TPPLPoly poly; { float x = 2.0f; float buf[] = { -x, -x, x, -x, x, x, -x, x }; make_poly(buf, 4, poly); } TPPLPoly hole; { float x = 1.0f; // float buf[] = { -x, -x, x, -x, x, x, 0, 0, -x, x }; float buf[] = {-x,-x, -x,x, 0,0, x,x, x,-x}; make_poly(buf, 5, hole); } std::list< TPPLPoly > list; list.push_back(poly); list.push_back(hole); std::list< TPPLPoly > triangles; TPPLPartition pp; if (!pp.Triangulate_EC(&list, &triangles)) { printf("failed\n"); } return 0; }
virtual void onDrawContent(SkCanvas* canvas) { SkPaint paint; paint.setAntiAlias(true); paint.setStyle(SkPaint::kStroke_Style); SkMatrix matrix; matrix.setScale(SkIntToScalar(100), SkIntToScalar(100)); matrix.postTranslate(SkIntToScalar(200), SkIntToScalar(200)); canvas->concat(matrix); for (int n = 3; n < 20; n++) { SkPath path; make_poly(&path, n); SkAutoCanvasRestore acr(canvas, true); canvas->rotate(SkIntToScalar(10) * (n - 3)); canvas->translate(-SK_Scalar1, 0); canvas->drawPath(path, paint); } }
static void build_polys(void) { poly_buffer_t aux; int32_t a[4]; int32_t x[4]; init_poly_buffer(&aux); a[0] = 0; poly[0] = make_poly(&aux, a, NULL, 1); // 0 a[0] = 1; poly[1] = make_poly(&aux, a, NULL, 1); // 1 a[0] = -100; poly[2] = make_poly(&aux, a, NULL, 1); // -100 poly[3] = NULL; poly[4] = NULL; poly[5] = NULL; a[0] = 0; a[1] = 1; x[1] = 3; a[2] = -1; x[2] = 4; poly[6] = make_poly(&aux, a, x, 3); // x3 - x4 a[0] = 0; a[1] = 1; x[1] = 5; a[2] = -1; x[2] = 4; poly[7] = make_poly(&aux, a, x, 3); // x5 - x4 a[0] = 2; a[1] = 1; x[1] = 3; a[2] = 1; x[2] = 4; poly[8] = make_poly(&aux, a, x, 3); // 2 + x3 + x4 a[0] = 0; a[1] = 1; x[1] = 3; a[2] = 2; x[2] = 5; poly[9] = make_poly(&aux, a, x, 3); // x3 + 2 * x5 delete_poly_buffer(&aux); }