From 0e53da5cc4e5952a58a004230b479ee6cb581b70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Tue, 5 Jun 2018 18:04:27 +0200 Subject: [PATCH] [apps/reg] Fix TrigonometricModel -> watch out for radians/degrees --- apps/regression/model/trigonometric_model.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/apps/regression/model/trigonometric_model.cpp b/apps/regression/model/trigonometric_model.cpp index f40aef511..6380ddb9b 100644 --- a/apps/regression/model/trigonometric_model.cpp +++ b/apps/regression/model/trigonometric_model.cpp @@ -1,5 +1,6 @@ #include "trigonometric_model.h" #include +#include #include namespace Regression { @@ -8,24 +9,26 @@ double TrigonometricModel::evaluate(double * modelCoefficients, double x) const double a = modelCoefficients[0]; double b = modelCoefficients[1]; double c = modelCoefficients[2]; - return a*sin(b*x+c); + double radianX = Poincare::Preferences::sharedPreferences()->angleUnit() == Poincare::Expression::AngleUnit::Radian ? x : x * M_PI/180.0; + return a*sin(b*radianX+c); } double TrigonometricModel::partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const { double a = modelCoefficients[0]; double b = modelCoefficients[1]; double c = modelCoefficients[2]; + double radianX = Poincare::Preferences::sharedPreferences()->angleUnit() == Poincare::Expression::AngleUnit::Radian ? x : x * M_PI/180.0; if (derivateCoefficientIndex == 0) { // Derivate: sin(b*x+c) - return sin(b*x+c); + return sin(b*radianX+c); } if (derivateCoefficientIndex == 1) { // Derivate: x*a*cos(b*x+c); - return x*a*cos(b*x+c); + return radianX*a*cos(b*radianX+c); } if (derivateCoefficientIndex == 2) { // Derivate: a*cos(b*x+c) - return a*cos(b*x+c); + return a*cos(b*radianX+c); } assert(false); return 0.0;