DAA算法:(直线)条件是:1、端点坐标:P0(x0,y0)P1(x1,y1)2、斜率:m=Δy/Δx,Δx=x1-x0Δy=y1-y03、直线方程:y=m·x+B,01交换x和y的位置2、m<0步长dx或dy取-1不足:取证操作和浮点运算仍十分耗时Bresenham画线算法:(圆和曲线)基本原理:从给定线段的左端点开始,逐步处理每个后继列,并在其扫描线y值最接近线段的像素上绘出一点。算法分析:在取样位置xk+1,使用dlower,dupper来表示两个像素与数学路径上的垂直偏移。y=m(xk+1)+b,dlower=y-yk=m(xk+1)+b-yk,dupper=(yk+1)-y=yk+1-m(xk+1)-b决策函数:pk=Δx(dlower-dupper)=2Δy·xk-2Δx·yk+c,pk+1-pk=2Δy·(xk+1-xk)-2Δx·(yk+1-yk)pk+1=pk+2Δy-2Δx·(yk+1-yk){yk+1-yk=0或1}p0=2Δy-Δx|m|<1时的算法流程:1、输入线段的两个端点,将左端点存储在(x0,y0)中2、将(x0,y0)装入帧缓存,画出第一个点3、计算常量Δx、Δy、2Δy、2Δy-2Δx,并得到决策函数的第一个值4、从k=0开始,在沿线路径的每个xk处,进行决策函数检测5、重复步骤4,共Δx−1次中点画圆:算法分析:采用圆函数决策函数:f∘(x,y)=x2+y2−r2pk=f∘(xk+1,yk−12),两个候选像素的中点,pk<0时取yk,反之取yk-1pk+1=pk+2(xk+1)+(yk+12−yk2)−(yk+1−yk)+1,yk+1是yk(pk<0时)或者yk-1,增量是2xk+1+1或者2xk+1+1-2yk+1p0=fcirc(1,r−12)=54−r算法步骤:1、输入圆半径和圆心,并得到圆周(圆心在原点)上的第一个点2、计算决策函数的第一个值3、在每个xk位置,完成决策函数测试4、确定在其他七个八分圆中的对称点5、将每个计算出的像素位置移动到圆心在(xc,yc)的圆路径上,并画坐标值6、重复步骤3~5,直至x>=yBezier曲线:N次Bezier曲线:R(t)=∑i=0nRiBi,n(t),0≤t≤1Bernstein基函数{Bi,n(t)}为:Bi,n(t)=Cni(1−t)n−iti,Cni=n!i!(n−i)!曲线性质:1、端点插值:R(0)=R0,R(1)=Rn2、端点切向:R'(0)=n(R1−R0),R'(1)=n(Rn−Rn−1)3、对称性:∑iRn−iBi,n(t)=∑iRiBi,n(t),曲线的控制顶点的几何地位是对称的4、凸包性:Bezier曲线位于控制多边形的凸包内5、几何不变性:Bezier曲线的形状仅与控制多边形有关,与坐标系无关不足:1、整体性质:当移动曲线的一个控制定点时,整条曲线的形状都会发生改变2、表示复杂形状时,需要将更多条Bezier曲线光滑的拼接起来Cohen-Sutherland算法:通过初试测试来减少求交计算,从而提高效率特点:对显然不可见的线段快速判别,可直接推广到三维区域编码:用窗口四边所在的直线将整个平面分成9个区域,每个区域赋于一个四位的编码CtCbCrClCt={10当y>ymaxelse,Cb={10当yxmaxelse,Cl={10当x