搜档网
当前位置:搜档网 › c-语言二维图形变换4.2

c-语言二维图形变换4.2

#include
#include
#include
#define Nba 17
void WipeScreen(int ic);
static float picture[Nba][3]=
{
121,0,1,
121,50,1,
132,48,1,
139,2,1,
105,19,1,
111,52,1,
155,40,1,
132,70,1,
75,70,1,
60,57,1,
75,56,1,
69,34,1,
93,23,1,
89,54,1,
111,52,1,
81,54,1,
81,19,1,
};

void saw(float pict[][3],int m1,int m2,int lk)
{
int i;
setlinestyle(0,0,lk);
moveto((int)pict[m1][0],(int)pict[m1][1]);
for(i=m1;ilineto((int)pict[i][0],(int)pict[i][1]);
}

void multimat(float a[][3],float b[3][3],float c[][3],int row,int m,int col)
{
int i,j,k;
for(i=0;i{
for(j=0;j{
c[i][j]=0.0;
for(k=0;kc[i][j]=c[i][j]+a[i][k]*b[k][j];
}
}
}

void main()
{
float cc1[17][3],cc2[17][3],cc3[17][3];
float z[3][3]={1,0,0,0,1,0,20,3,1};
int i,j,k,gd=DETECT,gmode;
initgraph(&gd,&gmode,"c:\\tc");
settextstyle(3,0,2);
setcolor(11);
outtextxy(190,380,"2D GRAPHICS TRANSFORMATION");
setwritemode(1);
setcolor(14);
saw(picture,0,17,3);
multimat(picture,z,cc1,17,3,3);
setcolor(10);
saw(cc1,0,17,1);
for(i=0;i<=22;i++)
{
multimat(cc1,z,cc2,17,3,3);
delay(100);
saw(cc1,0,17,1);
saw(cc2,0,17,1);
for(j=0;j<17;j++)
{
for(k=0;k<3;k++)
{
cc1[j][k]=cc2[j][k];
}
}
}
saw(cc1,0,17,1);
z[3][0]=0;
z[3][1]=20;
for(i=1;i<=17;i++)
{
multimat(cc1,z,cc2,17,3,3);
delay(100);
saw(cc1,0,17,1);
saw(cc2,0,17,1);
for(j=0;j<17;j++)
{
for(k=0;k<3;k++)
{
cc1[j][k]=cc2[j][k];
}
}
}
saw(cc1,0,17,1);
z[2][0]=-20;
z[2][1]=0;
for(i=23;i>=1;i--)
{
multimat(cc1,z,cc2,17,3,3);
delay(100);
saw(cc1,0,17,1);
saw(cc2,0,17,1);
for(j=0;j<17;j++)
{
for(k=0;k<3;k++)
{
cc1[j][k]=cc2[j][k];
}
}
}
z[2][0]=0;
z[0][0]=cos(-0.2);
z[0][1]=sin(-0.2);
z[1][0]=-sin(-0.2);
z[1][1]=cos(-0.2);
delay(1000);
for(i=1;i<=5;i++)
{
multimat(cc1,z,cc2,17,3,3);
delay(500);
saw(cc1,0,17,1);
saw(cc2,0,17,1);
for(j=0;j<17;j++)
{
for(k=0;k<3;k++)
{
cc1[j][k]=cc2[j][k];
}
}
}
saw(cc1,0,17,1);
setcolor(7);
z[0][0]=cos(0.2);
z[0][1]=sin(0.2);
z[1][0]=-sin(0.2);
z[1][1]=cos(0.2);
for(i=1;i<=5;i++)
{
multimat(cc1,z,cc2,17,3,3);
delay(500);
saw(cc1,0,17,1);
saw(cc2,0,17,1);
for(j=0;j<17;j++)
{
for(k=0;k<3;k++)
{
cc1[j][k]=cc2[j][k];
}
}
}
saw(cc1,0,17,1);
z[2][0]=0;
z[2][1]=-20

;
z[0][0]=1;
z[0][1]=0;
z[1][0]=0;
z[1][1]=1;
setcolor(6);
for(i=1;i<=17;i++)
{
multimat(cc1,z,cc2,17,3,3);
delay(100);
saw(cc1,0,17,1);
saw(cc2,0,17,1);
for(j=0;j<17;j++)
{
for(k=0;k<3;k++)
{
cc1[j][k]=cc2[j][k];
}
}
}
saw(cc2,0,17,1);
setcolor(14);
saw(picture,0,17,0);
saw(picture,0,17,0);
z[0][0]=-1;
z[2][1]=0;
multimat(picture,z,cc1,17,3,3);
z[0][0]=1;
z[2][0]=400;
multimat(picture,z,cc1,17,3,3);
delay(500);
saw(cc2,0,17,1);
delay(1000);
z[2][0]=0;
z[1][1]=-1;
multimat(picture,z,cc1,17,3,3);
z[1][1]=1;
z[2][1]=300;
multimat(cc1,z,cc2,17,3,3);
saw(cc2,0,17,1);
delay(500);
z[2][0]=480;
z[2][1]=380;
multimat(picture,z,cc1,17,3,3);
z[0][0]=4/5;
z[1][1]=4/5;
z[2][0]=0;
z[2][1]=0;
for(i=1;i<6;i++)
{
multimat(cc1,z,cc2,17,3,3);
saw(cc2,0,17,1);
for(j=0;j<17;j++)
{
for(k=0;k<3;k++)
{
cc1[j][k]=cc2[j][k];
}
}
}
getch();
settextjustify(CENTER_TEXT,TOP_TEXT);
WipeScreen(1);
settextstyle(1,0,5);
setcolor(WHITE);
setfillstyle(SOLID_FILL,BLACK);
bar(200,70,470,170);
setfillstyle(SOLID_FILL,LIGHTBLUE);
bar(180,50,450,150);
outtextxy(315,70,"Good Bye!");
setfillstyle(SOLID_FILL,BLACK);
bar(185,250,485,350);
setfillstyle(SOLID_FILL,BLUE);
bar(165,230,465,330);
outtextxy(310,250,"Good Luck!!");
settextstyle(1,0,4);
setfillstyle(SOLID_FILL,BLUE);
bar(12,400,638,460);
setfillstyle(SOLID_FILL,BLUE);
bar(2,390,628,450);
outtextxy(310,395,"Xi'an Jiaotong University-CAD Center");
delay(2000);
getch();
closegraph();
}

void WipeScreen(int ic)
{
int i,j,k;
setcolor(ic);
k=getmaxx();
j=getmaxy();
for(i=0;i<(k+2)/2;i+=2)
{
line(i+1,0,i+1,j);line(k-i,0,k-i,j);
}
return;
}

相关主题