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

2024-04-18 18:19:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我不确定是我的数学还是我的Python不合格。。。但是下面的代码给出了意外的结果。它仍然绘制了一个点的圆,但是以一种奇怪的顺序和一种非均匀的方式(甚至考虑到整数舍入误差),也就是说,随着度数的增加,这些点不是围绕圆的顺序排列的,而是跳到圆上完全不同的点?

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"

结果示例:

^{pr2}$

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


Tags: 代码numpy顺序方式绘制数学整数int
3条回答

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

看起来numpy用的是弧度,不是度

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

相关问题 更多 >