Rust + WebAssembly 用 Bowyer-Watson 算法增量构建三角网,并把图片变成低多边形艺术
🖱️ 点击 / 👆 轻点 加点,悬停查看三角形的外接圆:圆里永远没有其他点 | 「图片转低多边形」沿边缘多放点,再用三角形平均色重绘
把平面上的一堆点连成三角形有无数种方法,Delaunay 三角剖分是其中「最匀称」的一种:任何一个三角形的外接圆里都没有其他点。它会尽量避免细长的三角形,因此广泛用于地形建模、有限元网格和插值。它的对偶图是 Voronoi 图:把平面划分成若干区域,每个区域里的位置离某一个点最近。页面上鼠标悬停时显示的圆就是外接圆,你会发现圆里总是空的。
dl_add(x, y),随机撒点调用 dl_random(n);悬停时用 dl_find 找到所在的三角形,dl_circumcircle 取它的外接圆。dl_triangles()、dl_voronoi() 返回三角形和 Voronoi 线段。低多边形模式由 dl_lowpoly(像素, 宽, 高, 点数, 种子, 边缘权重) 一次完成撒点、剖分和上色,返回新图片。源码crates/algorithms/delaunay/src/mesh.rswww/delaunay/index.js