图形学算法设计和流程图ppt课件.ppt
《图形学算法设计和流程图ppt课件.ppt》由会员分享,可在线阅读,更多相关《图形学算法设计和流程图ppt课件.ppt(22页珍藏版)》请在三一办公上搜索。
1、DDA算法设计,A、数据结构设计函数定义:DDA算法函数:void CTestView:DDALine(int xa,int ya,int xb,int yb)方法调用函数:void CTestView :OnDDALineFunc1()鼠标响应函数:void CTestView :OnDDALineMouse1()鼠标按下事件:void CTestView :OnLButtonDown(UINT nFlags, CPoint point) 鼠标抬起事件:void CTestView :OnLButtonUp(UINT nFlags, CPoint point)B、核心算法设计DDA算法:设直
2、线起点(x0,y0),终点(x1,y1),k为直线斜率,因有直线公式为y=kx+b,则有斜率k=(y1-y0)/(x1-x0);当|k|=1时,y坐标:yi+1=yi+1,x坐标:xi+1=xi+1/k;当|k|1时,y坐标:yi+1=yi+k,x坐标:xi+1=xi+1。,DDA算法(1)输入,DDA算法(2)处理,DDA算法(3)输出,DDA算法,void CTestView:OnDDALineFunc1()/调用DDALine函数CTestView:DDALine(50,50,150,200);/起点(50,50),终点(150,200)void CTestView:OnDDALineM
3、ouse1() /鼠标响应调用DDALine函数flag=5;void CTestView:OnLButtonDown(UINT nFlags, CPoint point) /鼠标按下事件bx=point.x; /获取鼠标按下时的横坐标by=point.y; /获取鼠标按下时的横坐标CView:OnLButtonDown(nFlags, point);void CTestView:OnLButtonUp(UINT nFlags, CPoint point)/鼠标抬起事件CClientDC dc(this);if(flag=5)CTestView:DDALine(bx,by,point.x,po
4、int.y); /鼠标响应调用DDALine函数CView:OnLButtonUp(nFlags, point);,DDA算法,void CTestView:DDALine(int xa,int ya,int xb,int yb) /DDALine函数算法CClientDC dc(this);float x,y,k,dx,dy,temp;if(xa=xb)/当xa=xb时,k=0,直线垂直于y轴for(y=ya;y=yb;y+)dc.SetPixel(xa,y,RGB(255,0,0);else/当xa!=xb时,计算斜率k,判断绝对值值域dx=(float)(xb-xa);dy=(float
5、)(yb-ya);k=dy/dx;/求斜率,DDA算法,if(xaxb) if(xaxb)/确保直线从左向右画temp=xa;xa=xb;xb=temp;temp=ya;ya=yb;yb=temp;y=ya;for(x=xa;x=1)/判断k的绝对值,|k|=1时执行if(yayb)/确保直线从左向右画temp=xa;xa=xb;xb=temp;temp=ya;ya=yb;yb=temp;x=xa;for(y=ya;y=yb;y+)/循环yi+1=yi+1dc.SetPixel(int)(x+0.5),y,RGB(255,0,0);/画点x=x+1/k; ,中点画圆算法,A.数据结构设计:函数
6、定义:中点画圆算法函数:void CTestView:midpointcircle(int xa,int ya,int xb,int yb)鼠标按下事件:void CTestView :OnLButtonDown(UINT nFlags, CPoint point) 鼠标抬起事件:void CTestView :OnLButtonUp(UINT nFlags, CPoint point)圆心在原点中点画圆事件:void CTestView :Onzero1()圆心在任意点中点画圆事件:void CTestView :Onanypoint1()B.中点画圆算法设计: 函数为F(x,y)=x2+y
7、2-r2的构造圆,半径r等于鼠标响应事件得到的亮点坐标的距离,即r=sqrt(xb-xa)*(xb-xa)+(yb-ya)*(yb-ya)。 设d=F(x,y),判断d的符号,d=0的M点在圆上,d0的M点在圆外,d=0时,d更新为d+2x+3,(x,y)更新为(x+1,y);当d0时,d更新为d+2*(x-y)+5,(x,y)更新为(x+1,y+1)。 当xy时,重复计算绘制点。,中点画圆算法-流程图,中点画圆算法-1,void CTestView :midpointcircle(int xa,int ya,int xb,int yb)CClientDC dc(this);int fzbj=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图形学 算法 设计 流程图 ppt 课件
链接地址:https://www.31ppt.com/p-1407033.html