Код: Выделить всё
#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;
}

Я думаю, что что-то не так с вычисленной сеткой поверхности, например, convex_hull не сохраняет нормали, необходимые от средства просмотра, или ориентацию граней. Если это так, то каков рекомендуемый способ решения этой проблемы? Кроме того, когда я использовал более старую версию CGAL (5.6.3), загруженную через apt, она работала нормально. Сейчас я использую архив CGAL 6.1, но это не так.
Подробнее здесь: https://stackoverflow.com/questions/798 ... vex-hull-3
Мобильная версия