Engauge Digitizer  2
 All Classes Files Functions Variables Enumerations Enumerator Friends Pages
GeometryStrategyFunctionSmooth.cpp
1 /******************************************************************************************************
2  * (C) 2016 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3  * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4  * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5  ******************************************************************************************************/
6 
7 #include "GeometryStrategyFunctionSmooth.h"
8 #include "Transformation.h"
9 
11 {
12 }
13 
14 GeometryStrategyFunctionSmooth::~GeometryStrategyFunctionSmooth()
15 {
16 }
17 
19  const DocumentModelCoords &modelCoords,
20  const DocumentModelGeneral &modelGeneral,
21  const MainWindowModel &modelMainWindow,
22  const Transformation &transformation,
23  QString &funcArea,
24  QString &polyArea,
25  QVector<QString> &x,
26  QVector<QString> &y,
27  QVector<QString> &distanceGraphForward,
28  QVector<QString> &distancePercentForward,
29  QVector<QString> &distanceGraphBackward,
30  QVector<QString> &distancePercentBackward) const
31 {
32  const int NUM_SUB_INTERVALS_SMOOTH = 10; // One input point becomes NUM_SUB_INTERVALS points to account for smoothing
33 
34  QVector<QPointF> positionsGraph, positionsGraphWithSubintervals;
36  transformation,
37  positionsGraph);
38 
39  insertSubintervalsAndLoadDistances (NUM_SUB_INTERVALS_SMOOTH,
40  positionsGraph,
41  positionsGraphWithSubintervals,
42  distanceGraphForward,
43  distancePercentForward,
44  distanceGraphBackward,
45  distancePercentBackward);
46  double fArea = functionArea (positionsGraphWithSubintervals);
47 
48  loadXY (positionsGraph,
49  modelCoords,
50  modelGeneral,
51  modelMainWindow,
52  transformation,
53  x,
54  y);
55 
56  // Set header values
57  funcArea = QString::number (fArea);
58  polyArea = "";
59 }
void calculatePositionsGraph(const Points &points, const Transformation &transformation, QVector< QPointF > &positionsGraph) const
Convert screen positions to graph positions.
Model for DlgSettingsGeneral and CmdSettingsGeneral.
double functionArea(const QVector< QPointF > &positionsGraph) const
Use trapezoidal approximation to compute area under the function. Does not apply to relation...
Affine transformation between screen and graph coordinates, based on digitized axis points...
Model for DlgSettingsMainWindow.
void loadXY(const QVector< QPointF > &positionsGraph, const DocumentModelCoords &modelCoords, const DocumentModelGeneral &modelGeneral, const MainWindowModel &modelMainWindow, const Transformation &transformation, QVector< QString > &x, QVector< QString > &y) const
Load x and y coordinate vectors.
Model for DlgSettingsCoords and CmdSettingsCoords.
void insertSubintervalsAndLoadDistances(int subintervalsPerInterval, const QVector< QPointF > &positionsGraph, QVector< QPointF > &positionsGraphWithSubintervals, QVector< QString > &distanceGraphForward, QVector< QString > &distancePercentForward, QVector< QString > &distanceGraphBackward, QVector< QString > &distancePercentBackward) const
Insert the specified number of subintervals into each interval.
virtual void calculateGeometry(const Points &points, const DocumentModelCoords &modelCoords, const DocumentModelGeneral &modelGeneral, const MainWindowModel &modelMainWindow, const Transformation &transformation, QString &funcArea, QString &polyArea, QVector< QString > &x, QVector< QString > &y, QVector< QString > &distanceGraphForward, QVector< QString > &distancePercentForward, QVector< QString > &distanceGraphBackward, QVector< QString > &distancePercentBackward) const
Calculate geometry parameters.