;; | ---------------------------------------------------------------------------- ;; | GE_polyarea ;; | ---------------------------------------------------------------------------- ;; | Function : Calculate the area of a polygon ;; | Argument : ptlist - list of points forming the polygon ;; | Return : The area ;; | Update : March 6, 1998 ;; | e-mail : rakesh.rao@4d-technologies.com ;; | Web : www.4d-technologies.com ;; | ---------------------------------------------------------------------------- (defun GE_polyarea(ptlist / nverts cnt area tmp pt1 pt2) (setq cnt 0 nverts (length ptlist) area 0.0 ) (while (< cnt (1- nverts)) (setq pt1 (nth cnt ptlist) pt2 (nth (1+ cnt) ptlist) area (+ area (* (cadr pt1) (car pt2))) cnt (1+ cnt) ) ) (setq pt1 (nth (1- nverts) ptlist) pt2 (nth 0 ptlist) area (+ area (* (cadr pt1) (car pt2))) cnt 0 tmp 0.0 ) (while (< cnt (1- nverts)) (setq pt1 (nth cnt ptlist) pt2 (nth (1+ cnt) ptlist) tmp (+ tmp (* (cadr pt2) (car pt1))) cnt (1+ cnt) ) ) (setq pt1 (nth 0 ptlist) pt2 (nth (1- nverts) ptlist) tmp (+ tmp (* (cadr pt1) (car pt2))) area (abs (* 0.5 (- area tmp))) ) )