Python 极坐标到笛卡尔坐标返回奇怪的结果

Python 极坐标到笛卡尔坐标返回奇怪的结果,python,python-2.7,math,coordinates,polar-coordinates,Python,Python 2.7,Math,Coordinates,Polar Coordinates,我不确定是我的数学还是我的Python不符合标准。。。但是下面的代码给出了意想不到的结果。它仍然绘制一个点圆,但以一种奇怪的顺序和非统一的方式(即使允许整数舍入误差),即随着度数的增加,点在圆周围不是连续的,它们跳到圆上完全不同的点 def pol2cart(距离、角度): x=距离*numpy.cos(角度) y=距离*numpy.sin(角度) 返回(x,y) 对于X范围内的固定角度(0360,10): x、 y=pol2cart(50,固定角) 打印str(int(x))+“,“+str(

我不确定是我的数学还是我的Python不符合标准。。。但是下面的代码给出了意想不到的结果。它仍然绘制一个点圆,但以一种奇怪的顺序和非统一的方式(即使允许整数舍入误差),即随着度数的增加,点在圆周围不是连续的,它们跳到圆上完全不同的点

def pol2cart(距离、角度):
x=距离*numpy.cos(角度)
y=距离*numpy.sin(角度)
返回(x,y)
对于X范围内的固定角度(0360,10):
x、 y=pol2cart(50,固定角)
打印str(int(x))+“,“+str(int(y))+”“+str(fixedangle)+”\xb0”
结果样本:

50,0°
-41, -27  10°
20, 45  20°
7, -49  30°
-33, 37  40°
48, -13  50°
-47, -15  60°
31, 38  70°
-5, -49  80°
-22, 44  90°
43, -25  100°
-49, -2  110°
40, 29  120°
-18, -46  130°
-9, 49  140°
34, -35  150°
-48, 10  160°
46, 17  170°
-29, -40  180°

如果0度=(50,0),那么我预计10度在(49,9)左右,而不是(-41,-27)。我认为20度应该是(47,18)而不是(20,45)。。。等等,通过这三个例子,你可以看到笛卡尔点跳到了一个完全不同的象限,然后又跳回来了。即使我关于旋转方向或起点的想法完全错误,我仍然希望每个点从0度起点顺时针或逆时针旋转。另外,从90和180的“正方形”角度可以看出,相对于(0,0)中心点,笛卡尔点远不是完全水平或垂直的。

看起来numpy是以弧度而不是度工作的。

numpy的
sin()
cos()
函数以弧度而不是度进行输入。将度转换为弧度应该可以解决您的问题。

您的代码很好,唯一的问题是numpy.cos(angle)的参数是弧度,而不是度。您可以将测试器的范围更改为0到
2*numpy.pi
或通过在第2行添加
angle=180*angle/numpy.pi
将角度转换为弧度。

aah谢谢Jeremy。谢谢大家:勾选第一个:)