jw_cad 外部変形 - (739) gawkで2線の交点に点を打つ -

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

 

gawkで2線の交点に点を打つ

:gawkで2線の交点に点を打つ
@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%dln 線を指示してください
REM #2%dln 線を指示してください
REM #bz
REM #e

#!ここから more +n %0 の n 行目:最初の行は 0 行
function abs(x) { return x > 0 ? x : -x }
function inters(lni, lnj) {
  $0 = lni
  dx1 = $3 - (x1 = $1)
  dy1 = $4 - (y1 = $2)
  m1 = dx1 == 0 ? 1e20 : dy1 / dx1
  $0 = lnj
  dx2 = $3 - (x2 = $1)
  dy2 = $4 - (y2 = $2)
  m2 = dx2 == 0 ? 1e20 : dy2 / dx2
  aa = m1 - m2
  if (abs(aa) < 1e-10) aa = 0
  if (aa != 0) {
    u1 = y1 - m1 * x1
    u2 = y2 - m2 * x2
    return (u2 - u1) / aa FS (m1 * u2 - m2 * u1) / aa
  } else {
    print "he処理できません"; exit
  }
}
BEGIN { CONVFMT = OFMT = "%.15g" }
END { print "pt", inters(ln[1], ln[2]) }
/^hq/ { print "bz" }
/^[ ]/ && NF == 4 { lnn++; ln[lnn] = $0 }