计算机图形学实验报告-Cohen-Sutherland线裁剪算法.doc

计算机图形学实验报告-Cohen-Sutherland线裁剪算法.doc

ID:57429353

大小:37.00 KB

页数:5页

时间:2020-08-17

计算机图形学实验报告-Cohen-Sutherland线裁剪算法.doc_第1页
计算机图形学实验报告-Cohen-Sutherland线裁剪算法.doc_第2页
计算机图形学实验报告-Cohen-Sutherland线裁剪算法.doc_第3页
计算机图形学实验报告-Cohen-Sutherland线裁剪算法.doc_第4页
计算机图形学实验报告-Cohen-Sutherland线裁剪算法.doc_第5页
资源描述:

《计算机图形学实验报告-Cohen-Sutherland线裁剪算法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、班级R数学111大连交通大学姓名实验报告同组人课程名称:计算机图形学成绩实验名称:Cohen-Sutherland线裁剪算法指导老师实验目的、要求:通过上机实践,更好地掌握Cohen-Sutherland线裁剪算法实验仪器:PC机、VC6.0实验步骤、内容:菜单消息响应函数(注意:绿色背景色字体的代码在实验报告中不用写)辅助函数代码:#includeinlineintround(constfloata){returnint(a+0.5);}//取整voidDDAline(intx0,inty0,intxEnd,intyEnd,CDC*pDC)//DDA画线,用于裁

2、剪算法中线输出{intdx=xEnd-x0,dy=yEnd-y0,steps,k;floatxIncrement,yIncrement,x=x0,y=y0;if(fabs(dx)>fabs(dy))steps=fabs(dx);elsesteps=fabs(dy);xIncrement=float(dx)/float(steps);yIncrement=float(dy)/float(steps);pDC->SetPixel(round(x),round(y),RGB(255,0,0));for(k=0;k

3、nt;pDC->SetPixel(round(x),round(y),RGB(255,0,0));}}//*************************************************//裁减函数以下是线裁剪算法classwcPt2D{public:intx,y;};//定义两全局变量constintwinLeftBitCode=1;//(1相当二进制001)常量定义constintwinRightBitCode=2;//(2相当二进制0010)constintwinBottomBitCode=4;//(4相当二进制0100)constintwinTopBit

4、Code=8;//(8相当二进制1000)//inlineintround(constfloata){returnint(a+0.5);}inlineintinside(intcode){returnint(!code);}//两区域码为假,在裁剪窗内部inlineintreject(intcode1,intcode2)//与运算为真,线在裁剪窗外部{returnint(code1&code2);}//与运算inlineintaccept(intcode1,intcode2)//或运算为假,在裁剪窗内部{returnint(!(code1

5、code2));}//或运算intenc

6、ode(wcPt2Dpt,wcPt2DwinMin,wcPt2DwinMax)//确定端点区域码{intcode=0;if(pt.x

7、winLeftBitCode;if(pt.x>winMax.x)code=code

8、winRightBitCode;//或运算,能使某位有一,就使四位相应位变一。if(pt.y

9、winBottomBitCode;if(pt.y>winMax.y)code=code

10、winTopBitCode;return(code);}voidswapPts(wcPt2D*p1,wcPt2

11、D*p2){wcPt2Dtmp;tmp=*p1;*p1=*p2;*p2=tmp;}voidswapCodes(int*c1,int*c2){inttmp;tmp=*c1;*c1=*c2;*c2=tmp;}消息响应函数代码:voidCClipView::OnCohen(){CDC*pDC=GetDC();intcode1,code2;intdone=false,plotLine=false;floatm;wcPt2Dp1,p2,winMin,winMax;p1.x=80,p1.y=100;p2.x=300,p2.y=450;//用于裁剪的线段端点坐标winMin.x=80,winM

12、in.y=100;//裁剪窗口坐标winMax.x=280,winMax.y=320;DDAline(winMin.x,winMin.y,winMax.x,winMin.y,pDC);//画裁剪窗口DDAline(winMax.x,winMin.y,winMax.x,winMax.y,pDC);DDAline(winMax.x,winMax.y,winMin.x,winMax.y,pDC);DDAline(winMin.x,winMax.y,winMin.x,winMin.y,p

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

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

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