学习了三角剖分

感觉主要用处是求面积交

 

圆的三角剖分:

用来求圆与多边形的交

做法就是枚举多边形的边和圆心组成的三角形 分类讨论来求面积

注意是有向面积 要按一定方向加加减减

讨论分为几种

对多边形的一边ab

1)圆心在直线ab上 面积为0

2)圆心到ab线段最短距离(端点与垂线考虑)大于等于半径 此时是扇形面积

3)圆心到a,b的距离都小于等于半径 此时是三角形aob的面积

4)a在圆内而b在圆外 求出ab与圆的交点tb 是三角形aotb和扇形tbob的面积

5)b在圆内而a在圆外 求出ab与圆的交点ta 三角形bota和三星taoa的面积

6)a,b都在圆外而线段过圆 分成两个扇形一个三角形

 

poj 3675 poj2986 zoj 2675 都是这种题

 

多边形与多边形的三角剖分:

比如要求简单多边形和简单多边形的交

如果是凸多边形 直接半平面交即可

如果只是简单的多边形就可以根据一个顶点将多边形划分成n-2个三角形

枚举每个多边形的三角形,来求交(这里还是用半平面交比较省事)就可以解决

注意交的面积的方向 是两个三角形方向的乘积

poj 3060 (这题数据有毒 估计是直接减去了有向面积 两个多边形面积并起来比分别求和还大= = 理解意思就行吧)

 

梯形剖分:

poj3148

给你一个多边形 统计每个方格被覆盖的面积

做法是将图形划分成若干个有向的梯形

对于垂直的线段不考虑

对于其他线段考虑与方格的上边界构成的梯形

我们根据线段的走向规定面积的正负

比如从左到右为正 从右到左为负 (就是顺逆时针)

这样就求出来面积了

 

(这个题的取整保留有点麻烦= = 需要多考虑一下)

 

求重心:

UVALive 4426

对于均匀的多边形就是中心

跟之前的方法类似 考虑由一个点划分出n-2个三角形的重心

这些重心根据各自三角形的面积比重矢量叠加 有方向的

 

今天打得还是有点难受 1011模拟因为自己的马虎WA了两炮 加大了队伍罚时QWQ

最后结果还好 但是1005有点伤 差不多是从开头到结束 没有搞出来 题解还不太懂 再看看

明天打算搞极角排序和扫描线

posted on 2017-08-03 21:48  drzdk  阅读(106)  评论(0编辑  收藏  举报