listp和numberp函数怎么用的啊
(defun 3dpoint->2dpoint (3dpt)(if (listp 3dpt)
(if
(progn
((numberp (car 3dpt))
and
(numberp (cadr 3dpt))
and
(numberp (caddr 3dpt))
))
(list (float (car 3dpt)) (float (cadr 3dpt)))
)
)
)
我写了个三维点转二维点的lisp,可是不能用,请大家帮忙看看错在哪里了!
本帖最后由 xshrimp 于 2011-11-6 14:05 编辑
按照你的理解应该是这样的
(defun 3dpoint->2dpoint (3dpt)
(if
(and
(listp 3dpt)
(numberp (car 3dpt))
(numberp (cadr 3dpt))
(numberp (caddr 3dpt))
)
(list (float (car 3dpt)) (float (cadr 3dpt)))
)
)
非常感谢!呵呵! 非常感谢!呵呵! 换个思路,
(defun 3dpoint->2dpoint (3dpt)
(if (apply 'and (mapcar 'numberp 3dpt))
(mapcar '+ 3dpt '(0. 0.))
))
页:
[1]