# include # include # include # include rotate(); scale(); float angle,pi=3.14; float m1[3][3],m2[3][3],m3[3][3],m4[3][3],m5[3][3]; float m1[3][3]={1,0,0, 0,1,0, 0,0,1}; float P,Q,R,xp,yp,xq,yq,xr,yr,xc,yc,theta,c,sum; void main() { int gd=DETECT; int gm=DETECT; initgraph(&gm,&gd,"c:\\turboc\\bgi"); printf("\n ENTER X & Y CO-ORDINATES OF POINT P:"); scanf("%f%f",&xp,&yp); printf("\n ENTER X & Y CO-ORDINATES OF POINT Q:"); scanf("%f%f",&xq,&yq); printf("\n ENTER X & Y CO-ORDINATES OF POINT R:"); scanf("%f%f",&xr,&yr); printf("\n ENTER X & Y CO-ORDINATES OF CENTER :"); scanf("%f%f",&xc,&yc); printf("\n ENTER THE ANGLE OF ROTATION"); scanf("%f",&angle); clrscr(); cleardevice(); line(xp,yp,xq,yq); line(xq,yq,xr,yr); line(xp,yp,xr,yr); getch(); m1[0][0]=xp; m1[1][0]=yp; m1[2][0]=1; c=1; rotate(); scale(); translate(); m1[0][0]=xq;m1[1][0]=yq;m1[2][0]=1;c=2; rotate(); scale(); translate(); m1[0][0]=xr;m1[1][0]=yr;m1[2][0]=1;c=3; rotate(); scale(); translate(); line(xp,yp,xq,yq); line(xq,yq,xr,yr); line(xp,yp,xr,yr); getch(); line(xp,yp,xq,yq); line(xp,yp,xr,yr); line(xq,yq,xr,yr); getch(); } rotate() { int i,j,k; theta=angle*(pi/180); m2[0][0]=cos(theta); m2[0][1]=-sin(theta); m2[0][2]=xp*(1-cos(theta))+sin(theta)*(yp); m2[1][0]=sin(theta); m2[1][1]=cos(theta); m2[1][2]=yp*(1-cos(theta))-sin(theta)*(xp); m2[2][0]=0; m2[2][1]=0; m2[2][2]=1; for(i=0;i<3;i++) { for(j=0;j<3;j++) { sum=0; for(k=0;k<3;k++) sum=sum+m2[i][k]*m1[k][j]; m3[i][j]=sum; } } if(c==1) { xp=m3[0][0]; yp=m3[1][0]; } if(c==2) { xq=m3[0][0]; yq=m3[1][0]; } if(c==3) { xr=m3[0][0]; yr=m3[1][0]; } scale(); translate(); return(0); } scale() { int i,j,k; int sx=2,sy=2; m4[0][0]=sx; m4[0][1]=0; m4[0][2]=xp*(1-sx); m4[1][0]=0; m4[1][1]=sy; m4[1][2]=yp*(1-sy); m4[2][0]=0; m4[2][1]=0; m4[2][2]=1; for(i=0;i<3;i++) { for(j=0;j<3;j++) { sum=0; for(k=0;k<3;k++) sum=sum+m4[i][k]*m1[k][j]; m5[i][j]=sum; } } if(c==1) { xp=m5[0][0]; yp=m5[1][0]; } if(c==2) { xq=m5[0][0]; yq=m5[1][0]; } if(c==3) { xr=m5[0][0]; yr=m5[1][0]; } return(0); } translate() { int i,j,k; int sx=2,sy=2; m4[0][0]=sx; m4[0][1]=0; m4[0][2]=xp*(1-sx); m4[1][0]=0; m4[1][1]=sy; m4[1][2]=yp*(1-sy); m4[2][0]=0; m4[2][1]=0; m4[2][2]=1; for(i=0;i<3;i++) { for(j=0;j<3;j++) { sum=0; for(k=0;k<3;k++) sum=sum+m4[i][k]*m1[k][j]; m5[i][j]=sum; } } if(c==1) { xp=m5[0][0]; yp=m5[1][0]; } if(c==2) { xq=m5[0][0]; yq=m5[1][0]; } if(c==3) { xr=m5[0][0]; yr=m5[1][0]; } return(0); }