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 MainWindowModel &modelMainWindow,
21  const Transformation &transformation,
22  QString &funcArea,
23  QString &polyArea,
24  QVector<QString> &x,
25  QVector<QString> &y,
26  QVector<QString> &distanceGraphForward,
27  QVector<QString> &distancePercentForward,
28  QVector<QString> &distanceGraphBackward,
29  QVector<QString> &distancePercentBackward) const
30 {
31  const int NUM_SUB_INTERVALS_SMOOTH = 10; // One input point becomes NUM_SUB_INTERVALS points to account for smoothing
32 
33  QVector<QPointF> positionsGraph, positionsGraphWithSubintervals;
35  transformation,
36  positionsGraph);
37 
38  insertSubintervalsAndLoadDistances (NUM_SUB_INTERVALS_SMOOTH,
39  positionsGraph,
40  positionsGraphWithSubintervals,
41  distanceGraphForward,
42  distancePercentForward,
43  distanceGraphBackward,
44  distancePercentBackward);
45  double fArea = functionArea (positionsGraphWithSubintervals);
46 
47  loadXY (positionsGraph,
48  modelCoords,
49  modelMainWindow,
50  transformation,
51  x,
52  y);
53 
54  // Set header values
55  funcArea = QString::number (fArea);
56  polyArea = "";
57 }
void calculatePositionsGraph(const Points &points, const Transformation &transformation, QVector< QPointF > &positionsGraph) const
Convert screen positions to graph positions.
virtual void calculateGeometry(const Points &points, const DocumentModelCoords &modelCoords, 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.
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.
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.
void loadXY(const QVector< QPointF > &positionsGraph, const DocumentModelCoords &modelCoords, const MainWindowModel &modelMainWindow, const Transformation &transformation, QVector< QString > &x, QVector< QString > &y) const
Load x and y coordinate vectors.