2013-01-21 53 views
0

我不敢肯定在哪裏問這個問題(數學之間和這裏)我數螺旋功能不計算正確

我嘗試使用這個公式

enter image description here

畫數螺旋它的作品(它顯示屏幕上的螺旋),但當我改變螺距(一)螺旋不改變他的音調,只有旋轉和大小(和設置爲1應該使一個圓圈,但它不)

我試過了:

double step = (end - start)/sample; 
     for (int i = 1;i <= sample;i++) { 
      double t = start+i*step; 
      coordinates[i-1][0] = a * Math.pow(Math.E,b*t) * Math.cos(t); 
      coordinates[i-1][1] = a * Math.pow(Math.E,b*t) * Math.sin(t); 
} 

(a和b是常數,開始= -4 * PI,端= 4 * PI)

double step = (end - start)/sample; 
     for (int i = 1;i <= sample;i++) { 
      double r = start+i*step; 
     double t = (1/b)*Math.log(r/a); 
      coordinates[i-1][0] = r* Math.cos(t); 
      coordinates[i-1][1] = r* Math.sin(t); 
} 

(a和b是常數,開始= 0,結束= 10)

我猜我在公式中犯了一個大錯誤,但我沒有看到一個。 我可以提供輸出畫面如果它可以幫助,但我看不出

編輯: 我沒有贏得成功,使其工作使用 R = A EXP(θ嬰兒牀B)

double r = Math.pow(a,t*(1/Math.tan(b))); 

但我仍然不明白爲什麼其他公式沒有解決,這就是爲什麼我編輯這個問題,而不是回答它。

回答

0

我的猜測是會出現四捨五入的問題。 我假設'a'和'b'都是雙打......我不得不問,因爲它沒有寫在代碼中,但假設情況是這樣的。如果不是這將是問題:)

接下來我會看看我*步驟,並確保這是你所期望的...我會認爲這是確定的,但你不是鑄造int '我'增加了一倍,所以如果你重新洗牌的話會問問題。

啊,其實我想看看是'樣品'。如果這是一個int,因爲我認爲這會給你一個錯誤的結果,因爲你除以一個int,我期望它會給出一個int返回值......實際上,我的1p的賭注是它的樣本聲明爲INT。

如果這樣不能解決問題,您可以打印出步驟值並確保它是您所期望的,並且如果它不是這個示例問題,請檢查't'是否正確計算。

+0

「a」,「b」,「開始」和「結束」是雙倍的。 'sample'不是。我確實試着做了一個雙倍的樣本,但這並沒有改變任何東西。當我看到t值時,它看起來很好(去-4 * PI到4 * PI) – eephyne