2016-03-07 24 views
-1

我正在嘗試使用速度和角度來計算大炮射擊的距離。我正在使用效用測試來測試結果。公式範圍應該像v^2 * sin2a又名速度平方* sin2alpha。據我所知,sin2a應該是2 * sina * cosa,但我可能是錯的。使用c#控制檯應用程序中的實用程序測試計算大炮射擊的距離

無論如何,無論我做什麼,我得到錯誤的結果,因爲它似乎並沒有計算sin

下面的代碼

Cannon.cs

public int CalculateDistance(int angle, int velocity) 
    { 
     int distance = 0; 
     double radian_angle = (Math.PI/180) * angle; 
     distance_of_shot = (Math.Pow(velocity, 2)) * (2 * Math.Sin(radian_angle) * Math.Cos(radian_angle)); 
     distance = (int)distance_of_shot; 
     return distance; 
    } 

CannonAttackTest.cs

[TestMethod] 
    public void Calculations() 
    { 
     Canon new_canon = new Canon(); 
     var data = new_canon.CalculateDistance(45, 450); 
     Assert.AreEqual(20682, data);      
    } 

結果是假設爲20682,但我得到202500,這是確切地說,有450個方面......這些指向罪沒有被計算。

enter image description here

任何幫助表示讚賞!

謝謝!

回答

3

檢查你的單位,你需要除以「g」的值,因爲速度是m/s,你的「射門距離」是m^2/s^2。

distance_of_shot = (Math.Pow(velocity, 2)) * (2 * Math.Sin(radian_angle) * Math.Cos(radian_angle))/9.81; 
+0

這有點兒有道理肯定後。但我仍然得到20663而不是20682? – aiden87

+0

@fox好吧,除以9.81,更準確的g值。在那裏,功課完成;) – Quantic

+0

不能相信我忘了由重力分開。謝啦 :) – aiden87

0

你有一個錯誤的罪0.70710678118654746和cos 0.70710678118654757但 (2 * Math.Sin(radian_angle)* Math.Cos(radian_angle))導致未來1

相關問題