- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
西安交大计算机图形学实验报告
《计算机图形学课内实验》实验报告班级:姓名: 学号:日期:2016.10.29要 求1.任选四个实验(直线的DDA算法、直线的Bresenham画线算法、中点圆算法、中点椭圆算法)之一来写。2.实验报告必须上交书面形式(打印好),11月8日前以班级为单位交到西一楼820房间。一、实验目的及要求1.1 实验目的:通过上机编程,实践计算机图形学课上所讲解的各种算法。完成基本的椭圆的绘制,进一步熟悉课上所讲解的算法——中点椭圆算法。1.2 实验要求:以绘图区域中心为(0,0)点。要求能够输入任意椭圆中心坐标()和参数和的值。二、实验环境VS2010、MFC、C三、实验内容3.1上机实践准备由于实验要求实现中点椭圆算法且最好能有图形化界面进行所需的显示,所以我决定采用C语言进行算法的编程,然后有MFC实现交互式界面。首先,在VS2010中建立一个MFC工程和一个Win32控制台程序工程。3.2 设定画图窗口的坐标原点由于计算机默认左上角为坐标原点(0,0),这样的设定不符合我们实验中对原点的要求,因此需要编写相关的函数对原点进行平移,使其恰好位于屏幕的正中央。int transx(int x){return(x+325);}int transy(int y){return(225-y);}这两个函数实现的功能就是完成坐标的平移,使屏幕上显示的坐标系和我们日常用的坐标系一致。3.3 建立坐标系的建立接下来,按照调整后的坐标系,编写程序绘制坐标系。建立后的坐标系如下图所示。3.4 基本算法的实现在建立完坐标系之后,就可以根据课上所学的中点椭圆算法,编程实现在坐标系中绘制任意的椭圆。详细描述见第四节。3.5 对程序的修改在第一次进行测试后,我发现只要是椭圆的长轴半径和短轴半径过大就会出现一定的失真,这是由于数据类型的设置不合适造成溢出而产生的。如下图所示为了改正这个错误,我重新调整了数据类型,选择用long型去存储数据。四、数据结构和算法描述4.1 中点椭圆算法的描述首先在程序中输入和,并且得到椭圆(假设中心在原点)上的第一个点:设定算法中的决策参数为:计算区域1中决策参数的初始值:在区域1中的每一个位置,从开始,完成下列测试:如果,沿中心在的椭圆的下一个点为,并且否则,沿椭圆的下一个点为,并且并且直到 使用区域1中计算的最后点来计算区域2中参数的初始值:在区域2的每个位置处,从开始,完成下列测试:如果,沿中心在的椭圆的下一个点为,并且否则,沿椭圆的下一个点为,并且使用与区域1中相同的和增量进行计算,直到。 根据椭圆的中心坐标确定其他三个象限中的对称点。 将计算出的每个像素位置进行平移得到实际的轨迹点。在程序中绘制出实际的点4.2数据结构的使用在本次实验中,并没有使用特殊的数据结构,主要使用最多的就是数组,用来存储点坐标的信息。五、调试过程及实验结果5.1实验结果截图此图为程序开始运行的MFC页面程序正在绘制椭圆中心在原点,长轴为100,短轴为60的椭圆:完成绘制后的结果:测试绘制椭圆中心不在原点的椭圆,基本满足要求。测试程序绘制竖椭圆,基本满足要求。六、总结通过对上机实践的结果进行分析,可以发现所编写的程序基本达到了该实验的要求,能够输入任意椭圆中心坐标()和参数和的值,然后进行绘制。但是由于屏幕大小所限制,我的坐标系的坐标范围只是[-325,325],[-225,225],在这种情况下,并不能测试更大坐标情况下该程序的正确性,所以仍然存在可以改进的空间。总体上基本完成了实验的要求。通过本次上机实践,我对杨老师课上所讲的算法有了更深一步的了解,更加熟悉了中点椭圆算法,并在实现这一算法的过程中发现了一些自己在学习过程中没有考虑的问题,尝试着自己去解决,使自己的编程能力得到了提升。七、附录(源程序清单)中点椭圆算法实现的代码:#include stdafx.h#include math.h#include Windows.h#include stdlib.h#include stdio.hint transx(int x){return(x+325);}int transy(int y){return(225-y);}void xy(){HWNDhWnd=GetConsoleWindow();//获得控制台窗口的句柄à HDChDC=GetWindowDC(hWnd); float x_x=1000,y_x=225,k,x_y=325,y_y=1000; // 设置坐标原点为(325,225)SetPixel(hDC,x_x,y_x,RGB(255,0,0));for(k=0;k1000;k++){x_x--;SetPixel(hDC,x_x,y_x,RGB(40,40,40));}for(k=0;k1000;k++){y_y--;Set
您可能关注的文档
最近下载
- 《新时代职业英语》教学资源_传媒英语_Unit_6_.pptx VIP
- 中医临床执业医师考试题及答案2025版.docx VIP
- 超声中信号处理.ppt VIP
- 《新时代职业英语》教学资源_传媒英语_Unit_7_.pptx VIP
- 部编人教版道德与法治五年级上册《全册课件》.pptx
- 《新时代职业英语》教学资源_传媒英语_Unit_9.pptx VIP
- 宝钢质量管理经验.doc VIP
- 勿忘历史,珍爱和平——抗战胜利80周年主题班会-2025-2026学年初中主题班会优质课件.pptx VIP
- Kuka控制系统 KR C5安装指南.pdf VIP
- 学习2025年《初中初三开学第一课》.pptx VIP
文档评论(0)