summaryrefslogtreecommitdiff
path: root/src/cgaladv_minkowski2.cc
diff options
context:
space:
mode:
authorGiles Bathgate <gilesbathgate@gmail.com>2011-04-09 09:27:50 (GMT)
committerGiles Bathgate <gilesbathgate@gmail.com>2011-04-09 09:27:50 (GMT)
commit9cc441025cda17a494259b1ae2cafc5b48c14a12 (patch)
treea7cc8722fb6e8841edee230615f64f84ff048743 /src/cgaladv_minkowski2.cc
parent18a11b5c3c567bb9796ed40434c3fb4f8a5ec45c (diff)
Basic implementation of convex hull for 2d polyhedra.
The code was provided to me by Len Trigg via email.
Diffstat (limited to 'src/cgaladv_minkowski2.cc')
-rw-r--r--src/cgaladv_minkowski2.cc20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/cgaladv_minkowski2.cc b/src/cgaladv_minkowski2.cc
index d03943c..116139f 100644
--- a/src/cgaladv_minkowski2.cc
+++ b/src/cgaladv_minkowski2.cc
@@ -33,14 +33,10 @@
#if 1
-#include <CGAL/Exact_predicates_exact_constructions_kernel.h>
#include <CGAL/minkowski_sum_2.h>
extern CGAL_Nef_polyhedron2 minkowski2(CGAL_Nef_polyhedron2 a, CGAL_Nef_polyhedron2 b);
-
-struct K2 : public CGAL::Exact_predicates_exact_constructions_kernel {};
-typedef CGAL::Polygon_2<K2> Poly2;
-typedef CGAL::Polygon_with_holes_2<K2> Poly2h;
+extern CGAL_Poly2 nef2p2(CGAL_Nef_polyhedron2 p);
//-----------------------------------------------------------------------------
// Pretty-print a CGAL polygon.
@@ -80,9 +76,9 @@ void print_polygon_with_holes (const CGAL::Polygon_with_holes_2<Kernel, Containe
return;
}
-static Poly2 nef2p2(CGAL_Nef_polyhedron2 p)
+CGAL_Poly2 nef2p2(CGAL_Nef_polyhedron2 p)
{
- std::list<K2::Point_2> points;
+ std::list<CGAL_ExactKernel2::Point_2> points;
Grid2d<int> grid(GRID_COARSE);
typedef CGAL_Nef_polyhedron2::Explorer Explorer;
@@ -110,14 +106,14 @@ static Poly2 nef2p2(CGAL_Nef_polyhedron2 p)
double x = to_double(ep.x()), y = to_double(ep.y());
std::cout << "point " << ep << std::endl;
grid.align(x, y);
- points.push_back(K2::Point_2(x, y));
+ points.push_back(CGAL_ExactKernel2::Point_2(x, y));
}
}
}
- return Poly2(points.begin(), points.end());
+ return CGAL_Poly2(points.begin(), points.end());
}
-static CGAL_Nef_polyhedron2 p2nef2(Poly2 p2) {
+static CGAL_Nef_polyhedron2 p2nef2(CGAL_Poly2 p2) {
std::list<CGAL_Nef_polyhedron2::Point> points;
for (int j = 0; j < p2.size(); j++) {
double x = to_double(p2[j].x());
@@ -130,7 +126,7 @@ static CGAL_Nef_polyhedron2 p2nef2(Poly2 p2) {
CGAL_Nef_polyhedron2 minkowski2(CGAL_Nef_polyhedron2 a, CGAL_Nef_polyhedron2 b)
{
- Poly2 ap = nef2p2(a), bp = nef2p2(b);
+ CGAL_Poly2 ap = nef2p2(a), bp = nef2p2(b);
std::cout << "ap = "; print_polygon(ap);
std::cout << "bp = "; print_polygon(bp);
@@ -141,7 +137,7 @@ CGAL_Nef_polyhedron2 minkowski2(CGAL_Nef_polyhedron2 a, CGAL_Nef_polyhedron2 b)
PRINT("WARNING: minkowski() could not get any points from object 2!");
return CGAL_Nef_polyhedron2();
} else {
- Poly2h x = minkowski_sum_2(ap, bp);
+ CGAL_Poly2h x = minkowski_sum_2(ap, bp);
std::cout << "result = "; print_polygon_with_holes(x);
// Make a CGAL_Nef_polyhedron2 out of just the boundary for starters
contact: Jan Huwald // Impressum