- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图形学简单总结.
DAA算法:(直线)条件是:1、端点坐标:P0(x0,y0)P1(x1,y1)2、斜率:m=Δy/Δx,Δx=x1-x0Δy=y1-y03、直线方程:y=m·x+B,0m1算法步骤:1、划分区间[x0,x1]:x0,x1,…,xn,其中xi+1=xi+12、计算纵坐标:yi+1=m·xi+1+B=m·(xi+1)+B=m·xi+B+m=yi+m3、取整:yi+1=round(yi+1)=(int)(yi+m+0.5)复杂度:加法+取整其他斜率情况:1、m1 交换x和y的位置2、m0 步长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 次中点画圆:算法分析:采用圆函数决策函数:,两个候选像素的中点,pk0时取yk,反之取yk-1,yk+1是yk(pk0时)或者yk-1,增量是2xk+1+1或者2xk+1+1-2yk+1算法步骤:1、输入圆半径和圆心,并得到圆周(圆心在原点)上的第一个点2、计算决策函数的第一个值3、在每个xk位置,完成决策函数测试4、确定在其他七个八分圆中的对称点5、将每个计算出的像素位置移动到圆心在(xc,yc)的圆路径上,并画坐标值6、重复步骤3~5,直至x=yBezier曲线:N次Bezier曲线:Bernstein基函数{Bi,n(t)}为:,曲线性质:1、端点插值:2、端点切向:,3、对称性:, 曲线的控制顶点的几何地位是对称的4、凸包性:Bezier曲线位于控制多边形的凸包内5、几何不变性:Bezier曲线的形状仅与控制多边形有关,与坐标系无关不足:1、整体性质:当移动曲线的一个控制定点时,整条曲线的形状都会发生改变2、表示复杂形状时,需要将更多条Bezier曲线光滑的拼接起来Cohen-Sutherland算法:通过初试测试来减少求交计算,从而提高效率特点:对显然不可见的线段快速判别,可直接推广到三维区域编码:用窗口四边所在的直线将整个平面分成9个区域,每个区域赋于一个四位的编码CtCbCrCl ,,端点编码:定义为它所在区域的编码结论:当线段的两个端点的编码的逻辑“与”非零时,线段为显然不可见的;对于不能判断完全在窗口外或窗口内的线段,则要测试其与窗口的交点方法:线段与裁剪边界逐个求交线段与裁剪边界的交点计算可使用斜率截矩式方程:,x=xwmin;xwmax 垂直边界步骤:1、判别线段两段点是否都落在窗口内,如果是,则线段完全可见;否则进入第二步2、判别线段是否为显然不可见,如果是,则裁剪结束;否则进行第三步3、求线段与窗口边延长线的交点,这个交点将线段分为两段,其中一段显然不可见,丢弃。对余下的另一端重新进行第一步、第二步判断算法缺点:裁剪一条直线仍然需要多次求交Nicholl-Lee-Nicholl算法:在求交前进行更多的区域测试,从而减少求交运算特点:仅用于二维裁剪步骤:1、窗口四边所在的直线将二维平面划分成9个区域,假定p0落在区域0、4、52、从p0点向窗口的四个角点发出射线,这四条射线和窗口的四条边所在的直线一起将二维平面划分为更多的小区域3、确定p0所在的区域(方法:比较该线段的斜率和裁剪区域边界的斜率)4、求交点,确定p0p1的可见部分梁友栋-Barsky算法:直线的参数形式:,,,其中,直线在裁剪窗口内的条件:,改写上式:u·pk≤qk,k=1,2,3,4p1=-Δx,q1=x0-xwwmin;p2=Δx,q2=xwwmax-x0;p3=-Δy,q3=y0-ywwmin; p4=Δy,q4=ywwmax-y0当pk=0时,(k=1,2,3,4对应于左、右、下、上边界),如果还满足qk>0,则线段完全在边界之外,舍弃线段当qk≥0时,线段位于平行边界内当pk<0时,线段从裁剪边界延长线的外部延
文档评论(0)