同时取两个坐标点的方式,遍历坐标集的简单实用方法,有没有呀
本帖最后由 zzl9105 于 2018-5-21 16:16 编辑如题,已知有n个坐标点的组成的点表,我想依次取得第1、2第2、3个点,依次类推,直到第n、1个点。相当于循环遍历了一遍,这样同时取点表内相邻两个点,向后遍历的方式,有没有什么好的方法呀。
谢谢了。
本帖最后由 Gu_xl 于 2018-5-21 16:24 编辑
(mapcar 'listplist (append (cdr plist) (list (car plist))))
or
(mapcar 'list plist (reverse (cons (car plist) (reverse (cdr plist)))))
本帖最后由 zzl9105 于 2018-5-21 16:31 编辑
Gu_xl 发表于 2018-5-21 16:19
(mapcar 'listplist (append (cdr plist) (list (car plist))))
or
谢谢G版
假如我的点集是ptb,我如何定义第1、2个点pt1,pt2呀,因为我每定义一次pt1,pt2,我要做一些其它的操作。最后完成这个循环。 (mapcar '(lambda (pt1 pt2) (list pt1 pt2) ....这里是你想干的事... ) plist (append (cdr plist) (list (car plist)))) pzweng 发表于 2018-5-21 17:10
(mapcar '(lambda (pt1 pt2) (list pt1 pt2) ....这里是你想干的事... ) plist (append (cdr plist) (list...
水平不足,mapcar看不太懂,习惯用length取表长,然后repeat,心情好了用的defun:lol lostbalance 发表于 2018-5-21 20:16
水平不足,mapcar看不太懂,习惯用length取表长,然后repeat,心情好了用的defun
我弄错了,举个例子吧 ,
(mapcar '(lambda (pt1 pt2)
(command "line" "non" pt1 "non" pt2 "") ;这一句是画线,可以替代你想做的事
(list pt1 pt2);这句一定要放在最后,
)
plist
(append (cdr plist) (list (car plist)))
) 感觉楼主好厉害,我想了15分钟,没想通G版的思路
页:
[1]