Ok так вот ситуация ...C# Тригонометрия (HELP!)
Я сейчас работаю над проектом для моей математики и физики для класса игр.
Я закончил кодирование своего решения и провел тесты xUnit, которые мой учитель сделал для нас.
90% из них сбой.
У меня есть Calculator.cs файл, содержащий все методы, которые я закодировал. Каждый тригонометрический метод сделан, чтобы вернуть Tuple, и элементы, которые в кортеже затем используются в xUnit.Assert.Equal (expectedResult, Math.Round (calculatorTuple.Item1, 4)) ...
Для пример ... у меня есть метод, названный Trig_Calculate_Adjacent_Hypotenuse, который принимает два двойников, как это параметры (угол в градусах и напротив)
Калькулятор обнаруживает, что соседнее равно 15.4235 ... но мои расчеты реальной жизни показывают, мне, что это 56.7128. Поэтому, когда тест проходит, он делает Assert.Equal (56.7128, 15.4235) и обнаруживает, что эти два ответа не равны. (очевидно)
Я просмотрел код в моем файле Calculator.cs несколько раз ... и не может на всю жизнь найти проблему.
Вот мой метод, так что вы можете взглянуть на него:
public static Tuple<double,double> Trig_Calculate_Adjacent_Hypotenuse(double Angle, double Opposite)
{
double Hypotenuse;
double Adjacent;
// SOH CAH TOA
// Using TOA to find Adjacent
// so Adjacent = Opposite/Tan(Angle)
// so Adjacent = 10/Tan(10)
// which means Adjacent = 56.7128
// However my calculator finds 15.4235 instead...
Adjacent = Opposite/Math.Tan(Calculator.DegreesToRadians(Angle));
// Using SOH to find Hypotenuse
// so Hypotenuse = Opposite/Sin(Angle)
// so Hypotenuse = 10/Sin(10)
// which means Hypotenuse = 57.5877
// However my calculator finds something different... (unknown due to Adjacent's failure)
Hypotenuse = Opposite/Math.Sin(Calculator.DegreesToRadians(Angle));
return new Tuple<double, double>(Adjacent, Hypotenuse);
}
А вот метод испытания:
[Theory]
// Student Data
[InlineData(10, 10, 56.7128, 57.5877)]
public void TestCalculateAdjacentHypotenuse(double Angle, double Opposite, double Adjacent, double Hypotenuse)
{
// Act - performing the action
Tuple<double, double> results = Calculator.Trig_Calculate_Adjacent_Hypotenuse(Angle, Opposite);
// Assert - did we get back the correct answer
Assert.Equal(Adjacent, Math.Round(results.Item1, 4));
Assert.Equal(Hypotenuse, Math.Round(results.Item2, 4));
}
Я надеюсь, что вы, ребята, можете помочь мне выяснить, в чем проблема! :)
Спасибо!
Не связывайте изображения, вставьте соответствующий код непосредственно в вопрос. – Quantic
Пожалуйста, прочитайте http://stackoverflow.com/help/how-to-ask. –
'Math.Tan (Angle)' работает с радианами, а не с градусами. Вы считали это? Попробуйте 'Math.Tan ((Angle * 3.14)/180);' –