X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=Triangulate%2Ftriangle.cxx;h=1d90cbfbe8f99ef82c69a4e49d1cfddcef91bb62;hb=7f2ab3559b4218a4e43e28094e26c62fe8b78357;hp=992549214594da0a009283668101602cb7951f47;hpb=0eed0e091800f6c13b33a8af61614ab9d4a0b31f;p=flightgear.git diff --git a/Triangulate/triangle.cxx b/Triangulate/triangle.cxx index 992549214..1d90cbfbe 100644 --- a/Triangulate/triangle.cxx +++ b/Triangulate/triangle.cxx @@ -37,6 +37,9 @@ FGTriangle::~FGTriangle( void ) { // populate this class based on the specified gpc_polys list int FGTriangle::build( const FGgpcPolyList& gpc_polys ) { + int index; + tripoly poly; + // traverse the gpc_polys and build a unified node list and a set // of Triangle PSLG that reference the node list by index // (starting at zero) @@ -47,29 +50,52 @@ int FGTriangle::build( const FGgpcPolyList& gpc_polys ) { // process polygons in priority order cout << "prepairing node list and polygons" << endl; - for ( int i = 0; i < FG_MAX_AREAS; ++i ) { + for ( int i = 0; i < FG_MAX_AREA_TYPES; ++i ) { cout << "area type = " << i << endl; current = gpc_polys.polys[i].begin(); last = gpc_polys.polys[i].end(); for ( ; current != last; ++current ) { gpc_poly = *current; + cout << "processing a polygon, contours = " + << gpc_poly->num_contours << endl; + + poly.erase(poly.begin(), poly.end()); + + if (gpc_poly->num_contours <= 0 ) { + cout << "FATAL ERROR! no contours in this polygon" << endl; + exit(-1); + } + + if (gpc_poly->num_contours > 1 ) { + cout << "FATAL ERROR! no multi-contour support" << endl; + exit(-1); + } for ( int j = 0; j < gpc_poly->num_contours; j++ ) { for ( int k = 0; k < gpc_poly->contour[j].num_vertices; k++ ) { Point3D p( gpc_poly->contour[j].vertex[k].x, gpc_poly->contour[j].vertex[k].y, 0 ); - cout << trinodes.unique_add( p ) << endl; + index = trinodes.unique_add( p ); + poly.push_back(index); + // cout << index << endl; } + polylist[i].push_back(poly); } } } + for ( int i = 0; i < FG_MAX_AREA_TYPES; ++i ) { + cout << "polylist[" << i << "] = " << polylist[i].size() << endl; + } return 0; } // $Log$ +// Revision 1.3 1999/03/19 00:27:10 curt +// Continued work on triangulation preparation. +// // Revision 1.2 1999/03/18 04:31:11 curt // Let's not pass copies of huge structures on the stack ... ye might see a // segfault ... :-)