我的編程任務中遇到的一個問題是使用烏龜模塊繪製Spiral of Theodorus!與 n = 17.用烏龜模塊繪製Theodorus螺旋時遇到問題
我已經完成了所有的代碼,但每當它繪製的規模超級關閉。例如,在尺寸爲sqrt(1),1,sqrt(2)的第一個三角形中,三角形將是45,45三角形,但在龜1 = 1像素中,這將難以辨認,因此我將不得不使用更大的數字如100,但如果我使用100,那麼第一個三角形的尺寸將是sqrt(100),100,sqrt(200)。這是不相同的三角形。
這裏是我的代碼:
def TheodorusSpiral(myTurtle,n,d):
import math
myTurtle=turtle
myTurtle.pu()
myTurtle.home()
myTurtle.pd()
myTurtle.fd(d)
myTurtle.lt(90)
myTurtle.fd(d)
myTurtle.lt(45)
for i in range(n-1):
a = (i+2)*d
c = math.fabs(d*math.sqrt(a))
angle = math.degrees(math.atan(c/d))
angle2 = math.degrees(math.atan(d/d*math.sqrt(a+1)))
angle3 = math.degrees(math.atan(d*math.sqrt(a+1)/d))
angle4 = 180 - (angle2 + angle3)
angle5 = 180 -(angle + angle4)
myTurtle.fd(d)
myTurtle.lt(angle5)
TheodorusSpiral(1,4,50)
也是另一個問題,我有是,當我調用函數,參數「myTurtle」我不能跟一個名稱/信叫它如「蒂姆」 。
例如TheodorusSpiral(TIM,4,50)會給我
「蒂姆沒有定義」 錯誤
在你的例子中,第一個三角形的尺寸不應該是sqrt(100),100,sqrt(200)。相反,它們應該是100 * sqrt(1),100 * 1,100 * sqrt(2)。你的錯誤不像編程錯誤那樣是一個數學錯誤。 – rmunn 2014-10-20 04:37:19
好的,我添加了「* d」到需要乘以sqrt的地方,而且我仍然得到了不成比例的圖像。 – 2014-10-20 04:56:16
您的'angle2'和'angle3'計算現在看起來很奇怪。 'd/d'將會取消每一個,並且你總會留下'math.atan(math.sqrt(a + 1))'。我認爲你需要繪製自己的圖表並再次檢查你的數學。另外,比'angle2','angle3'等更好的名字可以幫助你避免將來出現類似的錯誤。問問自己:'angle2'是什麼?這是什麼*和*什麼*之間的角度?然後給它一個名字,這將幫助你記住它是什麼。 – rmunn 2014-10-20 05:50:00