计算机图形学图形变换代码,计算机图形学5中图形变换c语言代码

#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++)

{

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值