在 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
我正在尝试使用速度和角度计算大炮射击的距离。我正在使用实用程序测试来测试结果。范围的公式应该类似于 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