Delaunay(德劳内)三角剖分算法

Delaunay(德劳内)三⾓剖分算法在和领域, 平⾯上的点集P的德劳内三⾓化是⼀种三⾓剖分 DT(P),使得在 P 中没有点严格处于 DT(P) 中任意⼀个三⾓形的内部。Delaunay 三⾓化最⼤化了此三⾓剖分中三⾓形的最⼩⾓,换句话,此算法尽量避免出现“极瘦”的三⾓形。此算法命名来源于,以纪念他⾃1934年在此领域的⼯作【1】。德劳内三⾓化算法对给定的点集合的凸包进⾏三⾓形分隔,使得每个三⾓形的外接圆都不含任何点。
import numpy as np
import pylab as pl
收缩薄膜from scipy import spatial
points2d = np.array([[0.2, 0.1], [0.5, 0.5], [0.8, 0.1],
[0.5, 0.8], [0.3, 0.6], [0.7, 0.6], [0.5, 0.35]])
来电显示管理系统vo = spatial.Voronoi(points2d)
minip2px = np.array([46.445, 263.251, 174.176, 280.899, 280.899,
189.358, 135.521, 29.638, 101.907, 226.665])
y = np.array([287.865, 250.891, 287.865, 160.975, 54.252,
160.975, 232.404, 179.187, 35.765, 71.361])
points2d = np.c_[x, y]
dy = spatial.Delaunay(points2d)
vo = spatial.Voronoi(points2d)
#%fig=德劳内三⾓形的外接圆与圆⼼
cx, cy = vo.vertices.T
relay-spdtax = pl.subplot(aspect="equal")
灯头盒spatial.delaunay_plot_2d(dy, ax=ax)
ax.plot(cx, cy, "r.")
for i, (cx, cy) in enumerate(vo.vertices):
px, py = points2d[dy.simplices[i, 0]]
radius = np.hypot(cx - px, cy - py)
circle = pl.Circle((cx, cy), radius, fill=False, ls="dotted")
ax.add_artist(circle)
ax.set_xlim(0, 300)
ax.set_ylim(0, 300);
maop
【1】B. Delaunay: Sur la sphère vide, Izvestia Akademii Nauk SSSR, Otdelenie Matematicheskikh i Estestvennykh Nauk,
7:793–800, 1934

本文发布于:2024-09-24 22:26:44,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/191739.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:算法   德劳内三   剖分
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议