jw_cad 外部変形 - (561) なでしこで2線の交点に点を打つ -

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

 

なでしこで2線の交点に点を打つ

/* なでしこで2線の交点に点を打つ
@cls & echo off
path C:\nadesiko_1_589;%path%
copy jwc_temp.txt myfiles > nul
cnako %0 > jwc_temp.txt
goto:eof

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

●ABS(x)
 (x * SIGN(x))を戻す
●INTERS(線1, 線2)
  F1とは配列; dx1とは実数; dy1とは実数; m1とは実数; u1とは実数
  F2とは配列; dx2とは実数; dy2とは実数; m2とは実数; u2とは実数
  aaとは実数
  F1 = 線1を「 」で区切ったもの
  dx1 = F1[2] - F1[0]
  dy1 = F1[3] - F1[1]
  もし(dx1 = 0)なら
    m1 = 10 ^ 20
  違えば
    m1 = dy1 / dx1
  F2 = 線2を「 」で区切ったもの
  dx2 = F2[2] - F2[0]
  dy2 = F2[3] - F2[1]
  もし(dx2 = 0)なら
    m2 = 10 ^ 20
  違えば
    m2 = dy2 / dx2
  aa = m1 - m2
  もし(ABS(aa) < 1e-10)なら(aa = 0)
  もし(aa <> 0)なら
    u1 = F1[1] - m1 * F1[0]
    u2 = F2[1] - m2 * F2[0]
    「{(u2 - u1) / aa} {(m1 * u2 - m2 * u1) / aa}」を戻す
  違えば
    "he処理できません"を表示
    終了

「myfiles」を毎行読んで反復
  もし(対象を「^hq」で正規表現マッチ)ならば
    「bz」と表示
    続ける
  もし(対象を「^hhp(\d+)ln」で正規表現マッチ)ならば
    i = 抽出文字列[0]
    続ける
  もし(対象を「^\s+(\S+ \S+ \S+ \S+)」で正規表現マッチ)ならば
    ln[i] = 抽出文字列[0]

「pt {INTERS(ln[1], ln[2])}」を表示