jw_cad 外部変形 - (666) パワーシェルで多角形の面積を計算する -

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

 

パワーシェルで多角形の面積を計算する

:パワーシェルで多角形の面積を計算する
@echo off
for /f "delims=:" %%n in ('findstr /n "^#!" %0') do (
  more +%%n %0 | powershell -command -
)
goto:eof

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

#!ここから more +n %0 の n 行目:最初の行は 0 行
$hp = @(); foreach ($i in 0..100) { $hp += 0 }
$hpn= 0
(gc jwc_temp.txt) | foreach {
  switch -regex -case ($_)
  {
    '^hp(\d+)-?\s+(\S+)\s+(\S+)' { $hp[$matches[1]]=$matches[2,3]; $hpn += 1 }
  }
}
&{
  #座標法 左回りが正
  $n = $hpn
  $a = 0
  #閉鎖形とし 1 点と n 点は同じ点とする
  if ($hp[1] -ne $hp[$n]) { $hp[$n+1] = $hp[1]; $n += 1 }
  foreach ($i in 1..($n-1))
  {
    $x1,$y1 = ($hp[$i] | foreach { [double] $_ })
    $x2,$y2 = ($hp[$i+1] | foreach { [double] $_ })
    $a += ($x1 - $x2) * ($y1 + $y2) / 2
  }
  "h#Area = $([math]::round($a, 3))"
} | sc jwc_temp.txt

#ここまで powershell は 文末に必ず空白行を置いてください