扫描线求三角形的重合k次的面积
先把所有的三角形的点和他们之间产生的交点求出来,按X轴从小到大排序,然后每相邻的两个点会产生一个区间,在该区间中,从Y轴最上面往下扫描,如果碰到进入三角形的边,当前state++,表示重合数+1,如果碰到一个离开三角形的边,当前state--,表示重合数-1,对于每次碰到一个三角形的边,求出该边在这个区间中的上方的距离,要么是梯形,要么是三角形。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <algorithm>
#include <cstring>
#define eps 1.0e-8
#define zero(x) (((x)>0?(x):-(x))<eps)
using namespace std;
struct node
{
double x,y;
}point[111111];
struct line{
node a,b;
};
struct T