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

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

 

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

:rubyで2線の交点に点を打つ
@echo off
ruby -x %0 jwc_temp.txt
goto:eof

REM #jww
REM #1%dln 線を指示してください
REM #2%dln 線を指示してください
REM #bz
REM #e

#!ruby -Ks -an -i.bak
def line_x_poi(ln1, ln2) # 線と線の交点
    x1, y1, x2, y2 = ln1
    dx1 = x2 - x1
    dy1 = y2 - y1
    m1 = dx1 == 0 ? 1e20 : dy1 / dx1
    x3, y3, x4, y4 = ln2
    dx2 = x4 - x3
    dy2 = y4 - y3
    m2 = dx2 == 0 ? 1e20 : dy2 / dx2
    aa = m1 - m2
    if aa.abs < 1e-10 then aa = 0 end
    if aa != 0
      b1 = y1 - m1 * x1
      b2 = y3 - m2 * x3
      return [(b2 - b1) / aa, (m1 * b2 - m2 * b1) / aa]
    else
      puts "he処理できません"; exit
    end
end
BEGIN { ln = [] }
case $_
  when /^hq/
    puts "bz"
  when /^hhp[1-9]ln/
    lnn = $F[0].gsub(/(hhp|ln|-)/,"").to_i
  when /^[ ]/
    if $F.size == 4
      ln[lnn] = $F.map{|x| x.to_f}
    end
end
END { puts "pt %s %s" % line_x_poi(ln[1], ln[2]) }
__END__