CGAL 上的色点 Triangulation_3
Color points on CGAL Triangulation_3
我正在尝试为 CGAL 上的 triangulation_3 中的点添加颜色。我只是拿 CGAL 的例子 describe here
我对这个例子做了一个简单的修改,以便能够绘制三角剖分:
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Delaunay_triangulation_3.h>
#include <CGAL/Delaunay_triangulation_cell_base_3.h>
#include <CGAL/Triangulation_vertex_base_with_info_3.h>
#include <CGAL/IO/Color.h>
#include <CGAL/draw_triangulation_3.h>
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Triangulation_vertex_base_with_info_3<CGAL::Color, K> Vb;
typedef CGAL::Delaunay_triangulation_cell_base_3<K> Cb;
typedef CGAL::Triangulation_data_structure_3<Vb, Cb> Tds;
typedef CGAL::Delaunay_triangulation_3<K, Tds> Delaunay;
typedef Delaunay::Point Point;
int main()
{
Delaunay T;
T.insert(Point(0,0,0));
T.insert(Point(1,0,0));
T.insert(Point(0,1,0));
T.insert(Point(0,0,1));
T.insert(Point(2,2,2));
T.insert(Point(-1,0,1));
// Set the color of finite vertices of degree 6 to red.
Delaunay::Finite_vertices_iterator vit;
for (Delaunay::Vertex_handle v : T.finite_vertex_handles())
if (T.degree(v) == 6)
v->info() = CGAL::Color(0,255,0);
CGAL::draw(T);
return 0;
}
但是无论我使用哪种颜色 v->info() = CGAL::Color(0,255,0);
绘制方法总是在显示的 window 中给出相同的红点:
我知道代码正在构建一个包含颜色信息的数据结构,但这可能与绘图方法无关,所以我认为 window 没有向我显示绿点,因为这不是给点上色的方法。如果是这样,用draw方法得到绿点三角剖分的方法是什么?'.
在当前形式下,查看器无法更改顶点或边的颜色。
但是改代码很容易。
- 将文件 draw_triangulation_3.h 复制到您的项目中
- 编辑方法
void compute_vertex(Vertex_const_handle vh)
,(此文件中的第 92 行)以使用颜色作为参数的 add_point 方法:add_point(vh->point(), vh->info());
我正在尝试为 CGAL 上的 triangulation_3 中的点添加颜色。我只是拿 CGAL 的例子 describe here
我对这个例子做了一个简单的修改,以便能够绘制三角剖分:
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Delaunay_triangulation_3.h>
#include <CGAL/Delaunay_triangulation_cell_base_3.h>
#include <CGAL/Triangulation_vertex_base_with_info_3.h>
#include <CGAL/IO/Color.h>
#include <CGAL/draw_triangulation_3.h>
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Triangulation_vertex_base_with_info_3<CGAL::Color, K> Vb;
typedef CGAL::Delaunay_triangulation_cell_base_3<K> Cb;
typedef CGAL::Triangulation_data_structure_3<Vb, Cb> Tds;
typedef CGAL::Delaunay_triangulation_3<K, Tds> Delaunay;
typedef Delaunay::Point Point;
int main()
{
Delaunay T;
T.insert(Point(0,0,0));
T.insert(Point(1,0,0));
T.insert(Point(0,1,0));
T.insert(Point(0,0,1));
T.insert(Point(2,2,2));
T.insert(Point(-1,0,1));
// Set the color of finite vertices of degree 6 to red.
Delaunay::Finite_vertices_iterator vit;
for (Delaunay::Vertex_handle v : T.finite_vertex_handles())
if (T.degree(v) == 6)
v->info() = CGAL::Color(0,255,0);
CGAL::draw(T);
return 0;
}
但是无论我使用哪种颜色 v->info() = CGAL::Color(0,255,0);
绘制方法总是在显示的 window 中给出相同的红点:
我知道代码正在构建一个包含颜色信息的数据结构,但这可能与绘图方法无关,所以我认为 window 没有向我显示绿点,因为这不是给点上色的方法。如果是这样,用draw方法得到绿点三角剖分的方法是什么?'.
在当前形式下,查看器无法更改顶点或边的颜色。
但是改代码很容易。
- 将文件 draw_triangulation_3.h 复制到您的项目中
- 编辑方法
void compute_vertex(Vertex_const_handle vh)
,(此文件中的第 92 行)以使用颜色作为参数的 add_point 方法:add_point(vh->point(), vh->info());