flowerson 发表于 2018-4-28 02:29:12

基本搞定,主要解决办法暂时是两个点集间最短距离。

flowerson 发表于 2018-5-2 10:18:21

;最关键的点表对点表最短的求法,如下:(defun ptsort (lsta lstb / i ia mina nia pmina pmind)
(setq pmina (list (car lsta) (car lstb)))
(setq pmind (apply
                'distance
                pmina
              )
)
(setq i 0)
(repeat (length lsta)
    (setq ia (nth i lsta))
    (setq mina (apply
               'distance
               (zg-nearestpt ia lstb)
             )
    )
    (if (> pmind mina)
      (progn
        (setq pmind mina)
        (setq nia (list ia (cadr (zg-nearestpt ia lstb))))
      )
    )
    (setq i (+ i 1))
)
nia
)


;只是实现了,还望各位大侠改进算法技巧什么的。多拍砖!

flowerson 发表于 2018-5-2 10:59:11

更复杂的连接成功!

mahuan1279 发表于 2018-5-2 11:33:24

最小树问题。

clinber 发表于 2018-5-2 17:24:16

flowerson 发表于 2018-5-2 10:18
;最关键的点表对点表最短的求法,如下:(defun ptsort (lsta lstb / i ia mina nia pmina pmind)
(setq...

缺自定义函数

edata 发表于 2018-5-2 21:40:36

他的原理应该就是每一个点的最近点连线。。

前生 发表于 2018-5-2 22:42:54

edata 发表于 2018-5-2 21:40
他的原理应该就是每一个点的最近点连线。。

是的。这个原则的东西的连线的总长度是最小的。
在数控加工中,经常要用到。

vectra 发表于 2018-5-3 08:20:53

查找最近邻比较有效的数据结构是KD tree 可是没看到lisp实现 要造个轮子也比较花时间

xyp1964 发表于 2018-5-4 00:09:01

属于点集的排列组合问题,可能的数量: N!/2,点太多数据量会太大。
取线长最短者为最终结果。

xyp1964 发表于 2018-5-4 00:13:19


页: 1 [2] 3
查看完整版本: (求助)把所有点连接可以是多段线段,但是要和最小。如何思考?