【问题标题】:How to draw triangles using CGAL?如何使用 CGAL 绘制三角形?
【发布时间】:2021-11-25 03:30:20
【问题描述】:

问题描述
我有一个包含许多 triangle_3 对象的列表。它应该看起来像一个封闭的表面网格,但出于多种原因我不使用 Surface_mesh 来表示它。但是,我真的很想检查它,所以我想画它。我阅读了 CGAL 手册,但没有找到任何可以在 Windows 上使用的功能。我在 Geomview 包中找到了一个名为 draw_triangles 的函数,但是这个包的用户手册说“本章描述的功能在 Windows 上不可用”。在我的编程环境中似乎无法使用 draw_triangles 函数。如何绘制三角形?
编程环境
窗户 x64
VS 2017
CGAL 5.3

【问题讨论】:

    标签: cgal


    【解决方案1】:

    我建议构建一个 Surface_mesh 仅用于显示目的。您可以使用以下example。如果您的三角形汤不是直接有效的表面网格,您可以使用函数orient_polygon_soup()polygon_soup_to_polygon_mesh()

    另见example

    编辑 我从未尝试过,但似乎您可以通过向以下类添加部分模板特化来全局或按面更改颜色:

    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());
      }
    };
    
    }
    

    【讨论】:

    • 感谢您的回复。我也想知道有没有办法改变draw函数显示的颜色。函数绘制的网格是蓝色的,在我看来不是很漂亮。
    • 我用一些相关信息编辑了我的答案。
    • 谢谢。我已经尝试过这种方法,但没有奏效。最后,我在一个名为 Basic_viewer_qt.h 的头文件中找到了一个名为 Basic_viewer_qt 的结构。通过更改该结构中的变量 m_faces_mono_color 和 m_ambient_color 的值,可以更改网格的颜色。好像m_faces_mono_color这个变量控制了单面的颜色,m_ambient_color这个变量控制了光的颜色。
    猜你喜欢
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多