 - ;;以指定起点逆时针重新排列多段线
- ;;参数1:点表、凸度表((点 凸度)(点 凸度)(点 凸度)……)
- ;;参数2:起点索引号
- ;;参数3:是否反向T为反向nil不反
- (defun qidiansort (lss nn clock)
- (if clock (setq nn (1+ nn)))
- (setq lss(try-SortList lss nn))
- (if clock
- (setq lss (reverse lss)
- lss(try-SortList(cadr(setq lssx(try-Array-Matrix lss)))1);将凸度倒退一步
- lss(mapcar '- lss)
- lss2(car lssx)
- lss(try-Array-Matrix (list lss2 lss))
- )
- )
- lss
- )
- ;; 以表内指定序号为首重新排序
- ;;(try-SortList 任意表 序号(零基)
- ;;参数:任意表
- ;; (try-SortList '(1 2 3 4 5 6 7 8 9 10) 4)
- ;; →(5 6 7 8 9 10 1 2 3 4)
- (defun try-SortList(lst sub / lists n pt_list retun)
- (setq lists '())
- (setq n (length lst))
- (repeat n
- (setq lists(cons (nth sub lst) lists))
-
- (setq sub(1+ sub))
- (if(= sub n)(setq sub 0))
- )
- (reverse lists)
- )
- ;; SortList 以表内指定序号为首重新排序 (SortList 表 序号(零基))
- ;; (SortList '(1 2 3 4 5 6 7 8 9 10) 4) → '(5 6 7 8 9 10 1 2 3 4)
- (defun SortList (lst sub)
- (setq lst (xyp-List-Div lst sub)
- lst (append (cdr lst) (list (car lst)))
- lst (apply 'append lst)
- )
- )
- ;;矩阵互换
- ;(try-Array-one2n'((0 1 2 3 4)(5 6 7 8 9)(a b c d e))))
- ; <->'((0 5 a)(1 6 b)(2 7 c)(3 8 d)(4 9 e))
- (defun try-Array-Matrix(lst)(apply 'mapcar (cons 'list lst)))
借花献佛 这样就好做了吧,坐标点排序找到坐上点坐标,然后重绘多线段
|