新明解だいがく生かつ辞典 -反省堂- 風の谷の13番目の大学生 -350ページ目

C言語の入門(初心者)12add.c 061213

#include<stdio.h>
#include<stdlib.h>
#define MS 200
void rect(unsigned char*,int,int,int,int,int,int);
void circle(unsigned char*,int,int,int,int,int,int);
main()
{
unsigned char *bmp;
bmp=(unsigned char*)malloc(MS*MS*3);
rect(bmp,0,0,MS,MS,0,0,255);
circle(bmp,-50,0,40,255,0,0);
circle(bmp,50,0,40,0,255,0);
if(save(bmp)) exit(1);
}

void rect(unsigned char*,bmp,int x0,int y0,int w,int h,int r,int g,int b);
{
int i,j;

for(i=50;i<MS-20;i++){
for(j=50;j<MS-20;j++){
a[i*3+0]=0;
a[i*3+1]=0;
a[i*3+2]=0;
}
}
}
void circle(unsigned char* bmp,int x0,int y0,int r0,int r,int g,int b)
{
int i,j,x,y;
for(i=0;i<MS;i++){
y=i-MS/2
for(j=0;j<MS;j++){
x=j-MS/2
if(r0*r0>(x-x0)*(x-x0)+(y-y0)*(y-y0)){
a[i*3+0]=100;
a[i*3+1]=100;
a[i*3+2]=100;
}
}
}
}

char fi[50];
int i,j,t;
FILE *fp;
unsigned short header[13]={0x4d42,54490,1,0,0,26,0,12,0,200,200,1,24};
unsigned char *bmp;

for(i=0;i<MS*MS;++i)
{ bmp[i*3+0]=0;
bmp[i*3+1]=0;
bmp[i*3+2]=0;}
printf("Input rotate angle : ");
scanf("%s",fi);
t=atoi(fi);
for(i=75;i<=124;++i){
for(j=75;j<=124;++j)
{ bmp[(i*MS+j)*3+0]=230;
bmp[(i*MS+j)*3+1]=230;
bmp[(i*MS+j)*3+2]=230;}}
rotate(bmp,t);
printf("Input file name:");
scanf("%s",fi);
if((fp = fopen ( fi,"wb"))==NULL){
fprintf(stderr,"Error:file open[%s].\n",fi);
exit(1); }else{
fwrite(header,2,13,fp);
fwrite(bmp,1,MS*MS*3,fp);
fclose(fp);}}
void rotate(unsigned char *b,int t)
{ int i,j,x,y,x1,y1;
double th,si,co;
unsigned char *a;
a=(unsigned char*)malloc(MS*MS*3);
th=t*PI/180.0;
si=sin(th);
co=cos(th);
for(i=0;i<MS*MS;++i){
a[i*3+0]=0;
a[i*3+1]=0;
a[i*3+2]=0;}
for(i=0;i<MS;++i){
y=i-MS/2;
for(j=0;j<MS;++j){
x=j-MS/2;
x1=x*co+y*si+MS/2+0.5;
y1=-x*si+y*co+MS/2+0.5;
if((x1<0||x1>MS-1)||(y1<0||y1>MS-1))continue;
a[(i*MS+j)*3+0]=b[(y1*MS+x1)*3+0];
a[(i*MS+j)*3+1]=b[(y1*MS+x1)*3+1];
a[(i*MS+j)*3+2]=b[(y1*MS+x1)*3+2];}}
for(i=0;i<MS*MS*3;i++){
b[i]=a[i];}
free(a);}





プログラミング 入門, ゲーム プログラミング, c言語 プログラミング, プログラミング ソフト, java プログラミング, プログラミング言語, バイオプログラミング, プログラミング basic, windows プログラミング, vb プログラミング, web プログラミング, ネットワーク プログラミング, linux プログラミング, プログラミング コンテスト, psp プログラミング, vba プログラミング, プログラミング 初心者, c++ プログラミング, プログラミング フリーソフト, c# プログラミング, 神経言語プログラミング, プログラミング 資格, プログラミング wiki, visual basic プログラミング, ソケット プログラミング, 電卓 プログラミング, プログラミング 基礎, mac プログラミング, カレンダー プログラミング, directx プログラミング, プログラミング エラー