- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机图形学实验报告
实验三 三维图形的投影变换
学生姓名
专业、班级
指导教师
成绩
电子与信息工程系
2010 年 11月 6日
实验目的:
绘制三维物体的轴测投影图和一点透视图 ,在程序中给定控制多面体的顶点坐标及点线信息。视点固定在z轴某点上,输入物体的旋转角度及平移量。正轴测投影图和一点透视图。
二、题目:
三维图象的基本变换
三、设计思想:
因为电脑显示的是2维持坐标图象,所以在设计时要将三维的图象坐标转换成电脑能显示的二维持坐标图,然后根据图象的基本变换矩阵计算出变换后的坐标点,最后绘制出图象变换效果。
四、原程序:
CPoint dian22[8];//六面体的8个2维坐标点
CPoint dian[8];
float coordinate2[8][3];
float coordinate3[8][3] 六面体的8个3维坐标点
Void draw6angle()//绘制一个六面方体。
dc.MoveTo(0,0);//yuan dian zuo biao dian(400,400)
dc.LineTo(400,0);//x //绘制一x轴,Y,Z轴
dc.MoveTo(0,0);
dc.LineTo(0,400);//y
dc.MoveTo(50,50);//z
dc.LineTo(-200,-200);
dc.MoveTo(dian[0]);//0-1
dc.LineTo(dian[1]);
dc.MoveTo(dian[0]);//0-3
dc.LineTo(dian[3]);
dc.MoveTo(dian[0]);//0-7
dc.LineTo(dian[7]);
dc.MoveTo(dian[4]);//4-3
dc.LineTo(dian[3]);
dc.MoveTo(dian[4]);//4-5
dc.LineTo(dian[5]);
dc.MoveTo(dian[4]);//4-7
dc.LineTo(dian[7]);
dc.MoveTo(dian[6]);//6-5
dc.LineTo(dian[5]);
dc.MoveTo(dian[6]);//6-7
dc.LineTo(dian[7]);
dc.MoveTo(dian[6]);//6-1
dc.LineTo(dian[1]);
dc.MoveTo(dian[2]);//2-1
dc.LineTo(dian[1]);
dc.MoveTo(dian[2]);//2-3
dc.LineTo(dian[3]);
dc.MoveTo(dian[2]);//2-5
dc.LineTo(dian[5])}
}
void CCBod_3DView::switch_point()//将三维坐标点转换成电脑上能表示的二维坐标点
{ float canshu=0.7071;
for(int i=0;i8;i++)
{ dian[i].x=float (coordinate3[i][0]+float((-coordinate3[i][2]*canshu)));
dian[i].y=float (coordinate3[i][1]+float((-coordinate3[i][2]*canshu)));
} }
void CCBod_3DView::OnMoveOnz() //图象在Z轴上的移动。
{
// TODO: Add your command handler code here
for(int i=0;i8;i++)
{
coordinate3[i][2]=coordinate3[i][2]+50;
}
this-Invalidate();
}
void CCBod_3DView::OnSpinz() //Z轴上旋转
{ // TODO: Add your command handler code here
float b=cos(0.23);
float a=sin(0.23);
for(int i=0;i8;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();
}
voi
文档评论(0)