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
您得到的结果是正确的-
asinof1
是π的一半,或大约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)
。