smartstar 发表于 2012-5-7 06:34:50

等着以后消化。

hhh454 发表于 2012-5-7 08:25:41

这个最短距离算出来后,不知道能否按照最短距离点来重现绘制图元,line,arc,在机械雕刻机的运行当中,按照最短距离排序雕刻,会节省很多的雕刻加工时间,,

sfzyr 发表于 2012-5-7 12:59:59

算法是個好東西,程序的精華,猶如做菜的菜譜!

mp13119 发表于 2012-5-14 23:33:08

谢谢楼上的分享,参考下,很感激

小心 发表于 2012-7-9 16:32:34

不错,需要细细体会

highflybir 发表于 2012-7-17 09:46:31



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

690994 发表于 2012-7-17 12:04:44

highflybir 发表于 2012-7-17 09:46 static/image/common/back.gif
现在更新了程序。比以前的快了十倍。
同时附上国外的一个好方法。
命令是:test.

大师杰作令我受益非浅,
我有一个问题想请教,就是求封闭多义线内部最大切圆位置,
目前我的方法是将线按距离分点,求各点向内法线方向作切圆,直径逐步增大,
检测多义线与圆交点判断,这样虽然能使用,但不精确且效率非常低,
希望大师指教有什么好方法能提高精确度和效率。

xiaxiang 发表于 2012-7-17 14:15:39

highflybir 发表于 2012-7-17 09:46 static/image/common/back.gif
现在更新了程序。比以前的快了十倍。
同时附上国外的一个好方法。
命令是:test.

无条件顶贴
您是越飞越高,我是越飞越晕。。。

Gu_xl 发表于 2012-7-17 15:59:57

本帖最后由 Gu_xl 于 2012-7-17 16:03 编辑

highflybir 发表于 2012-7-17 09:46 http://bbs.mjtd.com/static/image/common/back.gif
现在更新了程序。比以前的快了十倍。
同时附上国外的一个好方法。
命令是:test.

ElpanovEvgeniy 的方法稍加改进,剔除重点,即不出现最小距离为零的情况!

;|***************************************************************************************
   by ElpanovEvgeniy                                                                     
   last edit 08.01.2012                                                                  
   the library function                                                                  
   find a pair of points with the smallest distance between them                        
-----------------------------------------------------------------------------------------
   argument - list points                                                               
   returne- list pair points                                                         
***************************************************************************************|;
(defun eea-cpp (PtSet / MiniD F Pairs)
(defun f(1stPt Pairs PtSet / dist)
    (while (and PtSet
(equal (car 1stPt) (caar PtSet) MiniD)
)
      (setq Pairs
    (cond
      ((equal (setq dist (distance 1stPt (car PtSet)))
       MiniD
       1e-8)
       (cons (list 1stPt (car PtSet)) Pairs)
       )
      ((and (< dist MiniD) (not (equal dist 0 1e-8))) ;_ 过滤重点情况
       (setq MiniD dist)
       (list (list 1stPt (car PtSet)))
       )
      (Pairs)
      )
   PtSet (cdr PtSet)
   )
      )
    Pairs
    )
(setq PtSet (vl-sort PtSet
         (function (lambda (e1 e2) (<= (car e1) (car e2)))))
Pairs nil
)
;;计算初始MiniD,确保不为零
(vl-some
    '(lambda (a)
       (not (equal (setq MiniD (distance (car PtSet) a)) 0 1e-8)))
    (cdr ptset)
    )
(foreach aPtSet
    (setq Pairs (f (car PtSet) Pairs (cdr PtSet))
   PtSet (cdr PtSet)
   )
    )
Pairs
)

自贡黄明儒 发表于 2012-7-17 16:09:06

向highflybird学习!!!
页: 1 [2] 3 4
查看完整版本: 【越飞越高讲堂10】分治、递归、分类和最小距离(更新至2012.7)