00001
00002
00003
00004
00005
00006
00007 #ifndef GEOMETRY_STRATEGY_ABSTRACT_BASE_H
00008 #define GEOMETRY_STRATEGY_ABSTRACT_BASE_H
00009
00010 #include "Points.h"
00011 #include <QPolygonF>
00012 #include <QVector>
00013
00014 class DocumentModelCoords;
00015 class DocumentModelGeneral;
00016 class MainWindowModel;
00017 class QPointF;
00018 class Transformation;
00019
00023 class GeometryStrategyAbstractBase
00024 {
00025 public:
00027 GeometryStrategyAbstractBase();
00028 virtual ~GeometryStrategyAbstractBase ();
00029
00031 virtual void calculateGeometry (const Points &points,
00032 const DocumentModelCoords &modelCoords,
00033 const DocumentModelGeneral &modelGeneral,
00034 const MainWindowModel &modelMainWindow,
00035 const Transformation &transformation,
00036 QString &funcArea,
00037 QString &polyArea,
00038 QVector<QString> &x,
00039 QVector<QString> &y,
00040 QVector<QString> &distanceGraphForward,
00041 QVector<QString> &distancePercentForward,
00042 QVector<QString> &distanceGraphBackward,
00043 QVector<QString> &distancePercentBackward) const = 0;
00044
00045 protected:
00046
00048 void calculatePositionsGraph (const Points &points,
00049 const Transformation &transformation,
00050 QVector<QPointF> &positionsGraph) const;
00051
00053 double functionArea (const QVector<QPointF> &positionsGraph) const;
00054
00058 void insertSubintervalsAndLoadDistances (int subintervalsPerInterval,
00059 const QVector<QPointF> &positionsGraph,
00060 QVector<QPointF> &positionsGraphWithSubintervals,
00061 QVector<QString> &distanceGraphForward,
00062 QVector<QString> &distancePercentForward,
00063 QVector<QString> &distanceGraphBackward,
00064 QVector<QString> &distancePercentBackward) const;
00065
00067 void loadXY (const QVector<QPointF> &positionsGraph,
00068 const DocumentModelCoords &modelCoords,
00069 const DocumentModelGeneral &modelGeneral,
00070 const MainWindowModel &modelMainWindow,
00071 const Transformation &transformation,
00072 QVector<QString> &x,
00073 QVector<QString> &y) const;
00074
00077 double polygonAreaForSimplyConnected (const QVector<QPointF> &points) const;
00078
00079 };
00080
00081 #endif // GEOMETRY_STRATEGY_ABSTRACT_BASE_H