外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。
gccで指示線を確認する(ln)
:gccで指示線を確認する(ln)
@echo off
if not exist %~dpn0.exe (
for /f "delims=:" %%n in ('findstr /n "^#!" %0') do (
more +%%n %0 > %~dpn0.c
gcc -Os %~dpn0.c -o %~dpn0.exe -s
)
)
%~dpn0
goto:eof
REM #jww
REM #1%dln 線を指示してください
REM #99#
REM #bz
REM #e
#!この次の行からプログラムを書いてください
#include "jw.h"
int main(void)
{
FILE *f, *g;
int i, n, NF, lnn;
char S_[256], *F[20];
char SS[256];
char s[256], t[256];
double ln[101][4];
double r, x1, y1, x2, y2;
if ( (f = fopen("jwc_temp.txt", "r")) != NULL) {
g = fopen("myfiles", "w");
while (fgets(S_, 256, f) != NULL) {
strcpy(SS, chomp(S_));
NF = split(SS, F);
if (strncmp(S_, "hq", 2) == 0) {
fprintf(g, "bz\n");
}
if (strncmp(S_, "hhp", 3) == 0) {
n = strlen(S_);
substr(S_, n-2, 3, s); // s => 末尾2文字
if (strcmp(s, "ln") == 0) { // hhp([1-9][0-9]?)ln
substr(S_, 3, n-3-2, t); // t => $1
lnn = atoi(t);
}
}
if (strncmp(S_, " ", 1) == 0 && NF == 4) {
for (i = 0; i < 4; i++) { ln[lnn][i] = atof(F[i]); }
r = lnlength(ln[lnn]) / 2.0;
x1 = ln[lnn][0];
y1 = ln[lnn][1];
x2 = ln[lnn][2];
y2 = ln[lnn][3];
fprintf(g, "ci %.15lg %.15lg %.15lg\n", (x1 + x2) / 2.0, (y1 + y2) / 2.0, r);
}
}
} else {
exit(MISSING_JWC_TEMP_TXT);
}
fclose(g);
fclose(f);
remove("jwc_temp.txt");
rename("myfiles", "jwc_temp.txt");
return 0;
}
線分を指示してそれが直径となる円を描いています。正規表現は利用していません。