jw_cad 外部変形 - (781) rubyで矩形に内接する楕円を描く(ov) -

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

 

rubyで矩形に内接する楕円を描く(ov)

:rubyで矩形に内接する楕円を描く(ov)
@echo off
ruby -x %0 jwc_temp.txt
goto:eof

REM #jww
REM #1-%d 楕円が内接する矩形の始点を指示してください
REM #2%d 対頂点を指示してください
REM #e

#!ruby -Ks -an -i.bak
BEGIN { include Math }
case $_
  when /^hk/ then hk = $F[1].to_f
  when /^hp1/ then x1, y1 = $F[1, 2].map{|x| x.to_f}
  when /^hp2/ then x2, y2 = $F[1, 2].map{|x| x.to_f}
    co = cos(d = hk * PI / 180)
    si = sin(d)
    ww = (x2 - x1) * co + (y2 - y1) * si
    hh =-(x2 - x1) * si + (y2 - y1) * co
    x, y, r = (x1 + x2) / 2, (y1 + y2) / 2, ww.abs / 2
    w = (hh / ww).abs
    puts "ci %s %s %s %s %s %s %s" % [x, y, r, 0, 360, w, hk]
end
__END__