[LISP函数]获取点表中所有点的中心点
;;;获取点表中所有点的中心点 by PEACE 2013/06/28;;;plst=点表isz=T (包含Z坐标) nil (不包含Z坐标)
(defun PEACE:Point_CenterPoint(plst isz / n x y z i centerpoint)
(setq n (length plst))
(setq x 0 y 0 i 0)
(if (= isz T) (setq z 0))
(repeat n
(setq x (+ x (car (nth i plst)))
y (+ y (cadr (nth i plst)))
)
(if (= isz T) (setq z (+ z (caddr (nth i plst)))))
(setq i (1+ i))
)
(if (= isz T)
(setq centerpoint (list (/ x n) (/ y n) (/ z n)))
(setq centerpoint (list (/ x n) (/ y n)))
)
centerpoint
) 提个建议,一般函数里面不用特意考虑Z坐标,都返回,如果程序中需要只要XY的,单独提供一个CUTZ的函数。 对的 上面版主的建议很有道理:lol
(defun pts-cen (pts / l)
(setq l (length pts))
(mapcar '(lambda (x) (/ x l)) (apply 'mapcar (cons '+ pts)))
)
Free-Lancer 发表于 2013-8-16 14:57
这个是什么算法?
x y z 分别求和的平均值 这个求的是质心吧,不是中心点?
凹多边形会落在外面吧? 凹多边形会落在外面吧?
页:
[1]