约束(Delaunay)三角剖分

时间:2014-01-11 13:20:49

标签: graph vtk triangulation cgal

对于大学项目,我需要实施几年前已经发布过的计算机图形用纸。有一次,我需要对从模拟中得到的结果进行三角测量。我想更容易解释我需要查看论文中包含的图片:

假设我已经获得了重建您在第二个缩略图中可以看到的轮廓线所需的所有信息。使用那些我需要使用那些siluettes做一些三角测量作为约束。我在互联网上搜索过像CGAL,VTK,Triangle,Triangle ++这样的三角测量库......但我总是惊恐地举起双手。我不是一个优秀的程序员,在这个项目的截止日期过去之前,我似乎无法进入其中一个API。

我会感谢任何类型的帮助,如代码小贴士,提示等......

我知道算法需要段(点对)作为输入,所以假设我有一个std :: vector包含定义siluette的所有点对以及矩形的左侧和右侧。 / p>

你能以某种方式给我一个我可以用于我的目的的CGAL代码片段吗?首先,我只想实现第三个缩略图的状态。我将不得不在“裂缝”中做一些位移,最后将信息写入VBO for OpenGL渲染。


我已经开始使用CGAL了解它。一个简单的问题仍然让我发疯:

可以在将信息添加到三角形对象之前将信息(如整数)附加到点。我这样做是因为我一方面需要一个int-flag,我用它来定义我的纹理坐标,另一方面我使用的索引,以便我可以创建一个索引的VBO。 http://doc.cgal.org/latest/Triangulation_2/Triangulation_2_2info_insert_with_pair_iterator_2_8cpp-example.html

但是我只想插入约束边而不是点。如果我插入两个CGAL返回奇怪的结果,因为点被馈送两次(一次作为点,一次作为约束边缘的点)。 http://doc.cgal.org/latest/Triangulation_2/Triangulation_2_2constrained_8cpp-example.html

是否可以以与点信息相同的方式连接到“约束”,以便在迭代结果面之前我只能使用此函数cdt.insert_constraint( Point(j,0), Point(j,6));

当我遍历三角形时,我需要一些方法来访问我之前定义的int-flags。像这样但不是在实际点上,而是由约束边界定义的“结束”:

for(CDT::Finite_faces_iterator fit = m_cdt.finite_faces_begin(); fit != m_cdt.finite_faces_end(); ++fit, ++k) {

    int j = k*3;
    for(int i=0; i < 3; i++) {

        indices[j+i] = fit->vertex(i)->info().first;
    }
}

0 个答案:

没有答案