Code: Select all
#include
#include
#include
#include
#include
#include
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef K::Point_3 Point_3;
double rand_double(double min, double max){
return min + (max - min) * ((double)rand() / (double)RAND_MAX);
}
/* Generates n random points in R^3*/
void gen_points(std::vector
& points, int n){
points.clear();
for (int i = 0; i < n; i++){
double x = rand_double(-100,100);
double y = rand_double(-100,100);
double z = rand_double(-100,100);
points.push_back(Point_3(x,y,z));
}
}
int main(){
std::vector points;
const int point_count = 200;
gen_points(points, point_count);
CGAL::Surface_mesh smesh;
CGAL::convex_hull_3(points.begin(), points.end(), smesh);
CGAL::draw(smesh);
return 0;
}

Ich denke, dass mit dem berechneten Oberflächennetz etwas nicht stimmt, zum Beispiel, dass convex_hull die vom Viewer benötigten Normalen oder die Ausrichtung der Flächen nicht speichert. Wenn dies der Fall ist, welche Lösung wird empfohlen? Auch als ich eine ältere Version von CGAL (5.6.3) verwendete, die über apt heruntergeladen wurde, funktionierte es einwandfrei. Ich verwende jetzt CGAL 6.1 Tarball und das tut es nicht.
Mobile version