我刚刚开始在飞机上使用Nef多面体-下面的简单程序创建了一个半平面,由y=0
行定义,然后由CGAL Explorer探索该半平面。
#include <iostream>
#include <CGAL/Exact_integer.h>
#include <CGAL/Extended_cartesian.h>
#include <CGAL/Nef_polyhedron_2.h>
using Kernel = CGAL::Extended_cartesian<CGAL::Exact_integer>;
using Polyhedron = CGAL::Nef_polyhedron_2<Kernel>;
using Line = Polyhedron::Line;
using std::cout;
using std::endl;
int main()
{
const Polyhedron p(Line(0, 1, 0), Polyhedron::INCLUDED);
const auto ex = p.explorer();
for (auto it = ex.vertices_begin(); it != ex.vertices_end(); ++it)
{
if (ex.is_standard(it))
{
cout << "Point: " << ex.point(it) << endl;
}
else
{
cout << "Ray: " << ex.ray(it) << endl;
}
}
}
程序输出:
Ray: 0 0 -1 -1
Ray: 0 0 -1 0
Ray: 0 0 -1 1
Ray: 0 0 1 -1
Ray: 0 0 1 0
Ray: 0 0 1 1
为什么这六缕?
最佳答案
从documentation中获取explorer
:
假设这些顶点在盒子上,我的最佳猜测是:
这是一个正方形,所以这就是为什么您会得到0, 0 -> -1, 1
和0, 0 -> 1, 1
之类的对角线的原因。我不是专家。
编辑:工程图是上下颠倒的,半平面是y >= 0
,而不是y <= 0
。