From 1f4fad1f52e4ab83a62e4f6bb65f34fbfd083bf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Fri, 16 Dec 2016 16:58:13 +0100 Subject: [PATCH] [apps/probability] Color the integral under the curve Change-Id: I157ee8ed180dab366f89fcdcec82d4329f46a82b --- .../finite_integral_calculation.cpp | 2 +- apps/probability/calculation_controller.cpp | 1 + apps/probability/law_curve_view.cpp | 22 ++++++++++++++++--- apps/probability/law_curve_view.h | 3 +++ 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/apps/probability/calculation/finite_integral_calculation.cpp b/apps/probability/calculation/finite_integral_calculation.cpp index d1d1e9fb2..aa94f5b90 100644 --- a/apps/probability/calculation/finite_integral_calculation.cpp +++ b/apps/probability/calculation/finite_integral_calculation.cpp @@ -6,7 +6,7 @@ namespace Probability { FiniteIntegralCalculation::FiniteIntegralCalculation() : Calculation(), - m_lowerBound(-1.0f), + m_lowerBound(0.0f), m_upperBound(1.0f), m_result(0.0f) { diff --git a/apps/probability/calculation_controller.cpp b/apps/probability/calculation_controller.cpp index 7c28184fd..64b8c2e35 100644 --- a/apps/probability/calculation_controller.cpp +++ b/apps/probability/calculation_controller.cpp @@ -24,6 +24,7 @@ void CalculationController::ContentView::setLaw(Law * law) { void CalculationController::ContentView::setCalculation(Calculation * calculation) { m_calculation = calculation; + m_lawCurveView.setCalculation(calculation); m_imageTableView.setCalculation(calculation); } diff --git a/apps/probability/law_curve_view.cpp b/apps/probability/law_curve_view.cpp index 018011794..71a14c752 100644 --- a/apps/probability/law_curve_view.cpp +++ b/apps/probability/law_curve_view.cpp @@ -1,11 +1,13 @@ #include "law_curve_view.h" #include +#include namespace Probability { LawCurveView::LawCurveView() : CurveView(), - m_law(nullptr) + m_law(nullptr), + m_calculation(nullptr) { } @@ -13,19 +15,33 @@ void LawCurveView::setLaw(Law * law) { m_law = law; } +void LawCurveView::setCalculation(Calculation * calculation) { + m_calculation = calculation; +} + void LawCurveView::reload() { markRectAsDirty(bounds()); computeLabels(Axis::Horizontal); } void LawCurveView::drawRect(KDContext * ctx, KDRect rect) const { + float lowerBound = - INFINITY; + float upperBound = m_calculation->parameterAtIndex(0); + if (m_calculation->type() == Calculation::Type::RightIntegral) { + lowerBound = m_calculation->parameterAtIndex(0); + upperBound = +INFINITY; + } + if (m_calculation->type() == Calculation::Type::FiniteIntegral) { + lowerBound = m_calculation->parameterAtIndex(0); + upperBound = m_calculation->parameterAtIndex(1); + } ctx->fillRect(bounds(), KDColorWhite); drawAxes(Axis::Horizontal, ctx, rect); drawLabels(Axis::Horizontal, false, ctx, rect); if (m_law->isContinuous()) { - drawCurve(m_law, KDColorRed, ctx, rect); + drawCurve(m_law, KDColorRed, ctx, rect, true, lowerBound, upperBound); } else { - drawHistogram(m_law, KDColorRed, ctx, rect); + drawHistogram(m_law, KDColorBlue, ctx, rect, true, KDColorRed, lowerBound, upperBound); } } diff --git a/apps/probability/law_curve_view.h b/apps/probability/law_curve_view.h index 2152bf3dc..23ba954f8 100644 --- a/apps/probability/law_curve_view.h +++ b/apps/probability/law_curve_view.h @@ -4,6 +4,7 @@ #include "../curve_view.h" #include "../constant.h" #include "law/law.h" +#include "calculation/calculation.h" #include #include @@ -13,6 +14,7 @@ class LawCurveView : public CurveView { public: LawCurveView(); void setLaw(Law * law); + void setCalculation(Calculation * calculation); void reload(); void drawRect(KDContext * ctx, KDRect rect) const override; protected: @@ -24,6 +26,7 @@ private: char m_labels[k_maxNumberOfXLabels][Constant::FloatBufferSizeInScientificMode]; float evaluateCurveAtAbscissa(void * law, float abscissa) const override; Law * m_law; + Calculation * m_calculation; }; }