Sutherland-Hodgeman多边形裁剪

2025 年 3 月 17 日 | 阅读 1 分钟

它通过处理多边形的边界来针对每个窗口角或边进行裁剪。首先,对整个多边形进行相对于一条边的裁剪,然后考虑生成的裁剪后的多边形,然后针对第二条边考虑多边形,依此类推,针对所有四条边。

处理时可能出现的四种情况

  1. 如果第一个顶点位于窗口外,第二个顶点位于窗口内。则将第二个顶点添加到输出列表中。也将窗口边界和多边形边(边)的交点添加到输出线中。
  2. 如果两个顶点都在窗口边界内。则仅将第二个顶点添加到输出列表中。
  3. 如果第一个顶点位于窗口内,第二个顶点位于窗口外。则将与窗口相交的边添加到输出列表中。
  4. 如果两个顶点都在窗口外,则什么也不添加到输出列表中。

下图显示了原始多边形和多边形相对于四个窗口的裁剪。

Sutherland-Hodgeman Polygon Clipping

Cohen Hodgmen 算法的缺点

此方法需要大量的内存。首先,多边形以原始形式存储。然后进行相对于左边的裁剪,并存储输出。然后进行相对于右边的裁剪,然后是上边。最后,裁剪下边。所有这些操作的结果都存储在内存中。因此,存储中间多边形会浪费内存。

Sutherland-Hodgeman Polygon Clipping