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实现三维散乱点集的Delaunay三角剖分

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

Delaunay三角剖分及matlab实例

参考: http://baike.baidu.com/link?url=gxeUeuUZTR9eoJAbcccg6u4Zx02yd6heyFOUedEpGIc79KcPBTS3Bjae_gLYgfvX...
  • piaoxuezhong
  • piaoxuezhong
  • 2017年03月30日 16:25
  • 5689

OpenCV——Delaunay三角剖分 [转载]

本博客转载自 http://blog.csdn.net/raby_gyl/article/details/17409717 请其他同学转载时注明原始文章的出处!...
  • liuguiyangnwpu
  • liuguiyangnwpu
  • 2014年05月04日 21:17
  • 17277

Delaunay三角剖分

一、三角网格基础 网格可以使用不同种类的多边形作为单元。如果使用的多边形是三角形,就称为三角网格(triangle mesh)。 三角网格在图形学和建模中被广泛使用,用来模拟复杂物体的表面。 三角网格...
  • fanzhe328
  • fanzhe328
  • 2014年03月23日 17:52
  • 7558

OpenCV——Delaunay三角剖分

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

Delaunay三角剖分

一、三角网格基础 网格可以使用不同种类的多边形作为单元。如果使用的多边形是三角形,就称为三角网格(triangle mesh)。 三角网格在图形学和建模中被广泛使用,用来模拟复杂物体的表面。 三角网格...
  • fanzhe328
  • fanzhe328
  • 2014年03月23日 17:52
  • 7558

OpenCV——Delaunay三角剖分 [转载]

本博客转载自 http://blog.csdn.net/raby_gyl/article/details/17409717 请其他同学转载时注明原始文章的出处!...
  • liuguiyangnwpu
  • liuguiyangnwpu
  • 2014年05月04日 21:17
  • 17277

Delaunay三角剖分算法

点集的三角剖分(Triangulation),对数值分析(比如有限元分析)以及图形学来说,都是极为重要的一项预处理技术。 尤其是Delaunay三角剖分,由于其独特性,关于点集的很多种几何图都和De...
  • kuikuijia
  • kuikuijia
  • 2015年05月31日 01:57
  • 4776

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

VC+OpenGL实现空间三维Delaunay三角剖分       三维建模和等值面的绘制过程中,需要经常使用三角形网格对数据体进行构面。而三角形的生成基于Delaunay三角剖分的算法实现的。...
  • feimeng124
  • feimeng124
  • 2012年09月18日 10:52
  • 1899

空间散乱点集Delaunay三角剖分的算法优化及实现

  • 2009年12月10日 16:30
  • 4.78MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: VC+OpenGL实现空间三维Delaunay三角剖分
举报原因:
原因补充:

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