明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: highflybir

[【高飞鸟】] 【越飞越高讲堂10】分治、递归、分类和最小距离(更新至2012.7)

  [复制链接]
发表于 2012-5-7 06:34 来自手机 | 显示全部楼层
等着以后消化。
发表于 2012-5-7 08:25 | 显示全部楼层
这个最短距离算出来后,不知道能否按照最短距离点来重现绘制图元,line,arc,在机械雕刻机的运行当中,按照最短距离排序雕刻,会节省很多的雕刻加工时间,,
发表于 2012-5-7 12:59 | 显示全部楼层
算法是個好東西,程序的精華,猶如做菜的菜譜!
发表于 2012-5-14 23:33 | 显示全部楼层
谢谢楼上的分享,参考下,很感激
发表于 2012-7-9 16:32 | 显示全部楼层
不错,需要细细体会
 楼主| 发表于 2012-7-17 09:46 | 显示全部楼层


现在更新了程序。比以前的快了十倍。
同时附上国外的一个好方法。
命令是:test.

本帖子中包含更多资源

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

x
回复 支持 1 反对 0

使用道具 举报

发表于 2012-7-17 12:04 | 显示全部楼层
highflybir 发表于 2012-7-17 09:46
现在更新了程序。比以前的快了十倍。
同时附上国外的一个好方法。
命令是:test.

大师杰作令我受益非浅,
我有一个问题想请教,就是求封闭多义线内部最大切圆位置,
目前我的方法是将线按距离分点,求各点向内法线方向作切圆,直径逐步增大,
检测多义线与圆交点判断,这样虽然能使用,但不精确且效率非常低,
希望大师指教有什么好方法能提高精确度和效率。
发表于 2012-7-17 14:15 | 显示全部楼层
highflybir 发表于 2012-7-17 09:46
现在更新了程序。比以前的快了十倍。
同时附上国外的一个好方法。
命令是:test.

无条件顶贴
您是越飞越高,我是越飞越晕。。。
发表于 2012-7-17 15:59 | 显示全部楼层
本帖最后由 Gu_xl 于 2012-7-17 16:03 编辑
highflybir 发表于 2012-7-17 09:46
现在更新了程序。比以前的快了十倍。
同时附上国外的一个好方法。
命令是:test.


ElpanovEvgeniy 的方法稍加改进,剔除重点,即不出现最小距离为零的情况!
  1. ;|***************************************************************************************
  2.    by ElpanovEvgeniy                                                                     
  3.    last edit 08.01.2012                                                                  
  4.    the library function                                                                  
  5.    find a pair of points with the smallest distance between them                        
  6. -----------------------------------------------------------------------------------------
  7.    argument - list points                                                               
  8.    returne  - list pair points                                                           
  9. ***************************************************************************************|;
  10. (defun eea-cpp (PtSet / MiniD F Pairs)
  11.   (defun f  (1stPt Pairs PtSet / dist)
  12.     (while (and PtSet
  13.   (equal (car 1stPt) (caar PtSet) MiniD)
  14.   )
  15.       (setq Pairs
  16.     (cond
  17.       ((equal (setq dist (distance 1stPt (car PtSet)))
  18.        MiniD
  19.        1e-8)
  20.        (cons (list 1stPt (car PtSet)) Pairs)
  21.        )
  22.       ((and (< dist MiniD) (not (equal dist 0 1e-8))) ;_ 过滤重点情况
  23.        (setq MiniD dist)
  24.        (list (list 1stPt (car PtSet)))
  25.        )
  26.       (Pairs)
  27.       )
  28.      PtSet (cdr PtSet)
  29.      )
  30.       )
  31.     Pairs
  32.     )
  33.   (setq PtSet (vl-sort PtSet
  34.          (function (lambda (e1 e2) (<= (car e1) (car e2)))))
  35. Pairs nil
  36. )
  37.   ;;计算初始MiniD,确保不为零
  38.   (vl-some
  39.     '(lambda (a)
  40.        (not (equal (setq MiniD (distance (car PtSet) a)) 0 1e-8)))
  41.     (cdr ptset)
  42.     )
  43.   (foreach a  PtSet
  44.     (setq Pairs (f (car PtSet) Pairs (cdr PtSet))
  45.    PtSet (cdr PtSet)
  46.    )
  47.     )
  48.   Pairs
  49.   )
发表于 2012-7-17 16:09 | 显示全部楼层
向highflybird学习!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-20 10:34 , Processed in 0.573961 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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