C# 用C中的圆弧计算正交三角形的角度#

C# 用C中的圆弧计算正交三角形的角度#,c#,math,geometry,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 / hyp

我有以下代码:

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,斜边
是正确的,
z/斜边
是正确的,因为它总是在-1和1之间。所以我想用圆弧来求角度,但当我打印时,例如
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

您得到的结果是正确的-
asin
of
1
是π的一半,或大约
1.5707
弧度

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

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

这是正确的答案。产生的角度以弧度为单位进行测量<因此,代码>数学Asin(1)
应等于π/2&近似值;1.5707弧度,与您的结果相匹配

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

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

假设z与他计算的角度相反,他实际上是对的。这里是这样吗?请注意,此角度将基于“骨骼”原点,因为您使用x和z值作为长度。你怎么知道1.5705弧度是不正确的?我猜他预期的结果是以度为单位的。请注意,获取角度的一个更简单的方法是
angle=Math.Atan2(z,x)