POJ 3335 半平面交与多边形的核

半平面,指的就是一条直线把一个平面分成了两个半平面…… 如果有好几条这样的直线,就会有很多个半平面,我们有的时候会求他们的交。


半平面交一个很有用的用处是求多边形的核。所谓多边形的核,就是指多边形中的一块区域,在这个区域里面放一个灯泡,这个灯泡转一周,能照亮这个多边形里所有的地方。稍微想想就会知道,凸多边形一定是有核的,而且就是它本身,但是凹多边形就未必有核了。比如这个多边形




蓝色的区域就是它的核,但是如果你站在淡黄色点的话,叉子的那一部分你就看不到了。


怎么求一个多边形的核呢?有这样一个算法:


1. 将所有点逆时针/顺时针排序,到底是逆时针还是顺时针很关键,影响到后面符号的判断。

2. 维护一个点集合kernel,这个点集合所包含的点就是这个多边形的核;

3. 对于原多边形的每条边构成的直线line,扫一下所有的点,如果点i就在对于这条线而言的多边形内部,那么点i直接就加入kernel集合;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值