外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。
vbscriptで2線の交点に点を打つ
:vbscriptで2線の交点に点を打つ
@echo off
if not exist %~dp0eval.vbs echo ExecuteGlobal WScript.StdIn.ReadAll > %~dp0eval.vbs
for /f "delims=:" %%n in ('findstr /n "^#!" %0') do (
copy jwc_temp.txt myfiles > nul
(
: echo Option Explicit
echo On Error Resume Next
: echo On Error GoTo 0
more +%%n %0
) | cscript //nologo %~dp0eval.vbs > jwc_temp.txt
)
goto:eof
REM #jww
REM #1%dln 線を指示してください
REM #2%dln 線を指示してください
REM #bz
REM #e
#!この次の行からプログラムを書いてください
'1)正規表現
Dim re
Set re = New RegExp
re.IgnoreCase = True '大文字と小文字を区別しない
re.Global = True '文字列全体を検索する
function reSplit(str)
re.Pattern = "[ ]+"
reSplit = Split(Trim(re.Replace(str," ")))
end function
function reTest(pat, str)
re.Pattern = pat
reTest = re.Test(str)
end function
'4)ユーザ定義関数
function inters(ln1, ln2) '線と線の交点
Dim m1, m2, u1, u2
if typename(ln1) = "String" then ln1 = Split(Trim(ln1))
if typename(ln2) = "String" then ln2 = Split(Trim(ln2))
if ln1(2) = ln1(0) then m1 = 1e20 else m1 = (ln1(3) - ln1(1)) / (ln1(2) - ln1(0))
if ln2(2) = ln2(0) then m2 = 1e20 else m2 = (ln2(3) - ln2(1)) / (ln2(2) - ln2(0))
if m1 <> m2 then
u1 = ln1(1) - m1 * ln1(0)
u2 = ln2(1) - m2 * ln2(0)
inters = Array( (u2 - u1) / (m1 - m2), (m1 * u2 - m2 * u1) / (m1 - m2))
else
WScript.Echo "he処理できません"
WScript.Quit
end if
end function
Dim line, F
Dim ln(10), i, j
i = 1
With CreateObject("Scripting.FileSystemObject")
With .OpenTextFile("myfiles")
Do While Not .AtEndOfStream
line = .ReadLine: F = reSplit(line)
if reTest("^[ ]",line) then '指示線
ln(i) = F
for j = 0 to 3: ln(i)(j) = Cdbl(ln(i)(j)): next
i = i + 1
end if
Loop
End With
End With
WScript.Echo "bz"
WScript.Echo "pt " & Join(inters(ln(1), ln(2)))