我正在尝试为一些计算作业制作一个计算器,但信息以度为单位,答案必须以度为单位。我尝试使用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> 角度 = 90 度应给出答案为 10。 相反,它返回:
572.9577951308232
有什么想法吗?
编辑:此外,如果有人有更好/更短的方式来输入组件,那将是惊人的。
交叉积是一个不以度表示的数字。您需要先将角度转换为弧度,然后再将其传递给Math.sin
,但将结果转换回度是不正确的。
double res = mag1 * mag2 * Math.sin(Math.toRadians(angle));