1. CGAL::Graphics_scene 概述
CGAL::Graphics_scene 是CGAL(Computational Geometry Algorithms Library)计算几何算法库中用于可视化几何对象的模块。作为CGAL 5.6版本引入的重要组件,它提供了一套简洁高效的API,允许开发者在不依赖复杂GUI框架的情况下,快速实现计算几何算法的可视化调试和结果展示。
我在使用CGAL进行Delaunay三角剖分算法开发时,发现Graphics_scene能极大简化调试过程。传统做法需要手动编写OpenGL代码或依赖第三方可视化工具,而Graphics_scene只需几行代码就能将点集、线段、多边形等几何元素渲染到窗口中,并支持基本的交互操作。这对于算法验证和教学演示都具有重要价值。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心功能解析
2.1 基本几何对象绘制
Graphics_scene支持所有CGAL基础几何类型的可视化:
cpp复制// 点、线段和多边形的绘制示例
Graphics_scene scene;
Point_2 p(1.0, 2.0);
Segment_2 seg(Point_2(0,0), Point_2(1,1));
Polygon_2 poly;
poly.push_back(Point_2(0,0));
poly.push_back(Point_2(1,0));
poly.push_back(Point_2(1,1));
scene.add_point(p); // 默认红色
scene.add_segment(seg, Qt::blue); // 指定蓝色
scene.add_polygon(poly); // 默认填充
每种几何对象都支持自定义样式:
- 点:大小、颜色、形状(圆形/方形)
- 线段:颜色、线宽、线型(实线/虚线)
- 多边形:填充色、边框样式
注意:Graphics_scene使用Qt的绘图系统,颜色参数需使用Qt::GlobalColor或QColor
2.2 高级可视化特性
2.2.1 分层渲染系统
场景采用分层设计,允许控制不同几何元素的显示顺序:
cpp复制scene.set_layer_weight(0); // 背景层
scene.add_circle(Point_2(0,0), 1.0);
scene.set_layer_weight(10); // 前景层
scene.add_point(Point_2(0,0), Qt::red);
典型分层策略:
- 第0层:背景网格、坐标系
- 第5层:主要几何对象
- 第10层:高亮元素、标注文本
2.2.2 动态更新机制
Graphics_scene支持实时更新显示内容,这对算法过程可视化特别有用:
cpp复制// 动态添加点示例
for(int i=0; i<100; ++i) {
Point_2 p(random(), random());
scene.add_point(p);
scene.update(); // 触发重绘
QCor
