From 819f5d085f009152f4aa75b451895b8d240c9059 Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Wed, 26 Nov 2014 15:22:15 -0500 Subject: [PATCH] Moved Polygon typedef out of PolySet class --- src/GeometryEvaluator.cc | 4 ++-- src/cgal.h | 1 + src/cgalutils.cc | 8 ++++---- src/export.cc | 2 +- src/linalg.h | 3 +++ src/polyset-utils.cc | 10 +++++----- src/polyset.cc | 2 +- src/polyset.h | 3 +-- 8 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/GeometryEvaluator.cc b/src/GeometryEvaluator.cc index 5e82897f..8db1d5fb 100644 --- a/src/GeometryEvaluator.cc +++ b/src/GeometryEvaluator.cc @@ -573,7 +573,7 @@ Response GeometryEvaluator::visit(State &state, const TransformNode &node) static void translate_PolySet(PolySet &ps, const Vector3d &translation) { - BOOST_FOREACH(PolySet::Polygon &p, ps.polygons) { + BOOST_FOREACH(Polygon &p, ps.polygons) { BOOST_FOREACH(Vector3d &v, p) { v += translation; } @@ -651,7 +651,7 @@ static Geometry *extrudePolygon(const LinearExtrudeNode &node, const Polygon2d & PolySet *ps_bottom = poly.tessellate(); // bottom // Flip vertex ordering for bottom polygon - BOOST_FOREACH(PolySet::Polygon &p, ps_bottom->polygons) { + BOOST_FOREACH(Polygon &p, ps_bottom->polygons) { std::reverse(p.begin(), p.end()); } translate_PolySet(*ps_bottom, Vector3d(0,0,h1)); diff --git a/src/cgal.h b/src/cgal.h index 3d096d6c..75054f91 100644 --- a/src/cgal.h +++ b/src/cgal.h @@ -62,6 +62,7 @@ typedef CGAL::Polyhedron_incremental_builder_3 CGAL_Polybuilder; typedef CGAL::Point_3 CGAL_Point_3; typedef CGAL::Iso_cuboid_3 CGAL_Iso_cuboid_3; +typedef std::vector CGAL_Polygon_3; // CGAL_Nef_polyhedron2 uses CGAL_Kernel2, but Iso_rectangle_2 needs to match // CGAL_Nef_polyhedron2::Explorer::Point which is different than diff --git a/src/cgalutils.cc b/src/cgalutils.cc index dd156720..a609bd63 100644 --- a/src/cgalutils.cc +++ b/src/cgalutils.cc @@ -67,7 +67,7 @@ namespace /* anonymous */ { Grid3d grid(GRID_FINE); std::vector indices(3); - BOOST_FOREACH(const PolySet::Polygon &p, ps.polygons) { + BOOST_FOREACH(const Polygon &p, ps.polygons) { BOOST_REVERSE_FOREACH(Vector3d v, p) { if (!grid.has(v[0], v[1], v[2])) { // align v to the grid; the CGALPoint will receive the aligned vertex @@ -85,7 +85,7 @@ namespace /* anonymous */ { BOOST_FOREACH(const CGALPoint &p, vertices) { B.add_vertex(p); } - BOOST_FOREACH(const PolySet::Polygon &p, ps.polygons) { + BOOST_FOREACH(const Polygon &p, ps.polygons) { #ifdef GEN_SURFACE_DEBUG if (pidx++ > 0) printf(","); #endif @@ -148,7 +148,7 @@ namespace /* anonymous */ { #ifdef GEN_SURFACE_DEBUG printf("polyhedron(faces=["); #endif - BOOST_FOREACH(const PolySet::Polygon &p, ps.polygons) { + BOOST_FOREACH(const Polygon &p, ps.polygons) { #ifdef GEN_SURFACE_DEBUG if (pidx++ > 0) printf(","); #endif @@ -373,7 +373,7 @@ namespace CGALUtils { } else { const PolySet *ps = dynamic_cast(chgeom.get()); if (ps) { - BOOST_FOREACH(const PolySet::Polygon &p, ps->polygons) { + BOOST_FOREACH(const Polygon &p, ps->polygons) { BOOST_FOREACH(const Vector3d &v, p) { points.insert(K::Point_3(v[0], v[1], v[2])); } diff --git a/src/export.cc b/src/export.cc index 1da18a74..7f0331d1 100644 --- a/src/export.cc +++ b/src/export.cc @@ -133,7 +133,7 @@ void export_stl(const PolySet &ps, std::ostream &output) setlocale(LC_NUMERIC, "C"); // Ensure radix is . (not ,) in output output << "solid OpenSCAD_Model\n"; - BOOST_FOREACH(const PolySet::Polygon &p, triangulated.polygons) { + BOOST_FOREACH(const Polygon &p, triangulated.polygons) { assert(p.size() == 3); // STL only allows triangles std::stringstream stream; stream << p[0][0] << " " << p[0][1] << " " << p[0][2]; diff --git a/src/linalg.h b/src/linalg.h index 69fe316f..9e7d9f94 100644 --- a/src/linalg.h +++ b/src/linalg.h @@ -17,6 +17,9 @@ using Eigen::Matrix4d; #define Transform3d Eigen::Affine3d #define Transform2d Eigen::Affine2d +typedef std::vector Polygon; +typedef std::vector Polygons; + bool matrix_contains_infinity( const Transform3d &m ); bool matrix_contains_nan( const Transform3d &m ); diff --git a/src/polyset-utils.cc b/src/polyset-utils.cc index e830d0ae..b55dfc4d 100644 --- a/src/polyset-utils.cc +++ b/src/polyset-utils.cc @@ -32,7 +32,7 @@ namespace PolysetUtils { Polygon2d *project(const PolySet &ps) { Polygon2d *poly = new Polygon2d; - BOOST_FOREACH(const PolySet::Polygon &p, ps.polygons) { + BOOST_FOREACH(const Polygon &p, ps.polygons) { Outline2d outline; BOOST_FOREACH(const Vector3d &v, p) { outline.vertices.push_back(Vector2d(v[0], v[1])); @@ -65,12 +65,12 @@ namespace PolysetUtils { void tessellate_faces(const PolySet &inps, PolySet &outps) { int degeneratePolygons = 0; for (size_t i = 0; i < inps.polygons.size(); i++) { - const PolySet::Polygon pgon = inps.polygons[i]; + const Polygon pgon = inps.polygons[i]; if (pgon.size() < 3) { degeneratePolygons++; continue; } - std::vector triangles; + std::vector triangles; if (pgon.size() == 3) { triangles.push_back(pgon); } @@ -98,7 +98,7 @@ namespace PolysetUtils { // Iterate over the resulting faces CDT::Finite_faces_iterator fit; for (fit=cdt.finite_faces_begin(); fit!=cdt.finite_faces_end(); fit++) { - PolySet::Polygon pgon; + Polygon pgon; for (int i=0;i<3;i++) { K::Point_3 v = cdt.triangle(fit)[i]; pgon.push_back(Vector3d(v.x(), v.y(), v.z())); @@ -109,7 +109,7 @@ namespace PolysetUtils { // ..and pass to the output polyhedron for (size_t j=0;j *borders_p = &polygons; + const Polygons *borders_p = &polygons; for (size_t i = 0; i < borders_p->size(); i++) { const Polygon *poly = &borders_p->at(i); for (size_t j = 1; j <= poly->size(); j++) { diff --git a/src/polyset.h b/src/polyset.h index 91d17453..5701137d 100644 --- a/src/polyset.h +++ b/src/polyset.h @@ -14,8 +14,7 @@ BOOST_TRIBOOL_THIRD_STATE(unknown) class PolySet : public Geometry { public: - typedef std::vector Polygon; - std::vector polygons; + Polygons polygons; PolySet(unsigned int dim, boost::tribool convex = unknown); PolySet(const Polygon2d &origin);