CGAL:在有限面上迭代时识别凸包面
CGAL: Identify convex hull facets when iterating over finite facets
我想知道是否有任何方法可以在迭代 Delaunay 3D 三角剖分的有限面时识别凸包中的面
在CGAL中,凸包上的面都入射到无限顶点。所以你只需要查看与小平面相对的两个顶点,并检查其中一个是否是无限顶点。
这里是一些示例代码,用于从所有有限面上识别凸包上的面。每个面都是一个单元格-顶点对,mirror_facet
函数提供另一个标识相同面的单元格-顶点对。然后你可以检查任一单元格(或任一顶点)是否无限以确定小平面是否在凸包上。
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Delaunay_triangulation_3.h>
#include <fstream>
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Delaunay_triangulation_3<K> Triangulation;
typedef Triangulation::Point Point;
int main( )
{
// read some points from a file
std::ifstream in("data/threed.cin");
std::istream_iterator<Point> begin(in);
std::istream_iterator<Point> end;
// form the Delaunay triangulation of the points
Triangulation T;
T.insert(begin, end);
// check each finite face to identify those on the convex hull
for (auto facet: T.finite_facets())
{
if (T.is_infinite(facet.first) ||
T.is_infinite(T.mirror_facet(facet).first))
{
// this facet is on the convex hull
}
else
{
// this facet is not on the convex hull
}
}
return 0;
}
我想知道是否有任何方法可以在迭代 Delaunay 3D 三角剖分的有限面时识别凸包中的面
在CGAL中,凸包上的面都入射到无限顶点。所以你只需要查看与小平面相对的两个顶点,并检查其中一个是否是无限顶点。
这里是一些示例代码,用于从所有有限面上识别凸包上的面。每个面都是一个单元格-顶点对,mirror_facet
函数提供另一个标识相同面的单元格-顶点对。然后你可以检查任一单元格(或任一顶点)是否无限以确定小平面是否在凸包上。
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Delaunay_triangulation_3.h>
#include <fstream>
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Delaunay_triangulation_3<K> Triangulation;
typedef Triangulation::Point Point;
int main( )
{
// read some points from a file
std::ifstream in("data/threed.cin");
std::istream_iterator<Point> begin(in);
std::istream_iterator<Point> end;
// form the Delaunay triangulation of the points
Triangulation T;
T.insert(begin, end);
// check each finite face to identify those on the convex hull
for (auto facet: T.finite_facets())
{
if (T.is_infinite(facet.first) ||
T.is_infinite(T.mirror_facet(facet).first))
{
// this facet is on the convex hull
}
else
{
// this facet is not on the convex hull
}
}
return 0;
}