jw_cad 外部変形 - (977) gccで円に+を記入する -

外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。

 

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 0.25
goto:eof

REM #jww
REM #h1
REM #g1
REM #hc 円を選択してください
REM #bz
REM #e

#!この次の行からプログラムを書いてください
#include "jw.h"
int main(int argc, char *argv[])
{
  FILE *f, *g;
  int NF;
  char S_[256], *F[20];
  double x, y, r, w, d, co, si, mx, my;
  double bai;
  if (argc > 0 && argv[1] != NULL) {
    bai = atof(argv[1]);
  } else {
    bai = 0.25;
  }
  if ( (f = fopen("jwc_temp.txt", "r")) != NULL) {
    g = fopen("myfiles", "w");
    while (fgets(S_, 256, f) != NULL) {
      NF = split(chomp(S_), F);
      if (strncmp(S_, "hq", 2) == 0) {
        fprintf(g, "bz\n");
      } else if (strncmp(S_, "ci", 2) == 0) {
        x = atof(F[1]);
        y = atof(F[2]);
        r = atof(F[3]);
        if (NF > 4) {
          w = atof(F[6]);
          d = atof(F[7]);
        } else {
          w = 1;
          d = 0;
        }
        d = rad(d);
        co = cos(d);
        si = sin(d);
        mx = r * ( 1 + bai );
        my = r * ( w + bai );
        fprintf(g, "%.15g %.15g %.15g %.15g\n", x - mx * co, y - mx * si, x + mx * co, y + mx * si);
        fprintf(g, "%.15g %.15g %.15g %.15g\n", x + my * si, y - my * co, x - my * si, y + my * co);
      }
    }
  } else {
    exit(MISSING_JWC_TEMP_TXT);
  }
  fclose(g);
  fclose(f);
  remove("jwc_temp.txt");
  rename("myfiles", "jwc_temp.txt");
  return 0;
}