外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。
gccで線の端点に矢印を描く
:gccで線の端点に矢印を描く
@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 #1ln 線を指示してください
REM #bz
REM #e
#!この次の行からプログラムを書いてください
#include "jw.h"
int main(void)
{
FILE *f;
int NF;
char S_[256], *F[20];
double p1[2], p2[2], ln[4], pt[2];
double size, xang, xan2, d, l1, l2;
if ( (f = fopen("jwc_temp.txt", "r")) != NULL) {
while (fgets(S_, 256, f) != NULL) {
NF = split(chomp(S_), F);
if (strncmp(S_, "hp1", 3) == 0) { pt[0] = atof(F[1]); pt[1] = atof(F[2]); }
if (strncmp(S_, " ", 1) == 0 && NF == 4) {
ln[0] = atof(F[0]);
ln[1] = atof(F[1]);
ln[2] = atof(F[2]);
ln[3] = atof(F[3]);
}
}
} else {
exit(MISSING_JWC_TEMP_TXT);
}
fclose(f);
size = 5; /* 矢印の長さ( 図寸 ) */
xang = 45; /* 矢印の交角( ゚ ) */
xan2 = 120; /* 矢尻の交角( ゚ ) */
lnpoint(ln,-1, p1);
lnpoint(ln, 1, p2);
d = lnslope(ln);
l1 = ptdist(pt, p1);
l2 = ptdist(pt, p2);
f = fopen("jwc_temp.txt", "w");
fprintf(f, "bz\n");
if (l1 <= l2) {
arrow(f, p1, d, size, xang, xan2);
} else {
arrow(f, p2, d, -size, xang, xan2);
}
fclose(f);
return 0;
}