- 裁剪就是来确定
- 哪些是位于视景体内,应当被最后成图来考虑的
- 哪些是位于视景体外,不需要后续的处理了(因为不属于成图范围嘛)
线段的裁剪算法
- Cohen-Sutherlend算法
- 这是一种很巧妙的裁剪算法,运用了编码的思想
- 先考虑二维的裁剪,即一条二维的线段和一个方形的裁剪区域
- 方形的裁剪区域为
- 对于一条线段,其是由两个顶点来刻画的
- 对于每个顶点都根据其位置(x,y)进行编码
- 编码 b1b2b3b4
- 当 y > Ymax 时,b1为1,否则为0
- 当 y < Ymin 时,b2为1,否则为0
- 当 x > Xmax 时,b3为1,否则为0
- 当 x < Xmin 时,b4为1,否则为0
- 如下
- 对于线段的两个端点,分别得到了两个编码
- 均为0000,则线段必在裁剪区域内,整条线段被接受
- 仅一个为0000,则线段必然与裁剪区域有交点
- 如果另一个只有一位为1,则可以直接判断出是与哪条边界有交点,进而直接求交
- 如果有两位为1,则是与对应的两个边界其中之一有交点,但只需要先对其中一条边界所在的直线求交点,再更新编码即可 </

本文介绍了OpenGL中的裁剪算法,主要包括Cohen-Sutherland算法和Sutherland-Hodgeman算法。Cohen-Sutherland算法利用编码思想,通过判断线段端点的编码来决定线段是否在视景体内。Sutherland-Hodgeman算法则适用于多边形裁剪,通过判断线段与边界的关系计算交点,实现流水化的裁剪过程。
最低0.47元/天 解锁文章
1182

被折叠的 条评论
为什么被折叠?



