java计算圆形和三角形的交集面积
时间: 2023-11-09 21:08:48 浏览: 73
java用接口、多态、继承、类计算三角形和矩形周长及面积的方法
5星 · 资源好评率100%
以下是使用Java计算圆形和三角形交集面积的示例代码:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// 输入圆心坐标和半径
System.out.print("请输入圆心坐标和半径(如x y r):");
double x = input.nextDouble();
double y = input.nextDouble();
double r = input.nextDouble();
// 输入三角形三个顶点坐标
System.out.print("请输入三角形三个顶点坐标(如x1 y1 x2 y2 x3 y3):");
double x1 = input.nextDouble();
double y1 = input.nextDouble();
double x2 = input.nextDouble();
double y2 = input.nextDouble();
double x3 = input.nextDouble();
double y3 = input.nextDouble();
// 计算圆心到三角形三个顶点的距离
double d1 = Math.sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));
double d2 = Math.sqrt((x - x2) * (x - x2) + (y - y2) * (y - y2));
double d3 = Math.sqrt((x - x3) * (x - x3) + (y - y3) * (y - y3));
// 判断圆心是否在三角形内
double p = (d1 + d2 + d3) / 2;
double area = Math.sqrt(p * (p - d1) * (p - d2) * (p - d3));
boolean flag = false;
if (area == 0) {
flag = true;
}
// 计算圆形和三角形交集面积
double s1 = Math.PI * r * r; // 圆形面积
double s2 = 0; // 三角形面积
if (!flag) {
double a = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
double b = Math.sqrt((x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3));
double c = Math.sqrt((x3 - x1) * (x3 - x1) + (y3 - y1) * (y3 - y1));
double p2 = (a + b + c) / 2;
s2 = Math.sqrt(p2 * (p2 - a) * (p2 - b) * (p2 - c)); // 三角形面积
}
double s3 = 0; // 交集面积
if (r >= d1 && r >= d2 && r >= d3) { // 圆包含三角形
s3 = s2;
} else if (r <= d1 && r <= d2 && r <= d3) { // 三角形包含圆
s3 = s1;
} else { // 圆和三角形相交
double cos1 = (d2 * d2 + d3 * d3 - d1 * d1) / (2 * d2 * d3);
double cos2 = (d1 * d1 + d3 * d3 - d2 * d2) / (2 * d1 * d3);
double cos3 = (d1 * d1 + d2 * d2 - d3 * d3) / (2 * d1 * d2);
double angle1 = Math.acos(cos1);
double angle2 = Math.acos(cos2);
double angle3 = Math.acos(cos3);
double s4 = r * r * angle1 / 2; // 圆心到三角形第一个顶点所在的圆弧面积
double s5 = r * r * angle2 / 2; // 圆心到三角形第二个顶点所在的圆弧面积
double s6 = r * r * angle3 / 2; // 圆心到三角形第三个顶点所在的圆弧面积
s3 = s4 + s5 + s6 - s2; // 交集面积
}
System.out.println("圆形面积:" + s1);
System.out.println("三角形面积:" + s2);
System.out.println("交集面积:" + s3);
}
}
```
在运行程序时,按照提示输入圆心坐标、半径和三角形三个顶点的坐标,即可计算出圆形面积、三角形面积和交集面积。
阅读全文