计算机图形学CohenSutherland直线裁剪算法源码c
Cohen-Sutherland 直线段裁减算法实验报告实验现象:核心代码:Cohen-Sutherland 直线段裁减算法:void CLineClippingView::OnSutherlandID() 版权所有 赵才{// TODO: Add your command handler code hereCDC* pDC=GetDC();CPen newpen(PS_SOLID,1,RGB(255,255,0));CPen *old=pDC-SelectObject(// RedrawWindow();//绘制 N 条直线段;// pDC-MoveTo(ptset[i]);// pDC-LineTo(ptset[i+1]);int i=0;while(iMoveTo(ptset[i]);pDC-LineTo(ptset[i+1]);i+=2;continue;}else{if((code1 continue;}else{if(code1==0){int tx,ty,ct;ct=code1;code1=code2;code2=ct;tx=ptset[i].x;ty=ptset[i].y;ptset[i].x= ptset[i+1].x;ptset[i].y= ptset[i+1].y;ptset[i+1].x=tx;ptset[i+1].y=ty;// pDC-MoveTo(ptset[i]);// pDC-LineTo(ptset[i+1]);}float k=float(ptset[i+1].y-ptset[i].y)/float(ptset[i+1].x-ptset[i].x);if(code1 ptset[i].x=XL;continue;}if(code1 ptset[i].x=XR;continue;} if(code1 ptset[i].y=YT;continue;} if(code1 ptset[i].y=YB;continue;} }} }}int encode(int x,int y) //确定端点编码{ int c=0;if(xXR) c|=RIGHT;if(yYB) c|=BOTTOM;if(yYT) c|=TOP;return c;}实验心得:注意运算符的优先级,勤加括号