1、学 号 天 津 城 建 大 学计算机图形学实验报告实验三 三维图形的投影变换学 生 姓 名专 业 、 班 级指 导 教 师 任 丽 敏成 绩计算机与信息工程学院2013 年 月 日天津城建大学设计性实验任务书计算机与信息工程 学院 专业 班姓名 学号: 课程名称: 计算机图形学 设计题目: 三维图形的投影变换 完成期限:自 2013 年 9 月 24 日至 2013 年 10 月 8 日设计依据、要求及主要内容(可另加附页):1 设计依据:本课程设计是依据教材一书的第 4 章三维图形的投影变换为设计依据, 制作三维图形的投影变换的程序。2 设计要求:绘制三维物体的轴测投影图和一点透视图 基本要
2、求:(1) 在程序中给定控制多面体的顶点坐标及点线信息。(2) 视点固定在 z 轴某点上,输入物体的旋转角度及平移量。(3) 正轴测投影图和一点透视图。附加要求:绘制二点透视图指导教师: 任丽敏 实验目的:题目: 设计思想:原程序:#include#include float pp182; pp282;float pp82;float t44;float xx,yy;int ty84;float xs,ys,xe,ye;int i,a,j;int num122=0,1,1,2,2,3,5,6,6,7, 3,4,4,5,1,6,0,5,2,7,7,4,3,0;int p84=32,15,-8,1
3、,35,-5,-45,1,-24,18,27,1,34,0,24,1,3,50,10,1,12,-24,25,1,15,18,0,1,-15,55,0,1;main()int gd=DETECT,gm;initgraph(setbkcolor(WHITE);jbm();jbm2();ji();drawline1(460,200);jb();getch();closegraph();jbm()jbm1();for(i=0;i8;i+)ppi0=affincx(pi0,pi1,pi2);ppi1=affincz(pi0,pi1,pi2);drawline(260,160);jbm1()t00=1;
4、t01=0;t02=0;t03=0;t10=0;t11=1;t12=0;t13=0;t20=0;t21=0;t22=1;t23=0;t30=0;t31=0;t32=0;t33=1;ji()for(i=0;i8;i+)tyi0=0;tyi1=0;tyi2=-1/0.01;tyi3=1;ji1();for(i=0;i8;i+)ppi0=affincx(tyi0,tyi1,tyi2);ppi1=affincz(tyi0,tyi1,tyi2);pp2i0=affincx(tyi0,tyi1,tyi2);pp2i1=affincz(tyi0,tyi1,tyi2);drawline(200,200);ji
5、1()t00=1;t01=0;t02=0;t03=0;t10=0;t11=1;t12=0;t13=0;t20=0;t21=0;t22=1;t23=0;t30=0;t31=0;t32=0;t33=1;affincx(int x,int y,int z) xx=(x*t00+y*t10+z*t20+t30)*2;return(xx);affincz(int x,int y,int z)yy=(x*t02+y*t12+z*t22+t32)*2;return(yy);jb()jb1();for(i=0;i8;i+)ppi0=affincx(pi0,pi1,pi2);ppi1=affincz(pi0,p
6、i1,pi2);drawline(260,300);jb1()double t1,t2;t1=30.0*3.1415927/180;t2=45.0*3.1415927/180;t00=cos(t1);t01=0.0;t02=-sin(t1)*sin(t2);t03=0.0;t10=-sin(t1);t11=0.0;t12=-cos(t1)*sin(t2);t13=0.0;t20=0.0;t21=0.0;t22=cos(t2);t23=0.0;t30=0.0;t31=0.0;t32=0.0;t33=1.0;drawline1(int xc,int yc) int j,s,e;for(j=0;j8
7、;j+)xs=pp1j0; ys=pp1j1;xe=pp200; ye=pp201;setlinestyle(2,0,1);setcolor(RED);line(xc-xs,yc-ys,xc-xe,yc-ye);drawline(int xc,int yc) int j,s,e;for(j=0;j12;j+)s=numj0;e=numj1;xs=pps0; ys=pps1;xe=ppe0; ye=ppe1;setcolor(BLUE);line(xc-xs,yc-ys,xc-xe,yc-ye);jbm2()jbm1();for(i=0;i8;i+)ppi0=affincx(pi0,pi1,pi2);ppi1=affincz(pi0,pi1,pi2);pp1i0=affincx(pi0,pi1,pi2);pp1i1=affincz(pi0,pi1,pi2);drawline(460,200);运行结果:体会: