IDL创建泰森多边形
2024-10-14 21:55:57
结果图:
附加源码:
PRO testVoronoi idx = 0 ; 创建离散点 CASE idx OF ; 随机离散点 0: BEGIN N = 36 X = RANDOMN(seed, N) Y = RANDOMN(seed, N) END ; 规则离散点 1: BEGIN X = REBIN(INDGEN(6)+10, 36,1) Y = REFORM(REBIN(INDGEN(6)+10, 6,6),36,1) N = N_ELEMENTS(X) END ; 较规则离散点 2: BEGIN X = REBIN(INDGEN(6)+10, 36,1)+ RANDOMU(seed, 36,1) Y = REFORM(REBIN(INDGEN(6)+10, 6,6),36,1)+ RANDOMU(seed, 36,1) N = N_ELEMENTS(X) END ELSE: ENDCASE ; 构建Delaunay三角网 TRIANGULATE, X, Y, tr, CONN=C ; 绘制离散点 Points = PLOT(x, y, $ LINESTYLE=6, $ SYMBOL='o', SYM_COLOR='black', $ SYM_SIZE=0.5, $ /SYM_FILLED, SYM_FILL_COLOR='black', $ AXIS_STYLE=4, $ MARGIN=[0,0,0,0], $ WINDOW_TITLE='泰森多边形') FOR I=0, N-1 DO BEGIN ; 获取第i个泰森多边形: VORONOI, X, Y, I, C, Xp, Yp ; 快速可视化绘制 ; 创建Polygon函数中的CONNECTIVITY关键字,指定连通性 n=N_ELEMENTS(Xp) con = [n,INDGEN(n)] ; 绘制泰森多边形 poly = POLYGON(Xp,Yp,/data,CONNECTIVITY=con, /current, $ FILL_BACKGROUND=1, FILL_COLOR=I*7+5, RGB_TABLE=25, $ COLOR='white') ENDFOR ; 绘制三角网,如果不想绘制,把这几行注释即可 n_Tr = (SIZE(tr, /DIMENSIONS))[1] FOR i = 0,n_Tr-1 DO BEGIN tri = POLYGON(X[tr[*,i]], Y[tr[*,i]], CONNECTIVITY=[3,0,1,2], $ /current, color = 'black', /data, FILL_BACKGROUND=0, $ LINESTYLE=4) ENDFOR ; 将离散点置顶显示 Points.ORDER, /BRING_TO_FRONT END
最新文章
- .NET 基础一步步一幕幕[面向对象前言]
- Construct Binary Tree from Preorder and Inorder Traversal [LeetCode]
- 百度APIStore
- 《Genesis-3D开源游戏引擎完整实例教程-2D射击游戏篇08:弹幕系统》本系列完结
- android之自定义ViewGroup和自动换行的布局的实现
- [Oracle] 11G自己主动收集统计信息
- FusionCharts重写单系列图
- 算法与数据结构(五) 普利姆与克鲁斯卡尔的最小生成树(Swift版)
- vue将网页中的特定部分转成pdf并下载(仅供个人学习记录)
- asp.net webapi 生成在线文档--Swagger
- mysql实现成绩表中成绩的排名
- [Linux]PHP-FPM与NGINX的两种通讯方式
- ubuntu在指定的文件夹下创建python3和python2的虚拟环境
- Copycat - Overview
- Docker学习笔记之docker volume 容器卷的那些事(二)
- checked和stop()的讲解
- python:'ascii' codec can't encode character
- [转]在Windows中安装PhpUnit
- LeetCode刷题第二天
- io流中read方法使用不当导致运行异常的一点