使用输入和输出以度为单位计算trig函数

时间:2013-09-14 15:29:02

标签: java math cross-product

我正在尝试为一些钙质作业制作计算器,但信息以度数给出,答案必须以度为单位。我尝试使用Math.toDegrees和Math.toRadians,但答案不正确。

public static double crossProduct() {
    Scanner in = new Scanner(System.in);

    System.out.println("enter angle in degrees");
    double angle = in.nextDouble();

    System.out.println("x1 = ");
    double x1 = in.nextDouble();
    System.out.println("y1 = ");
    double y1 = in.nextDouble();
    System.out.println("z1 = ");
    double z1 = in.nextDouble();
    System.out.println("");
    System.out.println("x2 = ");
    double x2 = in.nextDouble();
    System.out.println("y2 = ");
    double y2 = in.nextDouble();
    System.out.println("z2 = ");
    double z2 = in.nextDouble();

    double mag1 = Math.sqrt((x1 * x1) + (y1 * y1) + (z1 * z1));
    double mag2 = Math.sqrt((x2 * x2) + (y2 * y2) + (z2 * z2));

    double res = mag1 * mag2 * Math.toDegrees(Math.sin(Math.toRadians(angle)));      

    System.out.println("cross product = " + res);
    return res;
}

输入< 0,2,0>和< 0,5,0>和angle = 90度应该给出答案为10.而不是它返回:

572.9577951308232

有什么想法吗?

编辑:此外,如果有人有更好/更短的方式输入组件,那将是惊人的。

1 个答案:

答案 0 :(得分:1)

Crossproduct是一个不用度数表示的数字。在将角度传递给Math.sin之前,您需要将角度转换为弧度,但将结果转换回度数是不正确的。

double res = mag1 * mag2 * Math.sin(Math.toRadians(angle));