VC+OpenGL实现空间三维Delaunay三角剖分

转载 2011年01月16日 11:07:00
 

    三维建模和等值面的绘制过程中,需要经常使用三角形网格对数据体进行构面。而三角形的生成基于Delaunay三角剖分的算法实现的。前段时间一直在考虑数据体的任意剖面切割该怎么做,但是一直被两个问题所困扰,一个就是交点问题,然后就是对所求交点进行绘制问题(三角形网格面构造)。终于在半个月后有了一点收获。

1 Delaunay三角剖分原理

     三角剖分算法可以分为针对二维的局部剖分和三维的全局剖分算法。在二维情况下建立的基于简单的三角形构面的方式,而三维情况下则是需要建立基于四面体的方式构造空间曲面。在遇到三维空间散乱点的构面问题时,可以直接采用三维Delaunay剖分,亦可先将三维坐标预处理转换到二维坐标系中,间接的采用二维Delaunay剖分算法。想着用最简单的方式实现功能的时候,就选择了第二种方式。

    关于二维的Delaunay三角剖分原理,文献资料相当多,随便一搜就是一大堆,网上也有很不错的介绍:

Delaunay三角剖分(Delaunay Triangulation)相关知识:http://www.cnblogs.com/soroman/archive/2007/05/17/750430.html

[图形算法]Delaunay三角剖分算法 :http://www.cnblogs.com/renliqq/archive/2008/02/06/1065399.html 

关于生成三角形网格的算法也是很多,我选择了稍微老套点的生长法,实现起来还算是思路清晰。

2 三维空间散乱点Delaunay三角剖分程序实现

     这个过程中,我们首先需要实现的就是三维坐标向二维坐标的转换。参数化的方程组求解可以参考:

http://z.baidu.com/question/81807904.html?fr=qrl&cid=1071&index=4&fr2=query 其中需要我们注意的就是自己需要投影的平面方程了。比如需要制作剖切面,找到它的法向以后,中间还需要再加上一个步骤,那就是实现空间三维点投影到另外的一个空间平面上的过程,然后再接着进行向二维坐标的转换。任意方向剖切面的算法实现步骤:
Step1 求取空间任意方向剖切面的方程。(利用三点确定平面原理+点法式平面方程);
Step2 求取剖切面与三维数据体的交点;
Step3 根据得到的交点数据集进行坐标投影,将三维坐标点投影到剖切面上;
Step4 再将完成投影后的三维数据点集进行二维直角坐标系的参数化求解(投影到(U,V)二维坐标系中);
            可以首先确定一个向量U,选为第一个点到距离第一个点最远的另一点的向量;
            然后确定另一个向量V,选为垂直于U和剖切面发向量的方向向量;
Step5 进行针对处理后的二维数据点集的Delaunay三角剖分;
Step6 将数据还原为三维坐标。
程序实现代码(VC++):




3 三维空间任意剖面实现



本文引用地址: http://www.sciencenet.cn/m/user_content.aspx?id=256392

Opengl绘制计算几何库CGAL三角剖分结果的Demo

Ubuntu下改编了一个用CGAL计算输入点的三角剖分,并用OpenGL显示结果的C++程序。 该Demo可作为一个计算几何及绘图的框架。...
  • alaclp
  • alaclp
  • 2015-03-13 22:29:30
  • 2432

Delaunay德罗内三角形剖分生成以及opengl显示

  • 2017年12月06日 22:05
  • 8.29MB
  • 下载

VC+OpenGL实现空间三维Delaunay三角剖分

     三维建模和等值面的绘制过程中,需要经常使用三角形网格对数据体进行构面。而三角形的生成基于Delaunay三角剖分的算法实现的。前段时间一直在考虑数据体的任意剖面切割该怎么做,但是一直被两个问...
  • lixiaokai8990
  • lixiaokai8990
  • 2011-01-16 11:07:00
  • 2332

基于OpenGL实现三维散乱点集的Delaunay三角剖分

  • 2011年05月19日 21:20
  • 180KB
  • 下载

voronoi图的和Delaunay三角剖分

看了几个关于voronoi图的和Delaunay三角剖分的介绍,按照自己的理解综合大家的想法。总结一下这两个的知识。 Voronoi图定义: Voronoi图:计算几何里的一种基于距离的平面划分方...
  • tuibianyanzi
  • tuibianyanzi
  • 2016-07-12 10:47:14
  • 2203

Captain Dialog 2009-09-18 VC+OpenGL实现空间三维Delaunay三角剖分

Captain Dialog 2009-09-18     三维建模和等值面的绘制过程中,需要经常使用三角形网格对数据体进行构面。而三角形的生成基于Delaunay三角剖分的算法实现的。前段时间一直...
  • whucv
  • whucv
  • 2012-07-17 22:44:30
  • 2403

OpenCV——Delaunay三角剖分

转载请注明:http://blog.csdn.net/raby_gyl/article/details/17409717 相关文章:OpenCV三角剖分的遍历和纹理映射:http:/...
  • NewThinker_wei
  • NewThinker_wei
  • 2015-05-09 09:06:46
  • 17903

三角剖分 与Delaunary三角剖分

难怪以前处理网格模型时候,观察到顶点数目,三角面数,边数,基本比例为1:2:3。但又有所偏差。...
  • liuxingwan
  • liuxingwan
  • 2015-12-05 11:30:19
  • 757

Delaunary 三角网格

今天阅读coin3d代码,发现了一个SbTessellate类,这个类可以将多边形分割成带约束边的Delaunary三角网.看来Coin中还有很多好东西需要挖掘.^_^...
  • RobinHao
  • RobinHao
  • 2008-03-06 23:14:00
  • 1684

点到点法式平面投影点的计算

算法概述平面由一点O(x0,y0,z0)O(x_0,y_0,z_0)和法向量n→=(n1,n2,n3)\overrightarrow{n}=(n_1,n_2,n_3)定义,平面外一点为Pout(xp,...
  • lafengxiaoyu
  • lafengxiaoyu
  • 2017-11-03 14:21:20
  • 317
收藏助手
不良信息举报
您举报文章: VC+OpenGL实现空间三维Delaunay三角剖分
举报原因:
原因补充:

(最多只允许输入30个字)