以多边形顶点坐标计算面积
之前看到过有利用多边形顶点坐标计算面积的代码?具体做法忘记了,请求高手指点一下,非常感谢!本帖最后由 Gu_xl 于 2013-3-21 09:05 编辑
;; 返回由表 L1 构成的多边形面积. 点逆时针为正,顺时针为负
(defun getplarea (l1 / s x1 y1 x2 y2 p1)
(setq s 0.
p1 (last l1)
x1 (car p1)
y1 (cadr p1)
)
(foreach p1 l1
(setq x2 (car p1)
y2 (cadr p1)
s (- (+ s (* x1 y2)) (* x2 y1))
x1 x2
y1 y2
)
)
(* 0.5 s )
)
;;简洁写法
(defun getplarea (l)
(* 0.5
(apply '+
(mapcar '(lambda (a b)
(- (* (car a) (cadr b)) (* (car b) (cadr a)))
)
l
(append (cdr l) (list (car l)))
)
)
)
)
ptn→ pline → vla-get-area 谢谢!好像还有另处一种方法,如有点: (x1,y1) (x2,y2)(x3,y3)....则面积等于(x1*y2-y1*x2)+....,不知道这个依据是什么,我验证过,貌似正确 顶~~~~~~~~~~~~~~~~~~~~~~~~~ 好,学习了 sageman 发表于 2013-3-21 20:41
谢谢!好像还有另处一种方法,如有点: (x1,y1) (x2,y2)(x3,y3)....则面积等于(x1*y2-y1*x2)+....,不知道 ...
测量书本上有计算多边形(不规则)图形的面积计算公式 学习了。。刚好有个地方用到
页:
[1]