---恢复内容开始---
比较有意思的,旋(xuan)转(zhuan)卡(qia)壳(ke),还有半平面交都在这里。
1.多边形与凸包
左边是一个多边形,右边是一个凸包:
一般用按某一方向遍历整个多边形/凸包的数组/vector表示。
2.求凸包面积
随便找一个顶点,然后向不相邻的点连边,将凸包分成$(n-2)$个小三角形。
然后叉积就好了。
最后注意叉积求的是有向面积。(大力推荐逆时针遍历
typedef vector<Point> Pol; double S_(Pol p) { double ret = 0; for(int i=1,lim=(int)p.size();i<lim-1;i++) ret+=((p[i]-p[0])^(p[i+1]-p[0])); return ret/2; }