|
@@ -151,7 +151,7 @@ triangulate() {
|
|
|
*/
|
|
*/
|
|
|
choose_idx = 0;
|
|
choose_idx = 0;
|
|
|
|
|
|
|
|
- cerr << "got " << num_segments << " segments\n";
|
|
|
|
|
|
|
+ //cerr << "got " << num_segments << " segments\n";
|
|
|
for (i = 1; i < (int)seg.size(); ++i) {
|
|
for (i = 1; i < (int)seg.size(); ++i) {
|
|
|
segment_t &s = seg[i];
|
|
segment_t &s = seg[i];
|
|
|
printf(" %d. (%g %g), (%g %g)\n", i, s.v0.x, s.v0.y, s.v1.x, s.v1.y);
|
|
printf(" %d. (%g %g), (%g %g)\n", i, s.v0.x, s.v0.y, s.v1.x, s.v1.y);
|
|
@@ -171,35 +171,39 @@ triangulate() {
|
|
|
}
|
|
}
|
|
|
choose_idx = 0;
|
|
choose_idx = 0;
|
|
|
|
|
|
|
|
- cerr << "got " << num_segments << " segments\n";
|
|
|
|
|
|
|
+ /*
|
|
|
|
|
+ //cerr << "got " << num_segments << " segments\n";
|
|
|
for (i = 1; i < (int)seg.size(); ++i) {
|
|
for (i = 1; i < (int)seg.size(); ++i) {
|
|
|
segment_t &s = seg[i];
|
|
segment_t &s = seg[i];
|
|
|
printf(" %d. (%g %g), (%g %g)\n", i, s.v0.x, s.v0.y, s.v1.x, s.v1.y);
|
|
printf(" %d. (%g %g), (%g %g)\n", i, s.v0.x, s.v0.y, s.v1.x, s.v1.y);
|
|
|
printf(" root0 = %d, root1 = %d\n", s.root0, s.root1);
|
|
printf(" root0 = %d, root1 = %d\n", s.root0, s.root1);
|
|
|
printf(" next = %d, prev = %d\n", s.next, s.prev);
|
|
printf(" next = %d, prev = %d\n", s.next, s.prev);
|
|
|
}
|
|
}
|
|
|
|
|
+ */
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- cerr << "got " << tr.size() - 1 << " trapezoids\n";
|
|
|
|
|
|
|
+ /*
|
|
|
|
|
+ //cerr << "got " << tr.size() - 1 << " trapezoids\n";
|
|
|
for (i = 1; i < (int)tr.size(); ++i) {
|
|
for (i = 1; i < (int)tr.size(); ++i) {
|
|
|
trap_t &t = tr[i];
|
|
trap_t &t = tr[i];
|
|
|
- cerr << " " << i << ". state = " << t.state << "\n";
|
|
|
|
|
- cerr << " lseg = " << t.lseg << " rseg = " << t.rseg
|
|
|
|
|
- << "\n";
|
|
|
|
|
- cerr << " hi = " << t.hi.x << " " << t.hi.y << " lo = "
|
|
|
|
|
- << t.lo.x << " " << t.lo.y << "\n";
|
|
|
|
|
|
|
+ //cerr << " " << i << ". state = " << t.state << "\n";
|
|
|
|
|
+ //cerr << " lseg = " << t.lseg << " rseg = " << t.rseg << "\n";
|
|
|
|
|
+ //cerr << " hi = " << t.hi.x << " " << t.hi.y << " lo = " << t.lo.x << " " << t.lo.y << "\n";
|
|
|
}
|
|
}
|
|
|
|
|
+ */
|
|
|
|
|
|
|
|
int nmonpoly = monotonate_trapezoids(num_segments);
|
|
int nmonpoly = monotonate_trapezoids(num_segments);
|
|
|
|
|
|
|
|
- cerr << "got " << nmonpoly << " monotone polygons\n";
|
|
|
|
|
|
|
+ //cerr << "got " << nmonpoly << " monotone polygons\n";
|
|
|
|
|
|
|
|
triangulate_monotone_polygons(num_segments, nmonpoly);
|
|
triangulate_monotone_polygons(num_segments, nmonpoly);
|
|
|
|
|
+
|
|
|
|
|
+ /*
|
|
|
Result::iterator ri;
|
|
Result::iterator ri;
|
|
|
for (ri = _result.begin(); ri != _result.end(); ++ri) {
|
|
for (ri = _result.begin(); ri != _result.end(); ++ri) {
|
|
|
- cerr << "tri: " << (*ri)._v0 << " " << (*ri)._v1 << " "
|
|
|
|
|
- << (*ri)._v2 << "\n";
|
|
|
|
|
|
|
+ //cerr << "tri: " << (*ri)._v0 << " " << (*ri)._v1 << " " << (*ri)._v2 << "\n";
|
|
|
}
|
|
}
|
|
|
|
|
+ */
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////
|
|
@@ -834,7 +838,7 @@ merge_trapezoids(int segnum, int tfirst, int tlast, int side) {
|
|
|
|
|
|
|
|
int Triangulator::
|
|
int Triangulator::
|
|
|
add_segment(int segnum) {
|
|
add_segment(int segnum) {
|
|
|
- cerr << "add_segment(" << segnum << ")\n";
|
|
|
|
|
|
|
+ //cerr << "add_segment(" << segnum << ")\n";
|
|
|
|
|
|
|
|
segment_t s;
|
|
segment_t s;
|
|
|
// segment_t *so = &seg[segnum];
|
|
// segment_t *so = &seg[segnum];
|
|
@@ -1458,7 +1462,7 @@ find_new_roots(int segnum) {
|
|
|
/* Main routine to perform trapezoidation */
|
|
/* Main routine to perform trapezoidation */
|
|
|
int Triangulator::
|
|
int Triangulator::
|
|
|
construct_trapezoids(int nseg) {
|
|
construct_trapezoids(int nseg) {
|
|
|
- cerr << "construct_trapezoids(" << nseg << ")\n";
|
|
|
|
|
|
|
+ //cerr << "construct_trapezoids(" << nseg << ")\n";
|
|
|
int i;
|
|
int i;
|
|
|
int root, h;
|
|
int root, h;
|
|
|
|
|
|
|
@@ -2145,7 +2149,7 @@ triangulate_single_polygon(int nvert, int posmax, int side) {
|
|
|
int ri;
|
|
int ri;
|
|
|
int endv, tmp, vpos;
|
|
int endv, tmp, vpos;
|
|
|
|
|
|
|
|
- cerr << "triangulate_single_polygon(" << nvert << ", " << posmax << ", " << side << ")\n";
|
|
|
|
|
|
|
+ //cerr << "triangulate_single_polygon(" << nvert << ", " << posmax << ", " << side << ")\n";
|
|
|
|
|
|
|
|
if (side == TRI_RHS) /* RHS segment is a single segment */
|
|
if (side == TRI_RHS) /* RHS segment is a single segment */
|
|
|
{
|
|
{
|
|
@@ -2176,8 +2180,7 @@ triangulate_single_polygon(int nvert, int posmax, int side) {
|
|
|
|
|
|
|
|
while ((v != endv) || (ri > 1))
|
|
while ((v != endv) || (ri > 1))
|
|
|
{
|
|
{
|
|
|
- cerr << " v = " << v << " ri = " << ri << " rc = " << rc.size()
|
|
|
|
|
- << " _result = " << _result.size() << "\n";
|
|
|
|
|
|
|
+ //cerr << " v = " << v << " ri = " << ri << " rc = " << rc.size() << " _result = " << _result.size() << "\n";
|
|
|
if (v <= 0) {
|
|
if (v <= 0) {
|
|
|
// Something went wrong.
|
|
// Something went wrong.
|
|
|
return;
|
|
return;
|