如何在Java中使用切线?

时间:2015-04-25 04:13:49

标签: java

我很无聊,想练习我的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) 有人可以告诉我如何编写前一行代码吗?

2 个答案:

答案 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))