繁体   English   中英

将X,Y旋转坐标从弧度转换为度

[英]Convert X, Y Rotation coordinates from Radians to Degrees

我有2个以弧度表示的值c[1]c[3] 我需要将弧度转换为度,但我还没有最清楚的想法如何对这些数字进行除法运算。 我一直在广泛地搜索互联网,但找不到任何我能真正理解的东西。 我已经尝试过设计自己的方式来做,但是我确定我还没有结束。 我尝试了以下方法:

    z = (((c[1] * 180) + 180) + ((c[3] * 180) + 180))
    z = (((c[1] * math.pi) / 180) + ((c[3] * math.pi) / 180) / 2)
    z = (c[1] * (90/math.pi) - (c[3] * (90/math.pi)))
    z = math.atan2(c[3], c[1])
    z = (math.degrees(c[1]) + math.degrees(c[3])) * 2
    z = c[1]
    z = (math.asin(c[3]) / math.acos(c[1]))

如何从2个弧度获得度值?

度到弧度的转换是通过方程(n度)*(pi / 180度)完成的。

z = (c[1]*(math.pi/180.0) + (c[1]*(math.pi/180)

如果需要的话,您需要定期执行功能。

def DegtoRad(deg):
    return (deg)*(math.pi/180)

或作为lambda

DegtoRad = lambda x: x*(math.pi/180)

请记住,如果您还没有导入math / math.pi,那么这些都不会起作用。 可能最好根据实际精度定义带有实际文字变量的pi。

在网上很难找到这个吗? -是吗?

http://www.mathwarehouse.com/trigonometry/radians/convert-degee-to-radians.php

该公式与@ user2913685的公式相反:num * 180 / pi(一个简单的错误)

这是python中的示例:

pi = 3.14159265

rad_val = 7

deg_val = rad_val*180/pi

print(deg_val)

它给出了输出:

401.07045704986604

这使用pi作为3.14159265,并且不使用模块数学。 显然,您可以执行与其他答案相同的操作,但是要更改公式。

在发表您的评论之后,我认为对于c [1]和c [3],您不会以弧度获得两个角度。 相反,您正在获取余弦方向。 如果获取的弧度角为-pi到pi。 相反,该值从-1到1(即cos(-pi)到cos(pi))。

您可以先将值更改为以弧度为单位的角度,然后根据需要将其更改为度。 就像警告一样,角度的余弦是对称的...因此:

In [12]: zip(angles, (cos(angles)))
Out[12]:
[(-3.1415926535897931, -1.0),
 (-2.8108986900540254, -0.94581724170063464),
 (-2.4802047265182576, -0.78914050939639346),
 (-2.1495107629824899, -0.5469481581224267),
 (-1.8188167994467224, -0.24548548714079912),
 (-1.4881228359109546, 0.082579345472332394),
 (-1.1574288723751871, 0.40169542465296937),
 (-0.82673490883941936, 0.67728157162574099),
 (-0.49604094530365161, 0.87947375120648907),
 (-0.16534698176788387, 0.98636130340272232),
 (0.16534698176788387, 0.98636130340272232),
 (0.49604094530365161, 0.87947375120648907),
 (0.82673490883941891, 0.67728157162574132),
 (1.1574288723751867, 0.40169542465296976),
 (1.4881228359109544, 0.082579345472332616),
 (1.8188167994467221, -0.2454854871407989),
 (2.1495107629824899, -0.5469481581224267),
 (2.4802047265182576, -0.78914050939639346),
 (2.8108986900540254, -0.94581724170063464),
 (3.1415926535897931, -1.0)]

但,

In [11]: zip(angles, arccos(cos(angles)))
Out[11]:
[(-3.1415926535897931, 3.1415926535897931),
 (-2.8108986900540254, 2.8108986900540254),
 (-2.4802047265182576, 2.4802047265182576),
 (-2.1495107629824899, 2.1495107629824899),
 (-1.8188167994467224, 1.8188167994467224),
 (-1.4881228359109546, 1.4881228359109546),
 (-1.1574288723751871, 1.1574288723751871),
 (-0.82673490883941936, 0.82673490883941936),
 (-0.49604094530365161, 0.49604094530365156),
 (-0.16534698176788387, 0.16534698176788418),
 (0.16534698176788387, 0.16534698176788418),
 (0.49604094530365161, 0.49604094530365156),
 (0.82673490883941891, 0.82673490883941891),
 (1.1574288723751867, 1.1574288723751867),
 (1.4881228359109544, 1.4881228359109544),
 (1.8188167994467221, 1.8188167994467221),
 (2.1495107629824899, 2.1495107629824899),
 (2.4802047265182576, 2.4802047265182576),
 (2.8108986900540254, 2.8108986900540254),
 (3.1415926535897931, 3.1415926535897931)]

这意味着从方向余弦获取角度,您将需要执行以下操作:

In [13]: def toAng(a): return sign(a)*arccos(a)

这将为您提供正确的角度:

In [19]: zip(angles, toAng(cos(angles)))
Out[19]:
[(-3.1415926535897931, -3.1415926535897931),
 (-2.8108986900540254, -2.8108986900540254),
 (-2.4802047265182576, -2.4802047265182576),
 (-2.1495107629824899, -2.1495107629824899),
 (-1.8188167994467224, -1.8188167994467224),
 (-1.4881228359109546, 1.4881228359109546),
 (-1.1574288723751871, 1.1574288723751871),
 (-0.82673490883941936, 0.82673490883941936),
 (-0.49604094530365161, 0.49604094530365156),
 (-0.16534698176788387, 0.16534698176788418),
 (0.16534698176788387, 0.16534698176788418),
 (0.49604094530365161, 0.49604094530365156),
 (0.82673490883941891, 0.82673490883941891),
 (1.1574288723751867, 1.1574288723751867),
 (1.4881228359109544, 1.4881228359109544),
 (1.8188167994467221, -1.8188167994467221),
 (2.1495107629824899, -2.1495107629824899),
 (2.4802047265182576, -2.4802047265182576),
 (2.8108986900540254, -2.8108986900540254),
 (3.1415926535897931, -3.1415926535897931)]

最后,如果需要将其转换为度数,则可以执行以下操作:

在[20]中:def toAng(a):返回180 * sign(a)* arccos(a)/ pi

In [21]: zip(angles, toAng(cos(angles)))
Out[21]:
[(-3.1415926535897931, -180.0),
 (-2.8108986900540254, -161.05263157894737),
 (-2.4802047265182576, -142.10526315789474),
 (-2.1495107629824899, -123.1578947368421),
 (-1.8188167994467224, -104.21052631578948),
 (-1.4881228359109546, 85.263157894736835),
 (-1.1574288723751871, 66.31578947368422),
 (-0.82673490883941936, 47.368421052631582),
 (-0.49604094530365161, 28.421052631578949),
 (-0.16534698176788387, 9.4736842105263346),
 (0.16534698176788387, 9.4736842105263346),
 (0.49604094530365161, 28.421052631578949),
 (0.82673490883941891, 47.368421052631554),
 (1.1574288723751867, 66.315789473684191),
 (1.4881228359109544, 85.263157894736835),
 (1.8188167994467221, -104.21052631578947),
 (2.1495107629824899, -123.1578947368421),
 (2.4802047265182576, -142.10526315789474),
 (2.8108986900540254, -161.05263157894737),
 (3.1415926535897931, -180.0)]

这给你以度为单位的直角...

注意我正在使用signpi等为numpy对象的环境。 在您的程序中,您可能需要分别导入它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM