2016-07-31 22 views
2

我不知道這是我的數學還是我的Python沒有達到從頭開始......但下面的代碼給出了意想不到的結果。它仍然繪製了一圈點,但以一種奇怪的順序和非均勻的方式(即使允許int rounding錯誤),即點隨着度增加而在圓周上不連續,它們跳到圓上完全不同的點?極地笛卡爾返回奇怪的結果

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)中心點而言完全水平或垂直很遠?

回答

4

看起來像numpy的以弧度,而不是度

+0

aah thanks Jeremy。並感謝所有:勾選第一個:) – Simon

2

sin()的功能和工作cos()採取numpy的輸入以弧度,而不是度。將度數轉換爲弧度可以解決您的問題。

2

你的代碼很好,唯一的問題是numpy.cos(angle)以弧度而不是度數取其參數。您可以更改測試儀的範圍從0到2*numpy.pi或通過在第2行上添加angle = 180*angle/numpy.pi將度數轉換爲弧度。