#include "stdio.h"
#include "conio.h"
#include "math.h"
#include "graphics.h"
#define pi 3.1415926
double xmax,ymax;
double f[3][3],xx,yy;
int scx(double xj)
{
int x;
x=(int)(xj+xmax/2);
return(x);
}
int scy(double yj)
{
int y;
y=ymax-(int)(yj+ymax/2);
return(y);
}
void axis()
{
line(scx(0.0),scy(-ymax/2),scx(0.0),scy(ymax/2));
line(scx(-xmax/2),scy(0.0),scx(xmax/2),scy(0.0));
}
void PingYi(double dx,double dy)
{
f[0][0]=1;f[0][1]=0;f[0][2]=0;
f[1][0]=0;f[1][1]=1;f[1][2]=0;
f[2][0]=dx;f[2][1]=dy;f[2][2]=1;
}
void XuanZhuan(double th)
{
f[0][0]=cos(th/180*pi);f[0][1]=sin(th/180*pi);f[0][2]=0;
f[1][0]=-sin(th/180*pi);f[1][1]=cos(th/180*pi);f[1][2]=0;
f[2][0]=0;f[2][1]=0;f[2][2]=1;
}
void DuiChengXY()
{
f[0][0]=0;f[0][1]=1;f[0][2]=0;
f[1][0]=1;f[1][1]=0;f[1][2]=0;
f[2][0]=0;f[2][1]=0;f[2][2]=1;
}
void Cuoqie(double a,double b)
{
f[0][0]=1;f[0][1]=b;f[0][2]=1;
f[1][0]=a;f[1][1]=1;f[1][2]=0;
f[2][0]=0;f[2][1]=0;f[2][2]=1;
}
void bili(double a,double b)
{
f[0][0]=a;f[0][1]=0;f[0][2]=0;
f[1][0]=0;f[1][1]=b;f[1][2]=0;
f[2][0]=0;f[2][1]=0;f[2][2]=1;
}
double GetX(double x,double y,double d)
{
xx=x*f[0][0]+y*f[1][0]+d*f[2][0];
return(xx);
}
double GetY(double x,double y,double d)
{
yy=x*f[0][1]+y*f[1][1]+d*f[2][1];
return(yy);
}
void main()
{
int drive=DETECT,mode;
static double x1[]={25,25,45,45,65,65,85,85,25};
static double y1[]={75,55,55,35,35,55,55,75,75};
static double x2[9],y2[9];
int i;
double x,y,xx,yy,yt;
initgraph(&drive,&mode,"");
xmax=getmaxx();ymax=getmaxy();
setcolor(YELLOW);
axis();
for(i=0;i<8;i++)
{
line(scx(x1[i]),scy(y1[i]),scx(x1[i+1]),scy(y1[i+1]));
}
getch();
x=80,y=-150;
PingYi(x,y);
setcolor(WHITE);
for(i=0;i<=8;i++)
{
x2[i]=GetX(x1[i],y1[i],1);
y2[i]=GetY(x1[i],y1[i],1);
}
yt=scy(y2[0])+10;
for(i=0;i<8;i++)
{
line(scx(x2[i]),scy(y2[i]),scx(x2[i+1]),scy(y2[i+1]));
}
outtextxy(scx(x2[0]),yt,"pingyi x=80,y=-150");
getch();
XuanZhuan(+90);
setcolor(RED);
for(i=0;i<=8;i++)
{
x2[i]=GetX(x1[i],y1[i],1);
y2[i]=GetY(x1[i],y1[i],1);
}
yt=scy(y2[0])+10;
for(i=0;i<8;i++)
{
line(scx(x2[i]),scy(y2[i]),scx(x2[i+1]),scy(y2[i+1]));
}
outtextxy(scx(x2[0]),yt,"XuanZhuan +90");
getch();
DuiChengXY();
setcolor(GREEN);
for(i=0;i<=8;i++)
{
x2[i]=GetX(x1[i],y1[i],1);
y2[i]=GetY(x1[i],y1[i],1);
}
yt=scy(y2[0])+10;
for(i=0;i<8;i++)
{
line(scx(x2[i]),scy(y2[i]),scx(x2[i+1])
,scy(y2[i+1]));
}
outtextxy(scx(x2[0]),yt,"DuiCheng X=Y");
getch();
Cuoqie(-3,-3);
setcolor(CYAN);
for(i=0;i<=8;i++)
{