图形学算法设计和流程图.pptx

上传人:莉*** 文档编号:77573705 上传时间:2023-03-15 格式:PPTX 页数:22 大小:305.72KB
返回 下载 相关 举报
图形学算法设计和流程图.pptx_第1页
第1页 / 共22页
图形学算法设计和流程图.pptx_第2页
第2页 / 共22页
点击查看更多>>
资源描述

《图形学算法设计和流程图.pptx》由会员分享,可在线阅读,更多相关《图形学算法设计和流程图.pptx(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、DDA算法(1)输入第1页/共22页DDA算法(2)处理第2页/共22页DDA算法(3)输出第3页/共22页DDA算法void CTestView:OnDDALineFunc1()/调用DDALine函数CTestView:DDALine(50,50,150,200);/起点(50,50),终点(150,200)void CTestView:OnDDALineMouse1()/鼠标响应调用DDALine函数flag=5;void CTestView:OnLButtonDown(UINT nFlags,CPoint point)/鼠标按下事件bx=point.x;/获取鼠标按下时的横坐标by=p

2、oint.y;/获取鼠标按下时的横坐标CView:OnLButtonDown(nFlags,point);void CTestView:OnLButtonUp(UINT nFlags,CPoint point)/鼠标抬起事件CClientDC dc(this);if(flag=5)CTestView:DDALine(bx,by,point.x,point.y);/鼠标响应调用DDALine函数CView:OnLButtonUp(nFlags,point);第4页/共22页DDA算法void CTestView:DDALine(int xa,int ya,int xb,int yb)/DDALi

3、ne函数算法CClientDC dc(this);float x,y,k,dx,dy,temp;if(xa=xb)/当xa=xb时,k=0,直线垂直于y轴for(y=ya;yxb)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;y0的M点在圆外,d=0时,d更新为d+2x+3,(x,y)更新为(x+1

4、,y);当d0时,d更新为d+2*(x-y)+5,(x,y)更新为(x+1,y+1)。当xy时,重复计算绘制点。第7页/共22页中点画圆算法-流程图第8页/共22页中点画圆算法-1void CTestView:midpointcircle(int xa,int ya,int xb,int yb)CClientDC dc(this);int fzbj=(xb-xa)*(xb-xa)+(yb-ya)*(yb-ya);int r=int(sqrt(double)fzbj),c=0;int x,y;float d;x=0;y=r;d=1.25-r;dc.SetPixel(xa+x,ya+y,c);dc

5、.SetPixel(xa-x,ya+y,c);dc.SetPixel(xa+x,ya-y,c);dc.SetPixel(xa-x,ya-y,c);dc.SetPixel(xa+y,ya+x,c);dc.SetPixel(xa-y,ya+x,c);dc.SetPixel(xa+y,ya-x,c);dc.SetPixel(xa-y,ya+x,c);第9页/共22页中点画圆算法-2while(x=y)if(d0)d+=2*x+3;else d+=2*(x-y)+5;y-;x+;dc.SetPixel(xa+x,ya+y,c);dc.SetPixel(xa-x,ya+y,c);dc.SetPixel(

6、xa+x,ya-y,c);dc.SetPixel(xa-x,ya-y,c);dc.SetPixel(xa+y,ya+x,c);dc.SetPixel(xa-y,ya+x,c);dc.SetPixel(xa+y,ya-x,c);dc.SetPixel(xa-y,ya-x,c);void CTestView:Onzero1()flag=6;void CTestView:Onanypoint1()flag=7;第10页/共22页中点画圆算法-3void CTestView:OnLButtonDown(UINT nFlags,CPoint point)bx=point.x;by=point.y;CVi

7、ew:OnLButtonDown(nFlags,point);void CTestView:OnLButtonUp(UINT nFlags,CPoint point)CClientDC dc(this);else if(flag=6)CTestView:midpointcircle(0,0,point.x,point.y);else if(flag=7)CTestView:midpointcircle(bx,by,point.x,point.y);CView:OnLButtonUp(nFlags,point);第11页/共22页二维图形裁剪-线段裁剪计算点的code值流程图 第12页/共22页

8、二维图形裁剪-线段裁剪计算直线与边界交点流程图第13页/共22页二维图形裁剪-线段裁剪算法流程图1 第14页/共22页二维图形裁剪-线段裁剪算法流程图2第15页/共22页二维图形裁剪-线段裁剪算法流程图总第16页/共22页二维图形裁剪-1void CTestView:OnCohenSutherland1()flag=8;CClientDC dc(this);/边框dc.MoveTo(200,100);/LEFTdc.LineTo(200,400);dc.MoveTo(500,100);/RIGHTdc.LineTo(500,400);dc.MoveTo(200,100);/TOPdc.Line

9、To(500,100);dc.MoveTo(200,400);/BOTTONdc.LineTo(500,400);void CTestView:OnLButtonDown(UINT nFlags,CPoint point)bx=point.x;by=point.y;CView:OnLButtonDown(nFlags,point);第17页/共22页二维图形裁剪-1void CTestView:OnLButtonUp(UINT nFlags,CPoint point)CClientDC dc(this);if(flag=8)dc.MoveTo(bx,by);dc.LineTo(point.x,

10、point.y);ClipLine(bx,by,point.x,point.y);CView:OnLButtonUp(nFlags,point);int CTestView:encode(float x,float y)int c;c=0;if(xXR)c=c|RIGHT;if(yYB)c=c|BOTTOM;else if(yYT)c=c|TOP;return c;第18页/共22页二维图形裁剪-2void CTestView:ClipLine(float x1,float y1,float x2,float y2)CClientDC dc(this);float x,y;int code,c

11、ode1,code2;code1=encode(x1,y1);code2=encode(x2,y2);while(code1!=0|code2!=0)if(code1&code2)!=0)return;code=code1;if(code1=0)code=code2;第19页/共22页二维图形裁剪-3/当直线和左边界有交点if(LEFT&code)!=0)x=XL;y=y1+(y2-y1)*(XL-x1)/(x2-x1);/当直线和右边界有交点else if(RIGHT&code)!=0)x=XR;y=y1+(y2-y1)*(XR-x1)/(x2-x1);/当直线和底边界有交点else if(

12、BOTTOM&code)!=0)y=YB;x=x1+(x2-x1)*(YB-y1)/(y2-y1);/当直线与上边界有交点else if(TOP&code)!=0)y=YT;x=x1+(x2-x1)*(YT-y1)/(y2-y1);第20页/共22页二维图形裁剪-4 if(code=code1)x1=x;y1=y;code1=encode(x,y);elsex2=x;y2=y;code2=encode(x,y);CPen pen,*old;pen.CreatePen(0,2,RGB(255,0,0);old=dc.SelectObject(&pen);dc.MoveTo(x1,y1);dc.LineTo(x2,y2);dc.SelectObject(old);第21页/共22页感谢您的观看。第22页/共22页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁