#ifndef POINTCALCULATE_H #define POINTCALCULATE_H #include #include "filemanager.h" namespace PointCalculate{ void setExperimentData(const QVector&); QPair getStartAndEndPoint(); QVector getDataInXRange(const float, const float); QVector getPointVtrInXRange(const float, const float); void setRegionPointX(const float,const float); QPointF getClosestPointByX(const float); QVector getNearbyPointGroupByX(const float); QPointF getClosestPointByY(const float left,const float right,const float valueY); QPointF getPeakPoint(); QPair getMaxMinValue(); QPair calculateStartAndEndPoint(); float calculateArea(); // text format QString textFormatPeakPoint(const float enthalpyValue, const float peakValue, const float startPoint, const float endPoint); QString textFormatNumbericalLabel(const QPointF); QString textFormatStartPoint(const QPointF); QString textFormatEndPoint(const QPointF); QString textFormatGlassTranstion(const float t1,const float tg,const float t2); // glass transition QPair getCurveInflectionPointTangent(const float,const float); struct Line { double slope; // double intercept; // }; QPointF getIntersection(const Line& line1, const Line& line2); double calculateSlope(double x1, double y1, double x2, double y2) ; QVector findInflectionPoints(const QVector& x, const QVector& y) ; QMap calculateTangentLine(const QVector& x, const QVector& y) ; //private void updateStartEndPoint(); QPair calculateMaxDiffPointLeft(); QPair calculateMaxDiffPointRight(); enum MaxDiffPointDetailType{ Left, Right }; QPair calculateMaxDiffPointDetail(const MaxDiffPointDetailType type); QPointF calculateIntersection(const QPointF p1,const QPointF p2, const QPointF p3, const QPointF p4); QVector getPeakPointGroup(); std::vector movingAverage(const std::vector& data, int windowSize); extern QVector _dataVtr; extern QPointF _peakPoint; extern QPointF _leftSelectedPoint,_rightSelectedPoint; } #endif // POINTCALCULATE_H