我很无聊,想练习我的java编码技巧。我制作了一个程序,根据你所知道的(半径,周长,apothem)找到多边形的区域。
这是一部分:
static void pentagon() {
System.out.println("Select what you know");
System.out.println("[1]Perimeter\n[2]Apothem\n[3]Radius");
info = input.nextInt();
if (info == 1) {
System.out.println("What is the perimeter of the pentagon?");
double per = input.nextDouble();
double apothem = per * .137638192;
double answer = apothem * per * .5;
System.out.println("The area of the pentagon is " + answer + " square units.");
} else if (info == 2) {
System.out.println("What is the apothem of the pentagon?");
double apothem = input.nextDouble();
double per = apothem / .137638192;
double answer = apothem * per * .5;
System.out.println("The area of the pentagon is " + answer + " square units.");
} else if (info == 3) {
System.out.println("What is the radius of the pentagon?");
double rad = input.nextDouble();
double per = rad / .1701301617;
double apothem = per * .137638192;
double answer = apothem * per * .5;
System.out.println("The area of the pentagon is " + answer + " square units.");
}
}
由于所有这些小数(apothem与perimeter的比率)我必须弄清楚自己的问题,我只能编写一些有用的小数。
如果我知道如何使用切线,我可以解决这个问题。
Ex:double apothem = length / tan(360/10/2)
(一个decagon的apothem) 有人可以告诉我如何编写前一行代码吗?
答案 0 :(得分:1)
推荐的方式是使用java.lang.Math.tan(double a)
double apothem = 1 / java.lang.Math.tan( (2*java.lang.Math.PI)/(10*2))
除非有一些理由说明为什么你需要非凡的精度,而这并没有提供它。然后你可能会找到一些第三方替代品。
答案 1 :(得分:0)
你正在寻找具有所有trig函数的java.lang.Math类以及其他有用的常量,如e和PI
所以十边形的apothem,其中每一边都是length
长,而等式= length/ 2 tan(180/ n)
将是(在通过放在你的java文件import java.lang.Math;
的顶部导入Math类之后)
修改强>
正如用户ajb指出的那样,Math.tan()
需要弧度,因此您必须将度数转换为弧度,因此您必须使用toRadians()
将度数转换为弧度:
double apothem = length / (2 *Math.tan(Math.toRadians(180/10))