Captain Dialog 2009-09-18
三维建模和等值面的绘制过程中,需要经常使用三角形网格对数据体进行构面。而三角形的生成基于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三角剖分程序实现
这个过程中,我们首先需要实现的就是三维坐标向二维坐标的转换。参数化的方程组求解可以参考:
Step1 求取空间任意方向剖切面的方程。(利用三点确定平面原理+点法式平面方程);
Step2 求取剖切面与三维数据体的交点;
Step3 根据得到的交点数据集进行坐标投影,将三维坐标点投影到剖切面上;
Step4 再将完成投影后的三维数据点集进行二维直角坐标系的参数化求解(投影到(U,V)二维坐标系中);
可以首先确定一个向量U,选为第一个点到距离第一个点最远的另一点的向量;
然后确定另一个向量V,选为垂直于U和剖切面发向量的方向向量;
Step5 进行针对处理后的二维数据点集的Delaunay三角剖分;
Step6 将数据还原为三维坐标。
程序实现代码(VC++):
3 三维空间任意剖面实现
本文引用地址:
http://blog.sciencenet.cn/blog-244606-256392.html
分享到:
相关推荐
o-captain-my-captain文体学分析教程文件.pdfo-captain-my-captain文体学分析教程文件.pdfo-captain-my-captain文体学分析教程文件.pdfo-captain-my-captain文体学分析教程文件.pdfo-captain-my-captain文体学分析...
we are here to find the oombal
该应用程序的目的是使用交互式可视化技术分析CAPTAIN系统中的老年人口。 它允许非专家用户创建聚类,可视化其模式并在分层后跟踪这些聚类的演变。 它还允许最终用户自定义每个参数或组(营养,社会,身体和认知)的...
captain-fact-api::magnifying_glass_tilted_right:CaptainFact-API。 提供并处理https:captainfact.io所有数据的程序
npm install grunt-captain-hook --save-dev 安装插件后,可以使用以下 JavaScript 代码在 Gruntfile 中启用它: grunt . loadNpmTasks ( 'grunt-captain-hook' ) ; “captain_hook”任务 概述 在项目的 ...
基于springboot+vue实现的考研刷题系统源代码+数据库 Web 前端 Microsoft Visual Studio Code JetBrains IntelliJ IDEA web 前端文件说明 vue 文件(管理端组长端学生端)均放置于 captain 目录下 服务器后端 ...
一个用于在Delphi中使用GPS单元的库。 使用您选择的通信库的通用入口点对大多数NMEA(希望所有)句子进行解析。
动作游戏大师应该能够杀死100多个敌人。 是一个基于Java编写的跨平台2D游戏引擎,基于并获得了MIT的许可。 它包含与“ Cocos2d JS绑定引擎”相同的高级api,并且与Cocos2d-X兼容。 它当前支持画布,并且将来将支持...
Holt上尉的脑筋急转弯解决方案: 这是布鲁克林99的第2季第18集中霍尔特船长的脑筋急转弯的真正解决方案:“佩拉尔塔船长”。 在继续阅读之前,我只想说这个问题使我发疯。 我只是昨晚看过的情节,直到我想通了,我才...
Cryptocurrency Portfolio Tracker - 监控多达1000种不同的加密货币! 此扩展程序将您的新选项卡默认页面替换为加密货币投资组合跟踪器。 监控多达1000种不同的加密货币! 支持语言:English
入门如果您已经在本地运行API,则只需简单的npm install && npm start就足够了。 否则,请按照以下步骤操作: 安装(如果没有): 和 (轻松启动API) NodeJS,最好将与NODEJS_CHECK_SIGNATURES=no asdf install ...
语言:English 加密货币投资组合追踪器-监视多达1000种不同的加密货币! 此扩展程序将您的新选项卡默认页面替换为加密货币投资组合跟踪器。 监控多达1000种不同的加密货币!
Atom-atom-captain-sweetheart.zip,凝灰岩但甜美的原子主题原子能队长甜心,atom是一个用web技术构建的开源文本编辑器。
资源分类:Python库 所属语言:Python 资源全名:captain-0.1.5.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
惊奇队长漫画 一个简单的页面,向您显示Marvel上尉的一些漫画。 此处的所有内容均由Marvel API提供。 JavaScript 它使用ES6类,箭头函数,模板字符串和异步等待进行构建。 代码清晰易懂,但是如果您发现任何错误或...
经常使用Microsoft visio画流程图,觉得其中的智能连接线非常好用,可以手动调节
Captain是一款现代化的自动化应用程序部署和Web服务器管理器,与Heroku类似
OpenGL ES 学习教程(十七) Unity GPU Instance 原理及 GLES 实现(一)
Captain