外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。
:gawkでレムニスケートを描く
@echo off
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 X軸上の点を指示してください
REM #e
#!ここから more +n %0 の n 行目:最初の行は 0 行
function f(p) { return a * cos(p) * sqrt(1 - .5 * sin(p) ^ 2) }
function g(p) { return a / sqrt(2) * sin(p) * cos(p) }
function h(n) {
$0 = hp[1] FS hp[2]
d = atan2($4 - $2, $3 - $1) + PI / 2
si = sin(d)
co = cos(d)
a = sqrt(($3 - $1) ^ 2 + ($4 - $2) ^ 2)
p = 2 * PI / n
x1 = f(0)
y1 = g(0)
xa = x1 * si + y1 * co + $1
ya = -x1 * co + y1 * si + $2
i = 1
while (i != n + 1) {
x1 = f(i * p)
y1 = g(i * p)
xb = x1 * si + y1 * co + $1
yb = -x1 * co + y1 * si + $2
print xa, ya, xb, yb
xa = xb
ya = yb
i++
}
}
BEGIN { CONVFMT = OFMT = "%.15g" }
/^hp/ { hp[substr($1, 3, 1)] = $2 FS $3 }
END { PI = atan2(1, 1) * 4; h(100) }