编写一个程序,产生一个圆心位于(0,0)、半径为40的圆上面的三个随机点,显示由这三个随机点组成的三角形的三个角的度数。(提示:产生0~2pi之间的一个以弧度为单位的随机角度alpha,则由这个角度所确定的点为(r*cos(alpha),r*sin(ahlpha))。)
package pack2;
import javafx.geometry.Point2D;
public class RandomPoint {
public static void main(String[] args) {
System.out.println(randomPoint());
}
//圆上的随机点
public static String randomPoint() {
final double R = 40;
double alpha;
alpha = getAlpha();
double x1 = R * Math.cos(alpha), y1 = R * Math.sin(alpha);
alpha = getAlpha();
double x2 = R * Math.cos(alpha), y2 = R * Math.sin(alpha);
alpha = getAlpha();
double x3 = R * Math.cos(alpha), y3 = R * Math.sin(alpha);
//创建Point2D对象
Point2D p1 = new Point2D(x1, y1);
Point2D p2 = new Point2D(x2, y2);
Point2D p3 = new Point2D(x3, y3);
//获取三条边
double a = p1.distance(p2);
double b = p1.distance(p3);
double c = p2.distance(p3);
//获取度数
double A = Math.toDegrees(Math.acos((a * a - b * b - c * c) / (-2 * b * c)));
double B = Math.toDegrees(Math.acos((b * b - a * a - c * c) / (-2 * a * c)));
double C = Math.toDegrees(Math.acos((c * c - b * b - a * a) / (-2 * b * a)));
return String.format("Degree A: %.2f\nDegree B: %.2f\nDegree C: %.2f\n",
A, B, C);
}
//得到随机角度
public static double getAlpha() {
return Math.random() * (2 * Math.PI);
}
}
