张和平 发表于 2013-8-16 09:01:52

[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
)

newer 发表于 2013-8-16 13:58:00

提个建议,一般函数里面不用特意考虑Z坐标,都返回,如果程序中需要只要XY的,单独提供一个CUTZ的函数。

pengfei2010 发表于 2013-8-16 14:49:45

对的 上面版主的建议很有道理:lol

Free-Lancer 发表于 2013-8-16 14:57:04


(defun pts-cen (pts / l)
(setq l (length pts))
(mapcar '(lambda (x) (/ x l)) (apply 'mapcar (cons '+ pts)))
)

Lisphk 发表于 2013-8-16 15:06:01

Free-Lancer 发表于 2013-8-16 14:57


这个是什么算法?

Free-Lancer 发表于 2013-8-16 15:09:41

x y z 分别求和的平均值

snigefqb 发表于 2017-6-16 19:02:42

这个求的是质心吧,不是中心点?

niqiu8 发表于 2019-6-7 19:25:19

凹多边形会落在外面吧?

niqiu8 发表于 2019-6-7 19:26:42

凹多边形会落在外面吧?
页: [1]
查看完整版本: [LISP函数]获取点表中所有点的中心点