Nico 发表于 2011-9-5 14:14 
有没有算法 提供下 或者帮我改下我那个程序
 - ;;;点表按Y从大到小,X从小到大排序
- ;;;plist 要排序的点表 Fuzz 上下偏移容忍的精度
- (defun sort-pts (plist Fuzz / pl1 fixNumber)
- (defun fixNumber (number num)
- (if (equal 0 (rem number num))
- (fix number)
- (if (> number 0)
- (* num (1+ (fix (/ number num))) )
- (* num (1- (fix (/ number num))) )
- )
- )
- )
- (setq pl1 (mapcar '(lambda (x) (mapcar '(lambda (y) (fixNumber y fuzz)) x)) plist))
- (setq pl1
- (vl-sort-i
- pl1
- (function
- (lambda (a b)
- (cond
- ((and (equal (cadr a) (cadr b) Fuzz)
- (<= (car a) (car b))
- )
- t
- )
- ((and (equal (cadr a) (cadr b) Fuzz)
- (> (car a) (car b))
- )
- nil
- )
- ((>= (cadr a) (cadr b))
- t
- )
- (t nil)
- )
- )
- )
- )
- )
- (mapcar '(lambda (x) (nth x plist)) pl1)
- )
|