Почему CGAL не удалось прочитать сетку?

Я читаю сетку (.off) CGAL::read_off(fin,mesh) как примеры, но это не удалось!

это мой код:

#include<CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Polyhedron_3.h>
#include <CGAL/IO/OFF_reader.h>
#include <vector>
#include <fstream>
#include <iostream>
typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
typedef CGAL::Polyhedron_3<Kernel> Polyhedron;
int main(int argc, char* argv[])
{
const char* filename ="../mesh000.off";
std::ifstream input(filename);
if (!input)
{
std::cerr << "Cannot open file " << std::endl;
return EXIT_FAILURE;
}
std::vector<Kernel::Point_3> points;
std::vector< std::vector<std::size_t> > polygons;
if (!CGAL::read_OFF(input, points, polygons))
{
std::cerr << "Error parsing the OFF file " << std::endl;
return EXIT_FAILURE;
}

Polyhedron mesh;
if(!CGAL::read_off(input,mesh))
{
std::cerr << "Error Read OFF " << std::endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}

выход:

Error Read OFF

Он успешно открыл mesh000.off, но почему не удалось перейти на сетку!

0

Решение

Это означает, что ваша сетка не является допустимой поверхностью коллектора. Вы можете использовать функцию is_polygon_soup_a_polygon_mesh() чтобы проверить это и orient_polygon_soup() сделать его многообразным (но некоторые ребра могут быть продублированы, и это создаст некоторые самопересечения).

0

Другие решения

Других решений пока нет …