繁体   English   中英

极地笛卡尔回归奇怪的结果

[英]Polar to Cartesian returning strange results

我不确定这是我的数学还是我的Python并不是最新的......但下面的代码给出了意想不到的结果。 它仍然绘制一个圆点,但是以奇怪的顺序和非均匀的方式(甚至允许int舍入误差),即随着度数的增加,点不是围绕圆顺序,它们跳到圆上的完全不同的点?

def pol2cart(distance, angle):
    x = distance * numpy.cos(angle)
    y = distance * numpy.sin(angle)
    return(x, y)

for fixedangle in xrange(0,360,10):
    x, y = pol2cart(50,fixedangle)      
    print str(int(x)) + ", " + str(int(y)) + "  " + str(fixedangle) + "\xb0"

结果样本:

50, 0  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将度数转换为弧度。

暂无
暂无

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

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