【求助】环形排序 如何搞 ?
本帖最后由 wowan1314 于 2014-7-23 21:07 编辑想编个小程序。 突然发现 环形排序 弄不出!论坛搜索了半天没找到,可能隐藏太深,特来求助!
上传图片中 画箭头 的是我想要的效果!结果弄出来都是折返的。
我按自己的思路搞定了! 感谢各位热心回帖!
搞定了!
我按如下思路进行的处理!
1、先折返排序 点表0
2、取出 点表0 的首位点 ,以此点确定一个区间,取出此区间内的点表1(区间大小应与折返排序一致)
3、继续取剩下的 点表0的首位点 ,再取出成点表2
如此循环,并且偶数的点表revese下,最后把 奇偶的点表合并!
写起来代码比较简单就不献丑了!如有其它更好算法 , 请回帖告知!敬谢。
效果如下:
本帖最后由 langjs 于 2014-7-23 11:46 编辑
这个加上判断应该弄得出来啊。点表排序吗?好久不见 本帖最后由 wowan1314 于 2014-7-23 11:58 编辑
langjs 发表于 2014-7-23 11:43 static/image/common/back.gif
这个加上判断应该弄得出来啊。点表排序吗?好久不见
好久不见!小弟愚钝啊! 想不明白咋弄!
难道是按区间分好 行或列 然后再按列或行 一正一反的排序? 感觉好麻烦啊!
而且区间不好确定啊! 本帖最后由 自贡黄明儒 于 2014-7-23 12:04 编辑
wowan1314 发表于 2014-7-23 11:56
好久不见!小弟愚钝啊! 想不明白咋弄!
难道是按区间分好 行或列 然后再按列或行 一正一反的排序? ...
你在开玩笑吧,还有你搞不定的
如果是多段线,你沿线就是你图示的样子。你想弄成什么效果 自贡黄明儒 发表于 2014-7-23 11:59 static/image/common/back.gif
你在开玩笑吧,还有你搞不定的
如果是多段线,你沿线就是你图示的样子。你想弄成什么效果
本来就不擅长 编程!你没搞过环形排序的问题? 没有多段线,单纯的点表排序!
1、先折返排序 点表0
2、取出首位点 ,以此点确定一个区间,取出此区间内的点表1
3、继续取剩下的 点表0的首位 ,再取出成点表2
如此循环,然后偶数的点表revese下,最后把 奇偶的点表合并!
看是否有更简单的方法!? 自贡黄明儒 发表于 2014-7-23 11:59 static/image/common/back.gif
你在开玩笑吧,还有你搞不定的
如果是多段线,你沿线就是你图示的样子。你想弄成什么效果
哈哈,
葛老收刀也有大大大大半年了吧
都生锈了呵 看不出来哪个是“环形排序” 本帖最后由 xyp1964 于 2014-7-23 12:45 编辑
编了一小段,上下来回折的点表排序好像是正确的,下面是测试程序
(defun c:tt (/ e1 e2 i lst lst1 pt)
(setq lst '() lst1 '())
(while (setq pt (getpoint "\n点:"))
(setq lst (cons pt lst))
)
(setq lst (vl-sort lst (function (lambda (e1 e2)(<= (cadr e1) (cadr e2)))))
lst (vl-sort lst (function (lambda (e1 e2)(<= (car e1) (car e2)))))
i 0
)
(repeat (length lst)
(if (= (rem i 4) 0)
(progn
(if (nth (+ 1 i) lst)(setq lst1 (cons (nth (+ 1 i) lst) lst1)))
(setq lst1 (cons (nth i lst) lst1))
(if (nth (+ 2 i) lst)(setq lst1 (cons (nth (+ 2 i) lst) lst1)))
(if (nth (+ 3 i) lst)(setq lst1 (cons (nth (+ 3 i) lst) lst1)))
)
)
(setq i (1+ i))
)
(setq lst (reverse lst1))
(entmake (append
(list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 90 (length lst)))
(mapcar'(lambda (pt) (cons 10 pt)) lst)
)
)
(princ)
) wowan1314 发表于 2014-7-23 12:10 static/image/common/back.gif
本来就不擅长 编程!你没搞过环形排序的问题? 没有多段线,单纯的点表排序!
我也只会用这个方法....所以只能应用于规格方阵....基本没有通用性.....
页:
[1]
2