1.海伦公式
2.余弦公式cosa=…
public double areaOfIntersectionOfCircles(int firstX,int firstY,int firstR,int secondX,int secondY,int secondR){
double alpha,area;
double d=Math.sqrt((firstX-secondX)*(firstX-secondX)+(firstY-secondY)*(firstY-secondY));//两圆心距离
if(d>firstR+secondR){
return 0;
}
alpha=Math.acos((d*d+firstR*firstR-secondR*secondR)/(2*d*firstR));//余弦定理取得相交弧所对本圆的圆心角
area=alpha*firstR*firstR;//本圆扇形面积
alpha=Math.acos((d*d+secondR*secondR-firstR*firstR)/(2*d*secondR));//余弦定理取得相交弧所对另一圆的圆心角
area+=alpha*secondR*secondR;//另一圆的扇形面积
double s=(d+firstR+secondR)/2;//海伦公式之s
area-=Math.sqrt(s*(s-d)*(s-firstR)*(s-secondR))*2;//两扇形面积减去两三角形面积即为交集
return area;
}