Нарисуйте Surface_mesh, возвращенный из convex_hull_3C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Нарисуйте Surface_mesh, возвращенный из convex_hull_3

Сообщение Anonymous »

В моей программе я вычисляю трехмерную выпуклую оболочку некоторых точек с помощью функции convex_hull_3 и сохраняю результат в объекте сетки Surface следующим образом:

Код: Выделить всё

#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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»