(defun ufb00020 ( u_p ;構成点の座標 ; (始点座標(X,Y) 2点目座標(X,Y) ...) / fg ;0:点列は右回り、1:点列は左回り area ;面積 ;出力:(setq aout (list fg area)) ; nil:構成点が3点未満 aout nn nc nc2 p1 p2 x1 y1 x2 y2 ) ;点列で囲まれた面積を求める (setq aout nil) (setq nn (length u_p)) (if (>= nn 3) (progn (setq area 0.0) (setq nc 0) (repeat nn (setq nc2 (+ nc 1)) (if (>= nc2 nn) (setq nc2 0) ) (setq p1 (nth nc u_p)) (setq p2 (nth nc2 u_p)) (setq nc (+ nc 1)) (setq x1 (car p1)) (setq y1 (cadr p1)) (setq x2 (car p2)) (setq y2 (cadr p2)) (setq area (+ area (/ (* (- x2 x1) (+ y1 y2)) 2.0))) ) (setq fg 0) (if (< area 0.0) (setq fg 1) ) (setq area (abs area)) (setq aout (list fg area)) ) ) aout )