找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 371|回复: 0

[每日一码] 生成泰森多边形

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2025-1-9 18:34:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

Voronoi 图(泰森多边形)的属性:

唯一且不重叠的区域:
每个区域对应一个生成点,并且没有两个区域重叠。边界由连接相邻点的线的垂直平分线定义。

最近点属性:
Voronoi 单元内的每个点都比任何其他点更接近其生成点。

凸性:
如果生成点处于一般位置(没有三个点共线),则 Voronoi 单元是凸多边形。

对加权系统的适应性:
Voronoi 图可以扩展到加权系统,从而产生功率图或乘法加权 Voronoi 图。

动态特性:
如果生成点的位置发生变化,则图会动态变化。

Voronoi 图的应用:

地理空间分析:
用于地理学中根据与兴趣点的接近度划分区域,例如在油井或服务中心之间划分土地。

寻路和机器人技术:
通过确定安全区域或最短路径,帮助避障和路径规划。

资源分配:
用于规划仓库、医院或手机信号塔等设施的最佳位置,以尽量缩短服务距离。

气象学和水文学:
帮助插入和分析空间数据,如降雨分布或流域制图。

计算几何:
构成网格生成、最近邻搜索和聚类算法的基础。

生物学和生态学:
模拟细胞结构、动物领地或资源竞争区。

图像处理和图形:
用于纹理合成、图像分割和创建 Voronoi 艺术等艺术效果。

游戏开发:
用于虚拟环境中地形或区域的程序生成。

Video_2024-11-21_194939.gif

Video_2024-11-21_195228.gif

  1. (defun c:tt ()
  2.   (and (setq ss        (xdrx-ssget
  3.                   (xdrx-string-multilanguage
  4.                     "\n选择点对象<退出>:"
  5.                     "\nSelect point object <exit>:"
  6.                   )
  7.                   '((0 . "point"))
  8.                 )
  9.        )
  10.        (setq pl        (xdrx-entsel
  11.                   (xdrx-string-multilanguage
  12.                     "\n选择外边界<退出>:"
  13.                     "\nSelect outer boundary <exit>:"
  14.                   )
  15.                   '((-4 . "<and")
  16.                     (0 . "*polyline")
  17.                     (-4 . "&=")
  18.                     (70 . 1)
  19.                     (-4 . "and>")
  20.                    )
  21.                 )
  22.        )
  23.        (xdrx-points->voronoi ss pl t)
  24.   )
  25.   (princ)
  26. )


  1. (defun c:tt1 ()
  2.   (if (and (setq ss (xdrx-ssget
  3.                       (xdrx-string-multilanguage
  4.                         "\n选择点对象<退出>:"
  5.                         "\nSelect point object <exit>:"
  6.                       )
  7.                       '((0 . "point"))
  8.                     )
  9.            )
  10.            (setq pl (xdrx-entsel
  11.                       (xdrx-string-multilanguage
  12.                         "\n选择外边界<退出>:"
  13.                         "\nSelect outer boundary <exit>:"
  14.                       )
  15.                       '((-4 . "<and")
  16.                         (0 . "*polyline")
  17.                         (-4 . "&=")
  18.                         (70 . 1)
  19.                         (-4 . "and>")
  20.                        )
  21.                     )
  22.            )
  23.            (setq polygon (xdrx-points->voronoi ss pl))
  24.       )
  25.     (progn
  26.       (xdrx-begin)
  27.       (xdrx-entity-delete ss)
  28.       (xdrx-sysvar-push '("pdmode" 99 "pdsize" 10))
  29.       (foreach m polygon
  30.         (setq bound (car m)
  31.               pnt   (cadr m)
  32.               clr   (xdrx-math-rand 0 100)
  33.         )
  34.         (xdrx-point-make pnt)
  35.         (xdrx-setpropertyvalue (entlast) "color" clr)
  36.         (xdrx-polyline-make bound t)
  37.         (xdrx-setpropertyvalue (entlast) "color" clr)
  38.       )
  39.       (xdrx-sysvar-pop)
  40.       (xdrx-end)
  41.     )
  42.   )
  43.   (princ)
  44. )



论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-4-21 12:29 , Processed in 0.365790 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表