Delaunay 三角剖分3D(原理 + 源码)
文章目录
- Delaunay 三角剖分
- 二维与三维的区别
- 代码实现< Python版本 >
- 代码实现< Matlab 版本 >
Delaunay 三角剖分
原理部分请参照我的上一篇博文,传送门:Delaunay 三角剖分2D(原理 + 源码)
3D三角剖分参考文献:
- vvvv is free for non-commercial use
- delaunayTriangulation
- CGAL 4.13 - 3D Triangulations
- 强烈推荐:PCL: Delaunay三角剖分(关于三维实体分块思想总结)
二维与三维的区别
- 二维时,插入新的一点 P,然后判断 P 与 triangle 列表里每个三角形的外接圆的相对位置关系
- 三维时,插入新的一点 P,然后判断 P 与 tetrahedron 列表里每个四面体的外接球的相对位置关系
二维
三维
代码实现< 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(原理 + 源码)相关推荐
- C++ Opengl 3D世界源码
C++ Opengl 3D世界源码 项目开发环境 项目功能 项目演示 项目源码传送门 项目开发环境 开发语言:C++和IDE:VS2017,操作系统Windows版本windows SDK8.1,三方 ...
- k线顶分型 python_顶底分型-(K线分类及顶底分型的一种数学原理 源码 贴图)...
好股票软件下载网(www.goodgupiao.com)提示:您正在下载的是:顶底分型-(K线分类及顶底分型的一种数学原理 源码 贴图) 参考缠论,研究了很多天终于将顶底分型进行了具体的数学量化,涵盖 ...
- Unity Fog 原理 源码分析 案例
Unity Fog 原理 源码分析 案例 效果图 简述 背景知识 clip空间坐标的范围 d3d (near,0), unity remapping to (0,far) 越靠近相机z值越小 open ...
- 3D休闲游戏夺宝向前冲3D游戏源码H5+安卓+IOS三端源码
cocos creator3D1.2休闲游戏夺宝向前冲3D游戏源码H5+安卓+IOS三端源码,开发脚本为typeScript方便扩展和阅读,支持cocos creator3D版本,完整的源码可直接运营 ...
- C++ Opengl 绘制3D字体源码
C++ Opengl 绘制3D字体源码 项目开发环境 项目功能 项目演示 项目源码传送门 项目开发环境 开发语言:C++和IDE:VS2017,操作系统Windows版本windows SDK8.1, ...
- 仿猎豹垃圾清理 实现原理+源码
仿猎豹垃圾清理(实现原理+源码) 转载请注明出处: 仿猎豹垃圾清理(实现原理+源码) 前几天无意打开猎豹内存大师, 发现它的垃圾清理很强大, 效果也不错, 闲着就研究了下. 不过.. 结果貌似和我想象 ...
- 仿猎豹垃圾清理(实现原理+源码)
仿猎豹垃圾清理(实现原理+源码) 转载请注明出处: 仿猎豹垃圾清理(实现原理+源码) 前几天无意打开猎豹内存大师, 发现它的垃圾清理很强大, 效果也不错, 闲着就研究了下. 不过.. 结果貌似和我想象 ...
- 仿iOS猎豹垃圾清理(实现原理+源码)
转载请注明出处: 仿猎豹垃圾清理(实现原理+源码) 前几天无意打开猎豹内存大师, 发现它的垃圾清理很强大, 效果也不错, 闲着就研究了下. 不过.. 结果貌似和我想象的不太一样.怎么说呢, 听我下文一 ...
- Delaunay 三角剖分2D(原理 + 源码)
文章目录 Delaunay 三角剖分 代码实现< C++版本 > 代码实现< Python 版本 > 代码实现< Matlab 版本 > 彩蛋:一个很牛掰的算法学习 ...
最新文章
- 【转】用VB操作Excel详解
- Containers vs Serverless
- 《Doing It - Management 3.0 Experiences》作者访谈
- Java servlet项目里的web.xml
- 90年代微型计算机,版本控制如何在80年代和90年代的当今微型计算机上工作?
- HTML5 本地存储(Web Storage)
- Exchange Server 2016 独立部署/共存部署 (三)—— 安装Exchange程序
- windows下安装node版本管理工具及nvm use切换不成功问题解决
- 超融合-Nutanix公司的业务模式
- Android studio基础练习02【监听器实现下拉菜单】
- 数据结构与算法分析(C++版) 张铭 等译
- vim keymap
- Python面试简历工作描述写法总结
- 频域处理:傅里叶变换及小波变换
- hp 交换机远程连接_Hp服务器 iLO3 使用方法
- 王刚日记:好软文是什么样子的?
- 网页文字涉及侵权怎么处理
- Android问题集锦(六)- adb不是内部或外部命令解决方法
- 运维工作中常见的一些定律
- QT中关闭应用程序和窗口的函数(quit(),exit()以及close()的区别)