Weiler-Atherton多边形裁剪算法

这是一个通用的多边形裁剪算法,既可以裁剪凸多边形也可以裁剪凹多边。

通过下图来描述算法的执行过程

img79

图中DCBA为裁剪窗口,dcba为要裁剪的多边形。在算法执行之前将多边形和裁剪窗口的交点分别加入他们的顶点序列。即图中的123456。

则多边形序列为:a,6,5,d,4,3,c,2,b,1

裁剪窗口序列为:A,5,4,D,C,1,B,2,3,6

从多边形顶点a开始按逆时针方向遍历多边形顶点。到达多边形与裁剪边界的交点6,此时线段是从裁剪区的外部进入裁剪区内部

(即交点6一个entering intersection),则在多边形序列上继续遍历直到找到第一个从边界“出去”的点或者一个已经遍历过的点,图中所示为交点5(称交点5为一个exiting intersection);

此时线段从裁剪区内出去,这时在裁剪窗口序列的当前顶点开始逆时针遍历(此时为交点5),到达交点4,线段d4指向多边形内部,交点4是一个entering intersection;

转换到

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值