summaryrefslogtreecommitdiff
path: root/src/cgalutils.cc
diff options
context:
space:
mode:
authorDon Bright <hugh.m.bright@gmail.com>2013-12-15 03:12:01 (GMT)
committerDon Bright <hugh.m.bright@gmail.com>2013-12-15 03:12:01 (GMT)
commit804ec858d9bd832629a2b00ebe689f2d11e4cbe5 (patch)
tree72ba912a89a66345025aa1ff7540b7d482a742d9 /src/cgalutils.cc
parent09d60fd5afd54f1537ff6f5349f6466be8401d01 (diff)
triangulation of near-planar PolySet faces
Diffstat (limited to 'src/cgalutils.cc')
-rw-r--r--src/cgalutils.cc27
1 files changed, 12 insertions, 15 deletions
diff --git a/src/cgalutils.cc b/src/cgalutils.cc
index bb46f1c..12e743d 100644
--- a/src/cgalutils.cc
+++ b/src/cgalutils.cc
@@ -8,10 +8,9 @@
#include <map>
-PolySet *createPolySetFromPolyhedron(const CGAL_Polyhedron &p)
+bool createPolySetFromPolyhedron(const CGAL_Polyhedron &p, PolySet &ps)
{
- PolySet *ps = new PolySet();
-
+ bool err = false;
typedef CGAL_Polyhedron::Vertex Vertex;
typedef CGAL_Polyhedron::Vertex_const_iterator VCI;
typedef CGAL_Polyhedron::Facet_const_iterator FCI;
@@ -35,13 +34,13 @@ PolySet *createPolySetFromPolyhedron(const CGAL_Polyhedron &p)
double x3 = CGAL::to_double(v3.point().x());
double y3 = CGAL::to_double(v3.point().y());
double z3 = CGAL::to_double(v3.point().z());
- ps->append_poly();
- ps->append_vertex(x1, y1, z1);
- ps->append_vertex(x2, y2, z2);
- ps->append_vertex(x3, y3, z3);
+ ps.append_poly();
+ ps.append_vertex(x1, y1, z1);
+ ps.append_vertex(x2, y2, z2);
+ ps.append_vertex(x3, y3, z3);
} while (hc != hc_end);
}
- return ps;
+ return err;
}
#undef GEN_SURFACE_DEBUG
@@ -127,22 +126,20 @@ public:
}
};
-CGAL_Polyhedron *createPolyhedronFromPolySet(const PolySet &ps)
+bool createPolyhedronFromPolySet(const PolySet &ps, CGAL_Polyhedron &p)
{
- CGAL_Polyhedron *P = NULL;
+ bool err = false;
CGAL::Failure_behaviour old_behaviour = CGAL::set_error_behaviour(CGAL::THROW_EXCEPTION);
try {
- P = new CGAL_Polyhedron;
CGAL_Build_PolySet builder(ps);
- P->delegate(builder);
+ p.delegate(builder);
}
catch (const CGAL::Assertion_exception &e) {
PRINTB("CGAL error in CGAL_Build_PolySet: %s", e.what());
- delete P;
- P = NULL;
+ err = true;
}
CGAL::set_error_behaviour(old_behaviour);
- return P;
+ return err;
}
CGAL_Iso_cuboid_3 bounding_box( const CGAL_Nef_polyhedron3 &N )
contact: Jan Huwald // Impressum