delaunay 三角划分的 lisp 代码
好久不上论坛了,今天重新上来冒个泡,贴一段关于delaunay 三角划分的代码。论坛上从前有很多关于 delaunay 三角网划分的帖子和很多好程序,如:
飞马兄的帖子:
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=91189&fromuid=398403
highflybird 兄的帖子:
http://bbs.mjtd.com/forum.php?mod=redirect&goto=findpost&ptid=82644&pid=434713&fromuid=398403
这些程序运行的效率非常高,但是是用 arx 编写的,或者借助了外部 Matlab 程序。我这里写了一个 AutoLisp/VisualLisp 版的,正如 highflybird 兄所说,“如果离散点数量太多,LISP算法再优化,也是不可能很快的。”我的机器比较老,CPU 还是 第三代 i7,测试下来,11000 多个点在 270s 左右;在另一台第 12 代 i7 的机器上测试下来是91s,时间勉强能够接受。
我使用的算法是扫描线算法,在代码的注释中作出了解释。通过测试,在达到一定数量的点后,花费的时间基本是线性增长的,因此也就没再去考虑分治算法。代码中用一个参数来控制使用水平线扫描还是垂直线扫描,其实这可以通过对散点坐标的最值判断分布的形状来进行选择,这个可以自行修改。
我不喜欢收币,免币开放,代码如下:
一张单程票 发表于 2022-11-19 19:04
no function definition: ACET-UI-PROGRESS,请问大神,这个函数是什么函数
这个是express tools 带的,生成进度条,如果你没装expresstools 就把三处用到这个函数的地方注释掉好了,没有关系的。或者前面简单地加一句 (defun acet-ui-progress list) guosheyang 发表于 2022-11-19 11:43
朋友怎么有高程的点生成的三角网 是平的呢?
三角网返回值是带高程的,绘图的子函数用的是画平面的,想要画带高程的 3d 三角网就自己用写一个创建 3dface 或 polyline 的子函数。没有多复杂。 本帖最后由 guosheyang 于 2022-11-19 11:46 编辑
朋友怎么有高程的点生成的三角网 是平的呢? 谢谢大佬分享
谢谢大佬分享:victory: 谢谢大佬分享 优秀,学习。 感谢楼主分享,学习 楼主给力,谢谢分享!!! 谢谢大侠分享 no function definition: ACET-UI-PROGRESS,请问大神,这个函数是什么函数
页:
[1]
2