直线中点bresenham算法

直线中点bresenham算法

ID:11880518

大小:168.00 KB

页数:0页

时间:2018-07-14

直线中点bresenham算法_第页
预览图正在加载中,预计需要20秒,请耐心等待
资源描述:

《直线中点bresenham算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、学生:学号:班级:网络实验时间:2012年12月19日报告时间:2012年12月20日系别:计算机系学院:电气与信息工程学院实验:直线中点Bresenham算法一:原理1、输入直线的两端点p0(x0,y0)和p1(x1,y1)。2、计算初始值△x,△y,d=△x-2△y,x=x0,y=y0。3、绘制点(x,y)判断d的符号:若d<0,则(x,y)更新为(x+1,y+1),d更新为d+2△x-2△y;否则(x,y)更新为(x+1,y),d更新为d-2△y。4、当直线没有画完时,重复步骤3,否则结束。二:伪代码voi

2、dCTestView::myDrawLine(){CClientDCdc(this);dc.MoveTo(20,30);dc.LineTo(200,300);}voidCTestView::OnMydrawline(){//TODO:AddyourcommandhandlercodeheremyDrawLine();}三:截图实验:多边形有效边表填充算法一:原理多边形的有效边表填充算法的基本原理是按照扫描线从小到大的移动顺序,计算当前扫描线与多边形各边的交点,然后把这些交点按x值递减的顺序进行排序、配对,以确定填

3、充区间,然后用指定颜色点亮填充区间内的所有像素,即完成填充工作。1、定义多边形2、初始化桶3、建立边表4、多边形填充1)对每一条扫描线,将该扫描线上的边结点插入到临时AET表中,HeadE.2)对临时AET表排序,按照x递增的顺序存放。3)根据AET表中边表结点的ymax抛弃扫描完的边结点,即ymax>=scanline4)扫描AET表,填充扫描线和多边形相交的区间。二:伪代码classCscanfillView:publicCView{protected://仅从序列化创建CscanfillView();DEC

4、LARE_DYNCREATE(CscanfillView)//属性public:CscanfillDoc*GetDocument()const;//操作public:voidPolygonFill();//上闭下开填充多边形voidCreatBucket();//建立桶节点voidEt();//构造边表voidAddEdge(AET*);//将边插入AET表voidEdgeOrder();//对AET表进行排序//重写public:virtualvoidOnDraw(CDC*pDC);//重写以绘制该视图virt

5、ualBOOLPreCreateWindow(CREATESTRUCT&cs);protected:virtualBOOLOnPreparePrinting(CPrintInfo*pInfo);virtualvoidOnBeginPrinting(CDC*pDC,CPrintInfo*pInfo);virtualvoidOnEndPrinting(CDC*pDC,CPrintInfo*pInfo);//实现public:virtual~CscanfillView();#ifdef_DEBUGvirtualvoid

6、AssertValid()const;virtualvoidDump(CDumpContext&dc)const;#endifprotected:COLORREFGetColor;//调色板CPointPoint[7];//定义多边形Bucket*HeadB,*CurrentB;//桶的头结点和当前节点AETE[Number],*HeadE,*CurrentE,*T1,*T2;//有效边表的节点//生成的消息映射函数protected:DECLARE_MESSAGE_MAP()public:afx_msgvoid

7、OnMenuAET();};#ifndef_DEBUG//scanfillView.cpp中的调试版本inlineCscanfillDoc*CscanfillView::GetDocument()const{returnreinterpret_cast(m_pDocument);}#endif三:截图实验:梁友栋-Barsky直线裁剪算法一:原理梁友栋-Barsky算法进行线段裁剪的步骤(1)输入直线段的两端点坐标以及窗口的四条边界坐标。(2)若Δx=0则p1=p2=0。进一步判断

8、是否满足q1<0或q2<0若满足则该直线段不在窗口内转(7)。否则满足q1>0且q2>0则进一步计算u1和u2。转(5)。(3)若Δy=0则p3=p4=0。进一步判断是否满足q3<0或q4<0若满足则该直线段不在窗口内转(7)。否则满足q1>0且q2>0则进一步计算u1和u2。转(5)。(4)若上述两条均不满足,则有pk≠0(k=1,2,3,4)。此

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。