三角形
Posted: 2006年12月10日(日) 18:23
200×200画素の画像の中心に指定した底辺と高さの三角形を配置したプログラムを作成し
画像は1次元配列でmalloc関数を用いて動的にメモリを確保。
という課題が出たので自分で作ってみたのですが、出来ません( ノД`)シクシク
もしよろしければアドバイスよろしくお願いします。
#include <stdio.h>
#include <stdlib.h>
#define MS 200
main()
{
char fi[50];
int i,j,x0,x1,y,w,h;
FILE *fp;
unsigned short header[13]={0x4d42,54490,1,0,0,26,0,12,0,200,200,1,24};
unsigned char *bmp;
bmp=(unsigned char*)malloc(MS*MS*3);
for(i=0;i<=MS*MS-1;i++)
{
bmp[i*3+0]=255;
bmp[i*3+1]=0;
bmp[i*3+2]=0;
}
printf("Input width : ");
scanf("%s",fi);
w=atoi(fi);
printf("Input height : ");
scanf("%s",fi);
h=atoi(fi);
for(i=100-h/2;i<=100+h/2;i++)
{y=i-MS/2;
for(j=100-w/2;j<=100;j++)
{x0=j-MS/2;
bmp[(i*MS+j)*3+0]>=2*h*x0/w+h/2;
bmp[(i*MS+j)*3+1]<=2*h*x0/w+h/2;
bmp[(i*MS+j)*3+2]=0;
}
}
for(i=100-h/2;i<=100+h/2;i++)
{y=i-MS/2;
for(j=100;j<=100+w/2;j++)
{x1=j-MS/2;
bmp[(i*MS+j)*3+0]>=-2*h*x1/w+h/2;
bmp[(i*MS+j)*3+1]<=-2*h*x1/w+h/2;
bmp[(i*MS+j)*3+2]=0;
}
}
printf("Input file name : ");
scanf("%s",fi);
if((fp=fopen(fi,"wb"))==NULL)
{
fprintf(stderr,"Error : file open[%s].\n",fi);
exit(1);
}
fwrite(header,2,13,fp);
fwrite(bmp,1,200*200*3,fp);
fclose(fp);
}
画像は1次元配列でmalloc関数を用いて動的にメモリを確保。
という課題が出たので自分で作ってみたのですが、出来ません( ノД`)シクシク
もしよろしければアドバイスよろしくお願いします。
#include <stdio.h>
#include <stdlib.h>
#define MS 200
main()
{
char fi[50];
int i,j,x0,x1,y,w,h;
FILE *fp;
unsigned short header[13]={0x4d42,54490,1,0,0,26,0,12,0,200,200,1,24};
unsigned char *bmp;
bmp=(unsigned char*)malloc(MS*MS*3);
for(i=0;i<=MS*MS-1;i++)
{
bmp[i*3+0]=255;
bmp[i*3+1]=0;
bmp[i*3+2]=0;
}
printf("Input width : ");
scanf("%s",fi);
w=atoi(fi);
printf("Input height : ");
scanf("%s",fi);
h=atoi(fi);
for(i=100-h/2;i<=100+h/2;i++)
{y=i-MS/2;
for(j=100-w/2;j<=100;j++)
{x0=j-MS/2;
bmp[(i*MS+j)*3+0]>=2*h*x0/w+h/2;
bmp[(i*MS+j)*3+1]<=2*h*x0/w+h/2;
bmp[(i*MS+j)*3+2]=0;
}
}
for(i=100-h/2;i<=100+h/2;i++)
{y=i-MS/2;
for(j=100;j<=100+w/2;j++)
{x1=j-MS/2;
bmp[(i*MS+j)*3+0]>=-2*h*x1/w+h/2;
bmp[(i*MS+j)*3+1]<=-2*h*x1/w+h/2;
bmp[(i*MS+j)*3+2]=0;
}
}
printf("Input file name : ");
scanf("%s",fi);
if((fp=fopen(fi,"wb"))==NULL)
{
fprintf(stderr,"Error : file open[%s].\n",fi);
exit(1);
}
fwrite(header,2,13,fp);
fwrite(bmp,1,200*200*3,fp);
fclose(fp);
}