文章目录

  • Delaunay 三角剖分
  • 二维与三维的区别
  • 代码实现< Python版本 >
  • 代码实现< Matlab 版本 >

Delaunay 三角剖分


原理部分请参照我的上一篇博文,传送门:Delaunay 三角剖分2D(原理 + 源码)

3D三角剖分参考文献:

  • vvvv is free for non-commercial use
  • delaunayTriangulation
  • CGAL 4.13 - 3D Triangulations
  • 强烈推荐:PCL: Delaunay三角剖分(关于三维实体分块思想总结)

二维与三维的区别


  • 二维时,插入新的一点 P,然后判断 Ptriangle 列表里每个三角形外接圆相对位置关系
  • 三维时,插入新的一点 P,然后判断 Ptetrahedron 列表里每个四面体外接球相对位置关系

二维

三维

代码实现< Python版本 >


用到的 lib:

  • matplotlib
  • numpy

原文链接:https://stackoverflow.com/questions/26434726/return-surface-triangle-of-3d-scipy-spatial-delaunay

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.tri as mtri
from scipy.spatial import Delaunay# u, v are parameterisation variables
u = np.array([0,0,0.5,1,1])
v = np.array([0,1,0.5,0,1]) x = u
y = v
z = np.array([0,0,1,0,0])# Triangulate parameter space to determine the triangles
#tri = mtri.Triangulation(u, v)
tri = Delaunay(np.array([u,v]).T)print('polyhedron(faces = [')
#for vert in tri.triangles:
for vert in tri.simplices:print('[%d,%d,%d],' % (vert[0],vert[1],vert[2]))
print('], points = [')
for i in range(x.shape[0]):print('[%f,%f,%f],' % (x[i], y[i], z[i]))
print(']);')fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection='3d')# The triangles in parameter space determine which x, y, z points are
# connected by an edge
#ax.plot_trisurf(x, y, z, triangles=tri.triangles, cmap=plt.cm.Spectral)
ax.plot_trisurf(x, y, z, triangles=tri.simplices, cmap=plt.cm.Spectral)plt.show()

效果图:

代码实现< Matlab 版本 >


原文链接:https://www.mathworks.com/help/matlab/ref/delaunaytriangulation.html

x = gallery('uniformdata',[30 1],0);
y = gallery('uniformdata',[30 1],1);
z = gallery('uniformdata',[30 1],2);
DT = delaunayTriangulation(x,y,z)tetramesh(DT,'FaceAlpha',0.3);

效果图:

Delaunay 三角剖分3D(原理 + 源码)相关推荐

  1. C++ Opengl 3D世界源码

    C++ Opengl 3D世界源码 项目开发环境 项目功能 项目演示 项目源码传送门 项目开发环境 开发语言:C++和IDE:VS2017,操作系统Windows版本windows SDK8.1,三方 ...

  2. k线顶分型 python_顶底分型-(K线分类及顶底分型的一种数学原理 源码 贴图)...

    好股票软件下载网(www.goodgupiao.com)提示:您正在下载的是:顶底分型-(K线分类及顶底分型的一种数学原理 源码 贴图) 参考缠论,研究了很多天终于将顶底分型进行了具体的数学量化,涵盖 ...

  3. Unity Fog 原理 源码分析 案例

    Unity Fog 原理 源码分析 案例 效果图 简述 背景知识 clip空间坐标的范围 d3d (near,0), unity remapping to (0,far) 越靠近相机z值越小 open ...

  4. 3D休闲游戏夺宝向前冲3D游戏源码H5+安卓+IOS三端源码

    cocos creator3D1.2休闲游戏夺宝向前冲3D游戏源码H5+安卓+IOS三端源码,开发脚本为typeScript方便扩展和阅读,支持cocos creator3D版本,完整的源码可直接运营 ...

  5. C++ Opengl 绘制3D字体源码

    C++ Opengl 绘制3D字体源码 项目开发环境 项目功能 项目演示 项目源码传送门 项目开发环境 开发语言:C++和IDE:VS2017,操作系统Windows版本windows SDK8.1, ...

  6. 仿猎豹垃圾清理 实现原理+源码

    仿猎豹垃圾清理(实现原理+源码) 转载请注明出处: 仿猎豹垃圾清理(实现原理+源码) 前几天无意打开猎豹内存大师, 发现它的垃圾清理很强大, 效果也不错, 闲着就研究了下. 不过.. 结果貌似和我想象 ...

  7. 仿猎豹垃圾清理(实现原理+源码)

    仿猎豹垃圾清理(实现原理+源码) 转载请注明出处: 仿猎豹垃圾清理(实现原理+源码) 前几天无意打开猎豹内存大师, 发现它的垃圾清理很强大, 效果也不错, 闲着就研究了下. 不过.. 结果貌似和我想象 ...

  8. 仿iOS猎豹垃圾清理(实现原理+源码)

    转载请注明出处: 仿猎豹垃圾清理(实现原理+源码) 前几天无意打开猎豹内存大师, 发现它的垃圾清理很强大, 效果也不错, 闲着就研究了下. 不过.. 结果貌似和我想象的不太一样.怎么说呢, 听我下文一 ...

  9. Delaunay 三角剖分2D(原理 + 源码)

    文章目录 Delaunay 三角剖分 代码实现< C++版本 > 代码实现< Python 版本 > 代码实现< Matlab 版本 > 彩蛋:一个很牛掰的算法学习 ...

最新文章

  1. 【转】用VB操作Excel详解
  2. Containers vs Serverless
  3. 《Doing It - Management 3.0 Experiences》作者访谈
  4. Java servlet项目里的web.xml
  5. 90年代微型计算机,版本控制如何在80年代和90年代的当今微型计算机上工作?
  6. HTML5 本地存储(Web Storage)
  7. Exchange Server 2016 独立部署/共存部署 (三)—— 安装Exchange程序
  8. windows下安装node版本管理工具及nvm use切换不成功问题解决
  9. 超融合-Nutanix公司的业务模式
  10. Android studio基础练习02【监听器实现下拉菜单】
  11. 数据结构与算法分析(C++版) 张铭 等译
  12. vim keymap
  13. Python面试简历工作描述写法总结
  14. 频域处理:傅里叶变换及小波变换
  15. hp 交换机远程连接_Hp服务器 iLO3 使用方法
  16. 王刚日记:好软文是什么样子的?
  17. 网页文字涉及侵权怎么处理
  18. Android问题集锦(六)- adb不是内部或外部命令解决方法
  19. 运维工作中常见的一些定律
  20. QT中关闭应用程序和窗口的函数(quit(),exit()以及close()的区别)

热门文章

  1. [训练7]输出连续的英文字母
  2. 视频教程-sql server 系列课程数据库维护篇-SQL Server
  3. 前端HTML关于QQ和QQ群在web页面直接打开的链接方法:
  4. Java毕设项目学校旧书交易网站计算机(附源码+系统+数据库+LW)
  5. 15行python代码轻松批量下载()视频~
  6. 为题目为《心中的彩虹》的作文写一篇300字的结尾
  7. Eclipse离线下载安装Svn插件
  8. (四)Kubernetes - 手动部署(二进制方式安装)
  9. 为心寻找漂泊中的归宿
  10. zlib库的编译及使用