欢迎来到天天文库
浏览记录
ID:14441377
大小:176.00 KB
页数:8页
时间:2018-07-28
《计算机图形学投影变换》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、计算机图形学实验报告实验三三维图形的投影变换学生姓名专业、班级指导教师成绩电子与信息工程系2010年11月6日一、实验目的:绘制三维物体的轴测投影图和一点透视图,在程序中给定控制多面体的顶点坐标及点线信息。视点固定在z轴某点上,输入物体的旋转角度及平移量。正轴测投影图和一点透视图。二、题目:三维图象的基本变换三、设计思想:因为电脑显示的是2维持坐标图象,所以在设计时要将三维的图象坐标转换成电脑能显示的二维持坐标图,然后根据图象的基本变换矩阵计算出变换后的坐标点,最后绘制出图象变换效果。四、原程序:CPointdian22[8];//六面体的8个2维坐标点CPointdian[8];floatc
2、oordinate2[8][3];floatcoordinate3[8][3]六面体的8个3维坐标点Voiddraw6angle()//绘制一个六面方体。dc.MoveTo(0,0);//yuandianzuobiaodian(400,400)dc.LineTo(400,0);//x//绘制一x轴,Y,Z轴dc.MoveTo(0,0);dc.LineTo(0,400);//ydc.MoveTo(50,50);//zdc.LineTo(-200,-200);dc.MoveTo(dian[0]);//0-1dc.LineTo(dian[1]);dc.MoveTo(dian[0]);//0-3dc.
3、LineTo(dian[3]);dc.MoveTo(dian[0]);//0-7dc.LineTo(dian[7]);dc.MoveTo(dian[4]);//4-3dc.LineTo(dian[3]);dc.MoveTo(dian[4]);//4-5dc.LineTo(dian[5]);dc.MoveTo(dian[4]);//4-7dc.LineTo(dian[7]);dc.MoveTo(dian[6]);//6-5dc.LineTo(dian[5]);dc.MoveTo(dian[6]);//6-7dc.LineTo(dian[7]);dc.MoveTo(dian[6]);//6-1dc
4、.LineTo(dian[1]);dc.MoveTo(dian[2]);//2-1dc.LineTo(dian[1]);dc.MoveTo(dian[2]);//2-3dc.LineTo(dian[3]);dc.MoveTo(dian[2]);//2-5dc.LineTo(dian[5])}}voidCCBod_3DView::switch_point()//将三维坐标点转换成电脑上能表示的二维坐标点{floatcanshu=0.7071;for(inti=0;i<8;i++){dian[i].x=float(coordinate3[i][0]+float((-coordinate3[i][2
5、]*canshu)));dian[i].y=float(coordinate3[i][1]+float((-coordinate3[i][2]*canshu)));}}voidCCBod_3DView::OnMoveOnz()//图象在Z轴上的移动。{//TODO:Addyourcommandhandlercodeherefor(inti=0;i<8;i++){coordinate3[i][2]=coordinate3[i][2]+50;}this->Invalidate();}voidCCBod_3DView::OnSpinz()//Z轴上旋转{//TODO:Addyourcommandha
6、ndlercodeherefloatb=cos(0.23);floata=sin(0.23);for(inti=0;i<8;i++){coordinate3[i][0]=float(coordinate3[i][0]*b)+float(coordinate3[i][1]*(-a));coordinate3[i][1]=float(coordinate3[i][0]*a)+coordinate3[i][1]*b;}OnLarge();this->Invalidate();}voidCCBod_3DView::OnDUICHeng()//关于X对称{//TODO:Addyourcommandhan
7、dlercodeherefor(inti=0;i<8;i++){coordinate3[i][2]=-coordinate3[i][2];}this->Invalidate();}voidCCBod_3DView::OnZhengzhouce()//轴测投影图{//TODO:Addyourcommandhandlercodehereif(flage==false){flage=true;}else
此文档下载收益归作者所有