如何使用 CGAL 绘制三角形?
How to draw triangles using CGAL?
问题描述
我有一个包含许多 triangle_3 对象的列表。它应该看起来像一个封闭的曲面网格,但出于多种原因我没有使用 Surface_mesh 来表示它。但是,我真的很想检查它,所以我想画它。我阅读了 CGAL 手册,但没有找到任何可以在 Windows 上使用的函数。我在 Geomview 包中找到了一个名为 draw_triangles 的函数,但是这个包的用户手册说 “本章描述的功能在 Windows 上不可用” .在我的编程环境中似乎无法使用 draw_triangles 函数。我怎样才能画出三角形?
编程环境
windowsx64
对比 2017
CGAL 5.3
我建议构建一个 Surface_mesh
仅用于显示目的。您可以使用以下 example. If your triangle soup is not directly a valid surface mesh, you can use the functions orient_polygon_soup()
and polygon_soup_to_polygon_mesh()
.
另请参阅此 example。
编辑
我从未尝试过,但似乎您可以通过向以下 class:
添加部分模板专业化来全局或按面更改颜色
namespace CGAL
{
// Default color functor; user can change it to have its own face color
struct DefaultColorFunctorFaceGraph
{
template<typename Graph>
CGAL::IO::Color operator()(const Graph&,
typename boost::graph_traits<Graph>::face_descriptor fh) const
{
if (fh==boost::graph_traits<Graph>::null_face()) // use to get the mono color
return CGAL::IO::Color(100, 125, 200); // R G B between 0-255
return get_random_color(CGAL::get_default_random());
}
};
}
问题描述
我有一个包含许多 triangle_3 对象的列表。它应该看起来像一个封闭的曲面网格,但出于多种原因我没有使用 Surface_mesh 来表示它。但是,我真的很想检查它,所以我想画它。我阅读了 CGAL 手册,但没有找到任何可以在 Windows 上使用的函数。我在 Geomview 包中找到了一个名为 draw_triangles 的函数,但是这个包的用户手册说 “本章描述的功能在 Windows 上不可用” .在我的编程环境中似乎无法使用 draw_triangles 函数。我怎样才能画出三角形?
编程环境
windowsx64
对比 2017
CGAL 5.3
我建议构建一个 Surface_mesh
仅用于显示目的。您可以使用以下 example. If your triangle soup is not directly a valid surface mesh, you can use the functions orient_polygon_soup()
and polygon_soup_to_polygon_mesh()
.
另请参阅此 example。
编辑 我从未尝试过,但似乎您可以通过向以下 class:
添加部分模板专业化来全局或按面更改颜色namespace CGAL
{
// Default color functor; user can change it to have its own face color
struct DefaultColorFunctorFaceGraph
{
template<typename Graph>
CGAL::IO::Color operator()(const Graph&,
typename boost::graph_traits<Graph>::face_descriptor fh) const
{
if (fh==boost::graph_traits<Graph>::null_face()) // use to get the mono color
return CGAL::IO::Color(100, 125, 200); // R G B between 0-255
return get_random_color(CGAL::get_default_random());
}
};
}