📄 simug.c
字号:
#include <stdio.h>
#include <graphics.h>
#include <math.h>
char buf[100];
char filename[200];
int down_flag= 0;
long x_c,y_c;
main()
{
FILE *fpe;
int gdriver = DETECT, gmode=18, errorcode;
int ret,i,x1,y1,x2,y2;
long minx,miny,maxx,maxy;
long curx,cury,x,y,oldx,oldy;
int x_flag,y_flag;
// printf("Please Input Your File Name To Simu:\n");
// scanf("%s",filename);
x_c = y_c = 0;
strcpy(filename,"c:\\jgs\\test.g");
fpe = fopen(filename,"rb");
ret = get_a_line(fpe);
minx = miny = maxx = maxy = curx = cury = 0;
oldx = oldy = 0;
while (ret != -1){
i = 0;
x_flag = y_flag = 0;
while ((buf[i] != 'X')&&(buf[i]!=0))
i ++;
if (buf[i] == 'X'){
x = atoi(&(buf[i+1]));
x_flag = 1;
}
i = 0;
while ((buf[i] != 'Y')&&(buf[i]!=0))
i ++;
if (buf[i] == 'Y'){
y = atoi(&(buf[i+1]));
y_flag = 1;
}
if (x_flag == 0)
x = oldx;
// else
// x = oldx;
if (y_flag == 0)
y = oldy;
// else
// y = oldy;
if (minx > x)
minx = x;
if (maxx < x)
maxx = x;
if (miny > y)
miny = y;
if (maxy < y)
maxy = y;
ret = get_a_line(fpe);
oldx = x;
oldy = y;
}
fclose(fpe);
fpe = fopen(filename,"rb");
ret = get_a_line(fpe);
oldx = oldy = 0;
initgraph(&gdriver, &gmode, "c:\\jgs");
setcolor(WHITE);
oldx = oldy = 0;
while (ret != -1){
i = 0;
x_flag = y_flag = 0;
while ((buf[i] != 'X')&&(buf[i]!=0))
i ++;
if (buf[i] == 'X'){
x = atoi(&(buf[i+1]));
x_flag = 1;
}
i = 0;
while ((buf[i] != 'Y')&&(buf[i]!=0))
i ++;
if (buf[i] == 'Y'){
y = atoi(&(buf[i+1]));
y_flag = 1;
}
if (x_flag == 0)
x = oldx;
// else
// x = oldx;
if (y_flag == 0)
y = oldy;
// else
// y = oldy;
x_c = x;
y_c = y;
curx = x;
cury = y;
if (fabs(maxx-minx) > fabs(maxy-miny)){
x1 = 480.0*(oldx-(maxx+minx)/2.0)/(maxx-minx) + 240;
y1 = 240 - 480.0*(oldy-(maxy+miny)/2.0)/(maxx-minx);
x2 = 480.0*(curx-(maxx+minx)/2.0)/(maxx-minx) + 240;
y2 = 240 - 480.0*(cury-(maxy+miny)/2.0)/(maxx-minx);
}
else{
x1 = 480.0*(oldx-(maxx+minx)/2.0)/(maxy-miny) + 240;
y1 = 240 - 480.0*(oldy-(maxy+miny)/2.0)/(maxy-miny);
x2 = 480.0*(curx-(maxx+minx)/2.0)/(maxy-miny) + 240;
y2 = 240 - 480.0*(cury-(maxy+miny)/2.0)/(maxy-miny);
}
line(x1,y1,x2,y2);
oldx = x;
oldy = y;
ret = get_a_line(fpe);
}
fclose(fpe);
printf("%ld %ld\n",x_c,y_c);
getch();
closegraph();
}
get_a_line(FILE *fpe)
{
int i,ch;
ch = fgetc(fpe);
if (ch == EOF)
return -1;
i = 0;
while ((ch != 13)&&(ch != 10)&&(ch != EOF)){
buf[i++] = ch;
ch = fgetc(fpe);
}
buf[i] = 0;
if (ch == EOF)
return -1;
fgetc(fpe);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -