还剩2页未读,继续阅读
文本内容:
奸需机囹形老实险想告花算机囹形学实验板告姓名徐沛华班级1011学号20101851成绩实验名称图形裁剪算法
1.理解区域码region Code,RC;实验目的
2.设计Cohen-Sutherland直线裁剪算法
3.编程实现Cohen-Sutherland直线裁剪算法算法分析Cohen-Sutherland线段裁剪算法也称之为编码算法,第一步判断线段两端是否都位于窗口实验步骤内,如果是,则线段完全可见;否则进入第二步,判断线段是否为显然不可见,即线段的两端点均落在窗口某边所在直线的外侧,如果是,则裁减结束;否则进入第三步,求线段与窗口边延长线的交点,这个交点将线段分为两段,其中一段显然不可见,丢弃对余下的另一段重新进行第一步,第二步判断,直至结束整个裁减的过程可以看作一个丢弃的过程情况1内侧情况3情况4ii、算法程序//Cohen-Sutherland线段裁剪算法void CohenSutherCDC*pDC,int xl,int yl,int x2,int y2int x,y;int codel,code2,code;int XL=50,YT=100,XR=500,YB=500;codel=encodexl,yl;code2=encodex2,y2;CPen penPS_SOLID,2,RGB0,0,255;pDC-SelectObjectpen;whilecode1!=0||code2!=0//不完全在区域内ifcode1code2!=0xl=0,;yi=ox2=0,;y2=obreak;code=codel;ifcode1==0code=codel;ifcodel==0code=code2;ifcodeLEFT!=0//左边交点x=XL;y=yl+y2-yl*XL-xl/x2-xl;else ifcodeRIGHT!=0〃右边交点x=XR;y=yl+y2-yl*XR-xl/x2-xl;else ifcodeBOTTOM!=0〃下边交点y=YB;x=xl+x2-xl*YB-yl/y2-yl;else ifcodeTOP!=0〃上边交点;y=YTx=xl+x2-xl*YT-yl/y2-yl;ifcode==codel;xl=Xyl=y;codel=encodex,y;elsex2=x;y2=y;code2=encodex,y;一pDC-MoveTointx1,inty1;//系统画线函数DC-LineTointx2,inty2;系统画线函数P//OnLButtonUpUINT nFlags,CPoint pointcase4:CohenSutherpDC,m_nPointl.x,m_nPointl.y,m_nPoint
2.x,m_nPoint
2.y;break;CohenSutherpDC,m_nPointl.x,m_nPointl.y,m_nPoint
2.x,m_nPoint
2.y;break;iii、编译、运行。