このプログラムを解読してください。
これは、楕円の内部と外部に色を塗るプログラムです。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define MS 200
main()
{
char fi[50];
int i,j;
double x0,y0,a,b;
FILE *fp;
unsigned short header[13]={0x4d42,54490,1,0,0,26,0,12,0,MS,MS,1,24};
unsigned char bmp[MS][MS][3];
for(i=0;i<=MS-1;i++)
{
for(j=0;j<=MS-1;j++)
{
bmp[i][j][0]=0;
bmp[i][j][1]=255;
bmp[i][j][2]=0;
}
}
printf("中心のx座標:");
fgets(fi,50,stdin);
x0=atof(fi);
printf("中心のy座標:");
fgets(fi,50,stdin);
y0=atof(fi);
printf("短径:");
fgets(fi,50,stdin);
a=atof(fi);
printf("長径:");
fgets(fi,50,stdin);
b=atof(fi);
for(i=0;i<=MS-1;i++)
{
for(j=0;j<=MS-1;j++)
{
if((pow(j-x0,2.0)/pow(a,2.0))+(pow(i-y0,2.0)/pow(b,2.0))<=1)
{
bmp[i][j][0]=0;
bmp[i][j][1]=0;
bmp[i][j][2]=255;
}
}
}
printf("Input file name:");
fgets(fi,50,stdin);
fi[strlen(fi)-1]='\0';
if((fp=fopen(fi,"wb"))==NULL)
{
fprintf(stderr,"Error: file open [%s].\n",fi);
exit(1);
}
fwrite(header,2,13,fp);
fwrite(bmp,1,MS*MS*3,fp);
fclose(fp);
}
お礼
アドバイスをありがとうございます。 お陰様で表示出来ました。 エラーになる原因も教えていただき、助かりました。