在 C# 控制台应用程序中使用实用程序测试计算大炮射击的距离

Calculating distance of cannon shot using utility tests in c# console application

我正在尝试使用速度和角度计算大炮射击的距离。我正在使用实用程序测试来测试结果。范围的公式应该类似于 v^2 * sin2a 又名 velocity squared * sin2alpha 。据我所知,sin2a应该是2*sina*cosa,但我可能错了。

无论如何,无论我做什么,我都会得到错误的结果,因为它似乎没有计算 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 的平方数...这表明没有计算罪恶。

感谢任何帮助!

谢谢!

检查你的单位,你需要除以 "g" 的值,因为速度是 m/s 而你的 "distance of shot" 是 m^2/s^2.

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

你有一个错误的sin 0.70710678118654746和cos 0.70710678118654757但是之后 (2 * Math.Sin(radian_angle) * Math.Cos(radian_angle)) 结果为 1