如何将角度计算转换为弧度?(从Kawa到Java)

7

我尝试将我用MIT AppInventor制作的应用程序中使用Kawa进行计算的部分转换为使用Java的Android应用程序。我面临的问题是Kawa计算中的三角函数部分使用的是度数。我的问题是如何将这个计算转换到Java中并获得相同的输出?

这是我在Kawa中进行计算的方法,所有变量均为双精度类型:

 Tri 1=atan(Offset Depth/Offset Length)
 Mark 1=sqrt(Offset Length^2+Offset Depth^2)
 Tri 2=(180-Tri1)/2
 Mark 2=Duct Depth/(tan(Tri 2))

接着我尽力将其翻译为Java代码,变量也与上文一样为双精度,深度、长度和管道深度均为用户输入的值。

 tri1 = Math.atan(offsetDepth / offsetLength);
 marking1 = Math.sqrt(Math.pow(offsetLength,2) + Math.pow(offsetDepth,2));  
 tri2 = (180 - tri1) / 2;
 marking2 = ductDepth / Math.tan(tri2);

以下是输入和输出的截图:

enter image description here

2个回答

26

当我将所有的角度计算转换为弧度时,输出时是否需要将其转换回角度,否则计算结果与Kawa计算不同?另外,在使用toRadians时,如何在计算中实现它? - Brian Var
对于那些需要弧度值的方法,你首先像之前一样计算参数,然后在传递给方法之前进行转换。对于返回弧度值的方法,是的,你需要将其转换为角度制。你可以使用Math#toDegrees()来完成这个任务。 - Keppil

11

你可以自己将角度转换为弧度。

正如我们所知:

180 degrees = PI radians
所以:
1 degree = PI / 180 radians

所以,无论您拥有多少度的X,
它们都等于(X * PI / 180)弧度。

在Java中,您有

Math.PI

这段代码定义了圆周率的值。

只需将您的Java代码更改为以下内容:

tri11 = Math.atan(1.0 * offsetDepth / offsetLength); // tri11 is radians
tri1 = tri11 * 180.0 / Math.PI; // tri1 is degrees
marking1 = Math.sqrt(Math.pow(1.0 * offsetLength,2) + Math.pow(1.0 * offsetDepth,2));  
tri2 = (180.0 - tri1) / 2.0; // tri2 is degrees
tri22 = tri2 * Math.PI / 180.0; // tri22 is radians
marking2 = 1.0 * ductDepth / Math.tan(tri22);
// output whatever you like now

我在想如何将整个计算转换为与Kawa计算的输出匹配。将其转换为弧度很令人困惑。因此,180 * PI / 180弧度将修复tri2,那么我该如何纠正其余的计算?这些问题可能对您来说很容易,但我无法理解。 - Brian Var
我觉得现在我开始有了更清晰的认识。我的理解是你先用弧度计算 tri11,然后转换为角度,所以这部分是正确的,那么 tri22 是弧度?所以 marking2 在弧度下进行计算。这意味着我仍然需要将 marking2 的结果转换为角度,因为它是以弧度为单位的?非常感谢你迄今为止的帮助 :) - Brian Var
@BrianJ 你的哪些变量代表角度?每个代表角度值的变量都应该进行转换(就像我所做的那样)。在我看来,marking2并不代表一个角度。我认为它代表某个线段的长度而不是某个角度的大小。 - peter.petrov
好的,第一个标记1是如图所示的斜边,标记2是距离,所以我想你是对的?不管怎样,我会测试一下并检查是否有效。感谢你的帮助。 - Brian Var
我刚刚测试了一下,标记1偏差接近10毫米,虽然比以前更准确,但仍然不是原始计算的结果。您有任何想法为什么会这样吗? - Brian Var

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接