2010-10-04 108 views
2

我正在嘗試繞中心點圍繞一個物體運行,就像太陽和我們的行星一樣。但是我沒有運氣。任何幫助都會非常棒。謝謝。我在盧娜寫作,我不認爲這裏有一個類別,但這可能只是一般的代碼。但如果它在錯誤的地方,我的道歉。圍繞中心點的軌道對象

local function animate(event) 

    local rads = degrees * (Math.PI/180); 
    ballOne.x = 20 * Math.cos(rad); 
    ballOne.y = 20 * Math.sin(rad); 
    degrees = degrees + 1 

end 

Runtime:addEventListener("enterFrame", animate) 

回答

3

您可以嘗試20.0和180.0迫使他們浮點,否則你的計算可能最終會被整數不會很好地工作,否則,一切似乎都很好。

另外我建議一個或兩個單元測試。如果你輸入0,90,180和260,你應該輸出偶數(+/- 20,0或0,20)。這將幫助你調整它,讓你相信結果。

- 編輯 - 寫了你的程序的一個常規版本,因爲我不認識你的很多代碼。發現rad與rads的問題(在評論中提到)。下面是你的算法的一個常規轉儲:

float degrees=0.0 
float rads = degrees * (Math.PI/180.0); 
float x = 20.0 * Math.cos(rads); 
float y = 20.0 * Math.sin(rads); 
degrees = degrees + 1 
println x 
println y 

這是有效的。單元測試的意思是你可以設置一些以「0.0」度調用你的方法,並確保輸出的x爲20.0,y爲0.0,然後用90調用它,你應該得到0,20(實際上你可能會得到一個輕微的浮點錯誤,只是測試看到x是小於.001或者其他東西)

如果您使用谷歌認可的框架來開發這些應用程序,我100%肯定會有一些「官方」做單元測試的方式,我強烈建議你仔細研究一下,特別是對於動態語言,單元測試可以是絕對關鍵的。

單元測試最重要的部分之一是,您可以在開發環境中使用單點觸摸來運行它們。這可以確保無論您添加什麼代碼,以前的所有工作仍然有效。它可以讓你有信心去重構現有的代碼,而不用擔心打破你甚至不知道互動的東西。

大多數以動態語言工作的人認爲單元測試是絕對需求,甚至在靜態類型語言中,它們非常重要,因爲您的項目越來越小。

+0

嗯,我仍然必須失去一些東西,我改變了20到20.0和180到180.0,但是當我運行它時,我仍然看不到任何動作。通過單元測試你的意思是嘗試讓它輸出數字而不是告訴對象去哪裏?我不確定我知道單元測試是什麼。我也忽略了我設定度數爲100的部分,但我認爲這正是它在圈子中開始的地方。你能否看看我是否可以改變任何事情,如果我只是留下了一些東西。謝謝,詹姆斯。 – 2010-10-05 14:22:07

+0

@詹姆斯做單元測試的最簡單方法就是爲每個測試該類的類添加一個main()方法。只需傳遞數字,看看它們是否與你期望的相符。恐怕我不知道到底發生了什麼,「local rads」不是我熟悉的類型,它需要等同於float/double,而不是int/long。我將在Java中快速檢查並翻譯一些內容併發布我的結果。 – 2010-10-05 16:47:20

+0

@詹姆斯一個問題,你知道你說的是「本地拉德」,後來你用「拉德」。動態語言通常有一個巨大的缺陷,因爲如果你拼錯了它們,它們就會無聲無息地創建變量。否則你的算法是健全的,我得到了有效的結果。 – 2010-10-05 16:55:07