第七讲:二维图形复合线性变换程序设计:
例题:三角形绕任意点旋转。
组合变换为:(1)平移变换(2)旋转变换(3)平移变换
#include
#include
#define PAI 3.14159265
void fdw(float m[][3])
{unsigned count;
for(count=0;count<3;count++)
{m[count][0]=0;m[count][1]=0;
m[count][2]=0;m[count][count]=1;
}
}
void mm2(float ma[][3],float mb[][3],float mc[][3]) { int i,j,k;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{mc[i][j]=0;
for(k=0;k<3;k++)
mc[i][j]=mc[i][j]+ma[i][k]*mb[k][j];
}
}
pallel(float x,float y,float p[3][3])
{ fdw(p);p[2][0]=x;p[2][1]=y;}
rotale(float c1,float p[3][3])
{c1=PAI/180*c1;fdw(p);
p[0][0]=cos(c1);p[0][1]=sin(c1);
p[1][0]=-sin(c1);p[1][1]=cos(c1);
}
affinex(float x,float y,float t[3][3])
{float xx;
xx=x*t[0][0]+y*t[1][0]+t[2][0];
return(xx);
}
affiney(float x,float y,float t[3][3])