外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。
gawkで階段を割り付ける
:gawkで階段を割り付ける
@echo off
set n=%1
call %~dp0set "n" "%*" %~dpn0.txt
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-%d 始点を指示してください
REM #2%d 終点を指示してください
REM #c 段数 =
REM #e
#!ここから more +n %0 の n 行目:最初の行は 0 行
function rad(x) { return x * atan2(1, 0) / 90 }
function deg(x) { return x / atan2(1, 0) * 90 }
BEGIN {
CONVFMT = OFMT = "%.15g"
n = ENVIRON["n"] * 1; if (n <= 0) n = 12
c = 1 #c = 0 で均等割り
}
/^hk/ { hk = $2 }
/^hp[1-9][0-9]?/ {
gsub(/(ln|ci|ch|-)$/, "", $1); hp[substr($1, 3)] = $2 FS $3 }
END {
$0 = hp[1] FS hp[2] #$0 = $1 $2 $3 $4 = x1 FS y1 FS x2 FS y2
co = cos(d = rad(hk))
si = sin(d)
a = (h = ($4 - $2) * co - ($3 - $1) * si) / n
b = (w = ($3 - $1) * co + ($4 - $2) * si) / (n > c ? (n - c) : 1)
printf("K1\n%s %s\n", deg(atan2($2, $1)), sqrt($1 * $1 + $2 * $2))
for (i = 1; i <= n; i++) {
printf("%s %s\n%s %s\n", 90 + hk, a, hk, b)
}
}
○set.bat
set %~1=%~2
if defined %~1 (
echo ^%~2> %3
) else (
if exist %3 (
for /f "tokens=*" %%a in (%3) do set %~1=%%a
)
)