生成泰森多边形
Voronoi 图(泰森多边形)的属性:
唯一且不重叠的区域:
每个区域对应一个生成点,并且没有两个区域重叠。边界由连接相邻点的线的垂直平分线定义。
最近点属性:
Voronoi 单元内的每个点都比任何其他点更接近其生成点。
凸性:
如果生成点处于一般位置(没有三个点共线),则 Voronoi 单元是凸多边形。
对加权系统的适应性:
Voronoi 图可以扩展到加权系统,从而产生功率图或乘法加权 Voronoi 图。
动态特性:
如果生成点的位置发生变化,则图会动态变化。
Voronoi 图的应用:
地理空间分析:
用于地理学中根据与兴趣点的接近度划分区域,例如在油井或服务中心之间划分土地。
寻路和机器人技术:
通过确定安全区域或最短路径,帮助避障和路径规划。
资源分配:
用于规划仓库、医院或手机信号塔等设施的最佳位置,以尽量缩短服务距离。
气象学和水文学:
帮助插入和分析空间数据,如降雨分布或流域制图。
计算几何:
构成网格生成、最近邻搜索和聚类算法的基础。
生物学和生态学:
模拟细胞结构、动物领地或资源竞争区。
图像处理和图形:
用于纹理合成、图像分割和创建 Voronoi 艺术等艺术效果。
游戏开发:
用于虚拟环境中地形或区域的程序生成。
(defun c:tt ()
(and (setq ss (xdrx-ssget
(xdrx-string-multilanguage
"\n选择点对象<退出>:"
"\nSelect point object <exit>:"
)
'((0 . "point"))
)
)
(setq pl (xdrx-entsel
(xdrx-string-multilanguage
"\n选择外边界<退出>:"
"\nSelect outer boundary <exit>:"
)
'((-4 . "<and")
(0 . "*polyline")
(-4 . "&=")
(70 . 1)
(-4 . "and>")
)
)
)
(xdrx-points->voronoi ss pl t)
)
(princ)
)
(defun c:tt1 ()
(if (and (setq ss (xdrx-ssget
(xdrx-string-multilanguage
"\n选择点对象<退出>:"
"\nSelect point object <exit>:"
)
'((0 . "point"))
)
)
(setq pl (xdrx-entsel
(xdrx-string-multilanguage
"\n选择外边界<退出>:"
"\nSelect outer boundary <exit>:"
)
'((-4 . "<and")
(0 . "*polyline")
(-4 . "&=")
(70 . 1)
(-4 . "and>")
)
)
)
(setq polygon (xdrx-points->voronoi ss pl))
)
(progn
(xdrx-begin)
(xdrx-entity-delete ss)
(xdrx-sysvar-push '("pdmode" 99 "pdsize" 10))
(foreach m polygon
(setq bound (car m)
pnt (cadr m)
clr (xdrx-math-rand 0 100)
)
(xdrx-point-make pnt)
(xdrx-setpropertyvalue (entlast) "color" clr)
(xdrx-polyline-make bound t)
(xdrx-setpropertyvalue (entlast) "color" clr)
)
(xdrx-sysvar-pop)
(xdrx-end)
)
)
(princ)
)
页:
[1]