裁剪:确定图形中哪些部分落在显示区之内,哪些落在显示区之外,以便只显示落在显示区内的那部分图形。这个选择过程称为裁剪。

图形裁剪算法,直接影响图形系统的效率。
对于每条线段P1P2分为三种情况处理:
为了使计算机能够快速的判断一条线段与窗口属于何种关系,采用如下编码方法:把窗口的边界延长成直线,窗口平台就分成9个分区,每个区设定一个4位的编码与之对应。
平面上每一条直线的端点根据其所在的区域都可定义出两个编码。

编码(以二进制形式自右向左给出)的意义如下:

裁剪一条线段时,先求出端点p1和p2的编码code1和code2:
编码中对应位为1的边。
// 与左边界相交
if (LEFT & code != 0) {
// 横坐标是左边界的位置
x = XL;
// 计算出y的位置
y = y1 + (y2 - y1) * (XL - x1) / (x2 - x1);
} else if (RIGHT & code != 0) {
x = XR;
y = y1 + (y2 - y1) * (XR - x1) / (x2 - x1);
} else if (BOTTOM & code != 0) {
y = YB;
x = x1 + (x2 - x1) * (YB - y1) / (y2 - y1);
} else if (TOP & code != 0) {
y = YT;
x = x1 + (x2 - x1) * (YT - y1) / (y2 - y1);
}
原文:https://www.cnblogs.com/iamfatotaku/p/12496937.html