Engauge Digitizer  2
GeometryStrategyFunctionStraight.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 "GeometryStrategyFunctionStraight.h"
8 #include "Transformation.h"
9 
11 {
12 }
13 
14 GeometryStrategyFunctionStraight::~GeometryStrategyFunctionStraight()
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<bool> &isPotentialExportAmbiguity,
28  QVector<QString> &distanceGraphForward,
29  QVector<QString> &distancePercentForward,
30  QVector<QString> &distanceGraphBackward,
31  QVector<QString> &distancePercentBackward) const
32 {
33  const int NUM_SUB_INTERVALS_STRAIGHT = 1; // Value of one with trapezoidal integration results in calculations using straight lines between points
34 
35  QVector<QPointF> positionsGraph, positionsGraphWithSubintervals;
37  transformation,
38  positionsGraph);
39 
40  insertSubintervalsAndLoadDistances (NUM_SUB_INTERVALS_STRAIGHT,
41  positionsGraph,
42  positionsGraphWithSubintervals,
43  distanceGraphForward,
44  distancePercentForward,
45  distanceGraphBackward,
46  distancePercentBackward);
47  double fArea = functionArea (positionsGraphWithSubintervals);
48 
49  loadXY (positionsGraph,
50  modelCoords,
51  modelGeneral,
52  modelMainWindow,
53  transformation,
54  x,
55  y);
56 
58  y,
59  transformation,
60  isPotentialExportAmbiguity);
61 
62  // Set header values
63  funcArea = QString::number (fArea);
64  polyArea = "";
65 }
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...
void calculatePositionsGraph(const Points &points, const Transformation &transformation, QVector< QPointF > &positionsGraph) const
Convert screen positions to graph positions.
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.
virtual void loadPotentialExportVector(QVector< QString > &x, QVector< QString > &y, const Transformation &transformation, QVector< bool > &isPotentialExportAmbiguity) const
Load isPotentialExportAmbiguity vector. Default in base class is to load false values since there are...
Affine transformation between screen and graph coordinates, based on digitized axis points...
Model for DlgSettingsMainWindow.
Model for DlgSettingsCoords and CmdSettingsCoords.
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< bool > &isPotentialExportAmbiguity, QVector< QString > &distanceGraphForward, QVector< QString > &distancePercentForward, QVector< QString > &distanceGraphBackward, QVector< QString > &distancePercentBackward) const
Calculate geometry parameters.
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.