Engauge Digitizer 2
Loading...
Searching...
No Matches
GeometryStrategyRelationSmooth Class Reference

Calculate for line through the points that is smoothly connected as a relation. More...

#include <GeometryStrategyRelationSmooth.h>

Inheritance diagram for GeometryStrategyRelationSmooth:
Inheritance graph
Collaboration diagram for GeometryStrategyRelationSmooth:
Collaboration graph

Public Member Functions

 GeometryStrategyRelationSmooth ()
 Single constructor.
virtual ~GeometryStrategyRelationSmooth ()
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.
Public Member Functions inherited from GeometryStrategyAbstractBase
 GeometryStrategyAbstractBase ()
 Single constructor.
virtual ~GeometryStrategyAbstractBase ()

Additional Inherited Members

Protected Member Functions inherited from GeometryStrategyAbstractBase
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.
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 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 no ambiguities.
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.
double polygonAreaForSimplyConnected (const QVector< QPointF > &points) const
 Area in polygon using Shoelace formula, which only works if polygon is simply connected.

Detailed Description

Calculate for line through the points that is smoothly connected as a relation.

Definition at line 16 of file GeometryStrategyRelationSmooth.h.

Constructor & Destructor Documentation

◆ GeometryStrategyRelationSmooth()

GeometryStrategyRelationSmooth::GeometryStrategyRelationSmooth ( )

Single constructor.

Definition at line 10 of file GeometryStrategyRelationSmooth.cpp.

11{
12}

◆ ~GeometryStrategyRelationSmooth()

GeometryStrategyRelationSmooth::~GeometryStrategyRelationSmooth ( )
virtual

Definition at line 14 of file GeometryStrategyRelationSmooth.cpp.

15{
16}

Member Function Documentation

◆ calculateGeometry()

void GeometryStrategyRelationSmooth::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
virtual

Calculate geometry parameters.

Implements GeometryStrategyAbstractBase.

Definition at line 18 of file GeometryStrategyRelationSmooth.cpp.

32{
33 const int NUM_SUB_INTERVALS_SMOOTH = 10; // One input point becomes NUM_SUB_INTERVALS points to account for smoothing
34
35 QVector<QPointF> positionsGraph, positionsGraphWithSubintervals;
37 transformation,
38 positionsGraph);
39
40 insertSubintervalsAndLoadDistances (NUM_SUB_INTERVALS_SMOOTH,
41 positionsGraph,
42 positionsGraphWithSubintervals,
43 distanceGraphForward,
44 distancePercentForward,
45 distanceGraphBackward,
46 distancePercentBackward);
47 double pArea = polygonAreaForSimplyConnected (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 = "";
64 polyArea = QString::number (pArea);
65}
double polygonAreaForSimplyConnected(const QVector< QPointF > &points) const
Area in polygon using Shoelace formula, which only works if polygon is simply connected.
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.

The documentation for this class was generated from the following files: