Zeichnen Sie Surface_mesh, das von convex_hull_3 zurückgegeben wurdeC++

Programme in C++. Entwicklerforum
Anonymous
 Zeichnen Sie Surface_mesh, das von convex_hull_3 zurückgegeben wurde

Post by Anonymous »

In meinem Programm berechne ich die konvexe 3D-Hülle einiger Punkte mit dieser Funktion convex_hull_3 und speichere das Ergebnis in einem Oberflächennetzobjekt wie diesem:

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;
}
Aber so sieht es auf meinem Viewer aus:
Image
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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post