我不确定是我的数学还是我的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)中心点而言,远不是完全水平或垂直的?
numpy的
sin()
和cos()
的函数以弧度而不是度数输入。将度数转换为弧度应该可以解决您的问题。在看起来numpy用的是弧度,不是度
你的代码很好,唯一的问题是numpy.cos公司(角度)以弧度而不是度数作为参数。您可以将测试器的范围从0改为
2*numpy.pi
,也可以通过在第2行添加angle = 180*angle/numpy.pi
将度数转换为弧度。在相关问题 更多 >
编程相关推荐