欢迎来到天天文库
浏览记录
ID:39427616
大小:52.50 KB
页数:7页
时间:2019-07-03
《计算机图形学--图形几何变换的实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验五:图形几何变换的实现班级08信计学号51姓名程芳超分数一、实验目的和要求:1、掌握二维、三维变换的数学知识、变换原理、变换种类、变换方法;2、利用TurborC实现二维、三维图形的基本变换和复合变换。二、实验内容:(1)、利用TurborC实现直线的平移变换;(2)进行三维图形旋转转换、比例变换,在屏幕上显示变换过程或变换结果。以下为程序的实现代码:(1)直线的平移变换:#include#include#includeintinitjuzhen(m)intm[3
2、][3];{inti,j;for(i=0;i<3;i++)for(j=0;j<3;j++)m[i][j]=0;for(i=0;i<3;i++)m[i][i]=1;}main(){intx0,y0,x1,y1,i,j;inta[3][3];charkey;intgraphdriver=DETECT;intgraphmode=0;initgraph(&graphdriver,&graphmode,"");cleardevice();setcolor(3);x0=250;y0=120;x1=350;y1=220;line(x0,y0
3、,x1,y1);for(;;){outtextxy(100,400,"<-:left->:right^:upv:downEsc->exit");key=getch();initjuzhen(a);switch(key)7{case75:a[2][0]=-10;break;case77:a[2][0]=10;break;case72:a[2][1]=-10;break;case80:a[2][1]=10;break;case27:exit();break;}x0=x0*a[0][0]+y0*a[1][0]+a[2][0];y0=
4、x0*a[0][1]+y0*a[1][1]+a[2][1];x1=x1*a[0][0]+y1*a[1][0]+a[2][0];y1=x1*a[0][1]+y1*a[1][1]+a[2][1];clearviewport();line(x0,y0,x1,y1);}closegraph();}运行结果为:2.三维图形旋转转换,比例变换#include#include#include#include#include#include5、.h>#defineZOOM_IN0.9#defineZOOM_OUT1.1intturn1[3];typedefstruct{floatx;floaty;floatz;}point;typedefstruct{floatx;floaty;}point2d;typedefstruct{floatx;floaty;floath;pointbiao[8];7}fanti;voidmake_box(floatx,floaty,floath,fanti*p){p->x=x;p->y=y;p->h=h;p->biao[0].x=x/2;6、p->biao[0].y=y/2;p->biao[0].z=h/2;p->biao[1].x=-x/2;p->biao[1].y=y/2;p->biao[1].z=h/2;p->biao[2].x=-x/2;p->biao[2].y=-y/2;p->biao[2].z=h/2;p->biao[3].x=x/2;p->biao[3].y=-y/2;p->biao[3].z=h/2;p->biao[4].x=x/2;p->biao[4].y=y/2;p->biao[4].z=-h/2;p->biao[5].x=-x/2;p->bi7、ao[5].y=y/2;p->biao[5].z=-h/2;p->biao[6].x=-x/2;p->biao[6].y=-y/2;p->biao[6].z=-h/2;p->biao[7].x=x/2;p->biao[7].y=-y/2;p->biao[7].z=-h/2;}voidturn2d(point*p,point2d*q){q->x=p->x+p->z*cos(0.25);q->y=p->y+p->z*sin(0.25);}voidinitm(floatmat[][4]){intcount;for(count=0;c8、ount<4;count++){mat[count][0]=0.;mat[count][1]=0.;mat[count][2]=0.;mat[count][3]=0.;mat[count][count]=1.;7}return;}voidtransform(point*p,p
5、.h>#defineZOOM_IN0.9#defineZOOM_OUT1.1intturn1[3];typedefstruct{floatx;floaty;floatz;}point;typedefstruct{floatx;floaty;}point2d;typedefstruct{floatx;floaty;floath;pointbiao[8];7}fanti;voidmake_box(floatx,floaty,floath,fanti*p){p->x=x;p->y=y;p->h=h;p->biao[0].x=x/2;
6、p->biao[0].y=y/2;p->biao[0].z=h/2;p->biao[1].x=-x/2;p->biao[1].y=y/2;p->biao[1].z=h/2;p->biao[2].x=-x/2;p->biao[2].y=-y/2;p->biao[2].z=h/2;p->biao[3].x=x/2;p->biao[3].y=-y/2;p->biao[3].z=h/2;p->biao[4].x=x/2;p->biao[4].y=y/2;p->biao[4].z=-h/2;p->biao[5].x=-x/2;p->bi
7、ao[5].y=y/2;p->biao[5].z=-h/2;p->biao[6].x=-x/2;p->biao[6].y=-y/2;p->biao[6].z=-h/2;p->biao[7].x=x/2;p->biao[7].y=-y/2;p->biao[7].z=-h/2;}voidturn2d(point*p,point2d*q){q->x=p->x+p->z*cos(0.25);q->y=p->y+p->z*sin(0.25);}voidinitm(floatmat[][4]){intcount;for(count=0;c
8、ount<4;count++){mat[count][0]=0.;mat[count][1]=0.;mat[count][2]=0.;mat[count][3]=0.;mat[count][count]=1.;7}return;}voidtransform(point*p,p
此文档下载收益归作者所有