外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。
gccで2線の交角を計算する
:gccで2線の交角を計算する
@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 #2%dln 線を指示してください
REM #bz
REM #e
#!この次の行からプログラムを書いてください
#include "jw.h"
int main(void)
{
FILE *f;
int NF;
int lnn = 0;
char S_[256], *F[20];
double d1, d2, xang;
double hp1[2], hp2[2], ln1[4], ln2[4], pc[2], p1[2], p2[2];
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) { hp1[0] = atof(F[1]); hp1[1] = atof(F[2]); }
if (strncmp(S_, "hp2", 3) == 0) { hp2[0] = atof(F[1]); hp2[1] = atof(F[2]); }
if (strncmp(S_, "hhp", 3) == 0) lnn++;
if (strncmp(S_, " ", 1) == 0 && NF == 4) {
if (lnn == 1) {
ln1[0] = atof(F[0]);
ln1[1] = atof(F[1]);
ln1[2] = atof(F[2]);
ln1[3] = atof(F[3]);
} else if (lnn == 2) {
ln2[0] = atof(F[0]);
ln2[1] = atof(F[1]);
ln2[2] = atof(F[2]);
ln2[3] = atof(F[3]);
}
}
}
} else {
exit(MISSING_JWC_TEMP_TXT);
}
fclose(f);
line_x_poi(ln1, ln2, pc);
ln_hpsnap(ln1, hp1, p1);
ln_hpsnap(ln2, hp2, p2);
d1 = ptslope(pc, p1);
d2 = ptslope(pc, p2);
xang = deg(d2 - d1);
if (xang - 180 > 0) xang -= 360;
if (xang + 180 < 0) xang += 360;
f = fopen("jwc_temp.txt", "w");
fprintf(f, "h#2線の交角 = ∠%.6f゚ : d1=%.6f゚ : d2=%.6f゚\n", xang, deg(d1), deg(d2));
fclose(f);
return 0;
}