中点画椭圆法实验报告.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中点画椭圆法实验报告

一、实验目标 1.了解中点画椭圆法的基本思想; 2.掌握中点画椭圆法的基本步骤。 二、实验内容 本次实验要解决的问题主要是中点画椭圆法,椭圆中心不在原点及长轴和短轴任意长度的画椭圆问题。 原理简述:中点法依据椭圆斜率将第一像限的椭圆(b≤a)分成两部分。根据斜率变化确定步长方向:斜率绝对值小于1的区域1内x方向取单位步长;斜率绝对值大于1的区域2内y方向取单位步长。 椭圆对称性质:椭圆分别关于X轴、Y轴对称。因此在计算椭圆生成的时候,只需要计算1/4个椭圆,经过对称原理就可以实现其他3/4个椭圆的生成了,即:计算出目标点(x,y)的坐标,必然存在(x,-y)、(-x,y)(-x,-y)。此方案中采用计算第一象限中椭圆的生成,即:计算x=0到y=0的1/4的椭圆。先通过平移的方法将假设椭圆中心在坐标原点,然后计算,最后再平移到真实中心位置。 三、实验步骤 一、打开cgdemoMFC工程 1.打开Microsoft Visual Studio 2008 2.File--Open--cgdemo.sln 二、添加菜单 1.左侧视图栏中有三个视图:ClassView、ResourceView、FileView,点击 ResourceView 2.展开cgdemo,展开Menu,双击IDR_MAINFRAME 3.在右侧窗口菜单栏中找到“基本图形生成”菜单项,在该菜单项中添加“中点画圆法”,在“中点画圆法”属性框中找到ID框填:ID_LINE_ELLIPSE。 三、创建、编辑函数 1.打开cgdemoView.h头文件,在cgdemoView类枚举类型成员变量m_drawstyle中添加LINE_ELLIPSE。 2.给菜单项“中点画椭圆法”添加命令消息响应函数OnLineCircle()在该函数中添加以下程序代码。 void CcgdemoView::OnLineEllipse() { // TODO: Add your command handler code here m_drawstyle=LINE_ELLIPSE; Invalidate(true); } 3.在鼠标左键按下消息响应函数中添加当m_drawstyle为LINE_ELLIPSE时的情况,代码如下所示。 void CcgdemoView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default switch(m_drawstyle) { case LINE_DDA: case LINE_MIDPT: case LINE_ELLIPSE: } 在鼠标移动消息响应函数中添加m_drawstyle为LINE_CIRCLE时的情况,代码如下所示。 void CcgdemoView::OnMouseMove(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default switch(m_drawstyle) { case LINE_DDA: case LINE_MIDPT: case LINE_ELLIPSE: } 5.在cgdemoView.h头文件类中添加成员函数void MidpointEllipse(CDC* pDC, int x0,int y0,int x1, int y1,int color);并在cgdemoView.cpp源文件中void CcgdemoView::MidpointEllipseCDC* pDC,int x0,int y0,int x1,int y1,int color)为其添加我们编写的中点画椭圆法代码;在中点画圆法中我们要计算两点之间的距离以求椭圆的长轴和短轴,在此过程中用到了abs()函数,因此要在cgdemoView.cpp添加#include math.h头文件。 四、实验遇到的问题及其解决方法(重点) (包括在算法推导、编程、编译过程中遇到的问题、解决过程和最终解决方法)。。。 在中点画圆法程序的编写过程中在算法推导方面主要遇到的问题是:上下部分分界点的判断问题。 通过老师的讲解和同学之间的讨论以及网上资料的查找最终解决了该问题。 在算法编程过程遇到的主要问题是:原始设定椭圆圆心的坐标(0,0),我们实现的是任意椭圆圆心坐标的中点画椭圆法,对于椭圆圆心坐标的编写的过程遇到问题。 最终通过网上资料的查找解决任意椭圆圆心坐标编写的问题。 在编译过程遇到的问题:在中点画圆法中我们要计

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档