学习了三角剖分
感觉主要用处是求面积交
圆的三角剖分:
用来求圆与多边形的交
做法就是枚举多边形的边和圆心组成的三角形 分类讨论来求面积
注意是有向面积 要按一定方向加加减减
讨论分为几种
对多边形的一边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有点伤 差不多是从开头到结束 没有搞出来 题解还不太懂 再看看
明天打算搞极角排序和扫描线