0
点赞
收藏
分享

微信扫一扫

Java、圆上的随机点

楚木巽 2022-01-21 阅读 112

        编写一个程序,产生一个圆心位于(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);
	}
}

举报

相关推荐

0 条评论