2015-10-06 49 views
0

對於一些背景,this is the game我試圖畫在等距的風格。基本的三角學在python中不能正常工作

我只是想要得到正確的計算,而不是以黑客的方式做,但一部分不工作,我不太確定其他部分(我會保存另一部分問題稍後)。

因此,忘記中間的小方格,董事會由n lenels組成。我希望能夠計算這些座標,以便我可以對它們進行進一步的計算,但觸發不起作用,並且盡我所知(記住我上次在多年前做過),它應該。

這是一個簡單的代碼來繪製第一方陣:

import turtle 
import math 

iso_angle = 20 
grid_length = 100 

turtle.right(iso_angle) 
turtle.forward(grid_length) 
turtle.right(180 - iso_angle * 2) 
turtle.forward(grid_length) 
turtle.right(iso_angle * 2) 
turtle.forward(grid_length) 
turtle.right(180 - iso_angle * 2) 
turtle.forward(grid_length) 

使用sohcahtoa,我想我能夠計算所產生的正方形的寬度和高度,因爲它是有效的由4個三角形,我可以將其中一個三角形的高度加倍。

#s = o/h 
#sin(iso_angle) = o/grid_length 
#o = sin(iso_angle) * grid_length 

height = 2 * sin(iso_angle) * grid_length 
width = 2 * cos(iso_angle) * grid_length 

然而,當我移動龜下降height,它不屬於在廣場的邊緣。它甚至不會在邊緣的多個距離中移動,它似乎最終會產生一些隨機距離。寬度交換也不起作用。

我在哪裏出錯了?

+4

'sin'和'cos'預計以弧度表示的角度,而不是度數。 – hobbs

+0

@hobbs:你打敗了我。無論如何,這是一個受過教育的猜測,所以我必須首先在https://docs.python.org/2/library/math.html上進行驗證。 – usr2564301

+0

啊,我給了這個想法,但意外地將弧度轉換爲度數而不是其他方式。無論如何,它似乎現在工作,謝謝,我應該離開這個問題嗎? – Peter

回答

1

如您需要轉換爲可與

math.radians() 

函數來完成弧度的意見陳述。所以在實踐中,你會以類似於

height = 2 * sin(math.radians(iso_angle)) * grid_length 
width = 2 * cos(math.radians(iso_angle)) * grid_length 
1

結束遊標模塊(海龜)需要度角度。

sin()和cos()數學函數以弧度表示角度。你必須轉換它們。 Fortunetly,Python中包括便捷的功能做到這一點的數學模塊:

height = 2 * sin(radians(iso_angle)) * grid_length 

希望這有助於。