使用C#中的Arcsin计算正交三角形的角度

时间:2014-04-11 17:03:35

标签: c# math geometry

我有以下代码:

double x = sw.bonePos[0, (int)Bones.HipCenter].x;
double z = sw.bonePos[0, (int)Bones.HipCenter].z;
double hypotenusePower2 = Math.Pow(x, 2) + Math.Pow(z, 2);

double hypotenuse = Math.Sqrt(hypotenusePower2);

double angle = Math.Asin(z / hypotenuse);

我知道x,z, hypotenuse是正确的,z / hypotenuse是正确的,因为它始终在-1和1之间。所以我想使用ArcSin找到角度,如this但是当我打印例如Math.Asin(1),结果是1.5707 ... 我使用了错误的功能吗? C#中是否有任何函数返回角度?

输入/输出示例:

x: -0.000844396417960525 
z: 0.857428431510925 
hypotenuse: 0.857428847292063 
angle: 1.5698115260652



x: 0.0198930986225605 
z: 0.849016189575195 
hypotenus: 0.849249212854266 
angle: 1.54736984845028

2 个答案:

答案 0 :(得分:4)

您得到的结果是正确的 - asin的{​​{1}}是π的一半,或大约1弧度。

返回角度的函数通常以弧度返回结果。如果您需要以度为单位的结果,则需要按如下方式转换结果:

1.5707

答案 1 :(得分:3)

这是正确的答案。得到的角度以弧度为单位。因此,Math.Asin(1)应等于π/2≈1.5707弧度,这与您的结果相符。

如果您想要以度为单位的值,请乘以180 /π。在这种情况下,π/ 2 * 180 /π会给你90度:

double degrees = radians * (180 / Math.Pi);