这题和POJ 3675 Telescope
POJ 2986 A Triangle and a Circle
POJ 2986 A Triangle and a Circle
ZOJ 2675 Little Mammoth 相似
都是三角剖分运用在圆和多边形(三角形.矩形)上.
利用三角剖分计算简单多边形与圆的相交面积。
因为可以把简单多边形转化成一个以圆心为顶点,另外两点选择多边形相邻两点A,B的三角形.所以我们先考虑一个三角形和圆的交。
情况貌似总共有8+8+3种吧.但是其实分的不那么细的话.也只有下面几种情况。
1.两个点A,B都在圆内,直接叉积计算三角形面积;
2.一个在外面,一个在里面.那么计算一个扇形加三角形的面积。三角形可能退化到没有.不过不影响计算。
3.两个点都在圆外.分三种情况.AB和圆的交点有两个.有一个.没有.其实有一个可以归到没有的情况里.两个交点就是计算一个大扇形的面积减去小扇形面积+小三角形面积。
没有交点和一个交点直接扇形面积.
对于三角形.先规定一个方向.比如逆时针.那么每次如果ABO的叉积小于0就加正数.大于0则要减.这就是有向面积.或者说当某些相邻点构成的逆时针的三角形
重复计算了,那么必然会有顺时针的三角形来反补掉这多出去的面积.当然也包括那些多计算的扇形.
大概就是这样子啦.