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

Python 将X、Y旋转坐标从弧度转换为度,python,trigonometry,radians,Python,Trigonometry,Radians,我有两个弧度值,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]
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度)完成

如果这是你需要经常做的事情,做一个函数

def DegtoRad(deg):
    return (deg)*(math.pi/180)
或者作为一个羔羊

DegtoRad = lambda x: x*(math.pi/180)
但请记住,如果尚未导入math/math.pi,则所有这些都不会起作用。
根据精度的需要,最好使用实际的文字变量来定义pi。

这在网上并不难找到是吗

该公式与@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 [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*符号(a)*arccos(a)/pi

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


注意:我使用的环境中,
sign
pi
等是numpy对象。在您的程序中,您可能需要ti单独导入它们

也许你应该解释一下你真正想做什么。你可以用
math.degrees(rads)
将一个值从弧度转换成度。我完全不清楚如何将两个弧度值转换为一个度值,不过。。。或者你只是想转换它们中的每一个吗?我使用
ReadProcessMemory
读取玩家在游戏中的坐标和方向。我想创建一张地图,显示您当前的位置和方向。我从游戏中获得的值以弧度为单位,我需要根据玩家的方向在pygame中旋转曲面<代码>c[1]西部为-1比0,东部为0比1,南部为-1比0,北部为0比1。如果玩家旋转360度,无论是
c[1]
还是
c[3]
都不能告诉你自己面对的方向。你说过c[1]向西是-1比0。这是否意味着当航向直接向北时,c[1]是-1?另外,c[1]在东面是0比1。这是否意味着当航向正北时,c[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)]
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)]