Engauge Digitizer 2
Loading...
Searching...
No Matches
GeometryStrategyAbstractBase.h
Go to the documentation of this file.
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#ifndef GEOMETRY_STRATEGY_ABSTRACT_BASE_H
8#define GEOMETRY_STRATEGY_ABSTRACT_BASE_H
9
10#include "Points.h"
11#include <QPolygonF>
12#include <QString>
13#include <QVector>
14
17class MainWindowModel;
18class QPointF;
19class Transformation;
20
25{
26public:
30
32 virtual void calculateGeometry (const Points &points,
33 const DocumentModelCoords &modelCoords,
34 const DocumentModelGeneral &modelGeneral,
35 const MainWindowModel &modelMainWindow,
36 const Transformation &transformation,
46
47protected:
48
50 void calculatePositionsGraph (const Points &points,
51 const Transformation &transformation,
53
55 double functionArea (const QVector<QPointF> &positionsGraph) const;
56
67
71 const Transformation &transformation,
73
76 const DocumentModelCoords &modelCoords,
77 const DocumentModelGeneral &modelGeneral,
78 const MainWindowModel &modelMainWindow,
79 const Transformation &transformation,
81 QVector<QString> &y) const;
82
85 double polygonAreaForSimplyConnected (const QVector<QPointF> &points) const;
86
87};
88
89#endif // GEOMETRY_STRATEGY_ABSTRACT_BASE_H
const int INNER_RADIUS_MIN
QList< Point > Points
Definition Points.h:13
Model for DlgSettingsCoords and CmdSettingsCoords.
Model for DlgSettingsGeneral and CmdSettingsGeneral.
Base class for all geometry strategies.
double polygonAreaForSimplyConnected(const QVector< QPointF > &points) const
Area in polygon using Shoelace formula, which only works if polygon is simply connected.
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 =0
Calculate geometry parameters.
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...
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.
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 calculatePositionsGraph(const Points &points, const Transformation &transformation, QVector< QPointF > &positionsGraph) const
Convert screen positions to graph positions.
double functionArea(const QVector< QPointF > &positionsGraph) const
Use trapezoidal approximation to compute area under the function. Does not apply to relation.
Model for DlgSettingsMainWindow.
Affine transformation between screen and graph coordinates, based on digitized axis points.