jw_cad 外部変形 - (726) gawkで多角形の面積を計算する -

外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。

 

gawkで多角形の面積を計算する

:gawkで多角形の面積を計算する
@echo off
for /f %%n in ('gawk "/^#!/ { print NR }" %0') do (
  copy jwc_temp.txt myfiles > nul
  more +%%n %0 | gawk -f - myfiles > jwc_temp.txt
)
goto:eof

REM #jww
REM #1-%d 点を指示してください
REM #99#%d
REM #e

#!ここから more +n %0 の n 行目:最初の行は 0 行
BEGIN { CONVFMT = OFMT = "%.15g" }
/^hp[1-9][0-9]?/ {
  gsub(/(ln|ci|ch|-)$/, "", $1); hp[substr($1, 3)] = $2 FS $3
}
END {
  #座標法 左回りが正
  n = length(hp)
  a = 0
  #閉鎖形とし 1 点と n 点は同じ点とする
  if (hp[1] != hp[n]) { hp[n+1] = hp[1]; n += 1 }
  for (i = 1; i < n; i++)
  {
    $0 = hp[i] FS hp[i+1]
    a += ($1 - $3) * ($2 + $4) / 2
  }
  printf "h#Area = %.03f ", a
}