#ifndef POINTCALCULATE_H #define POINTCALCULATE_H #include #include "filemanager.h" namespace PointCalculate{ void setExperimentData(const QVector&); QPair getStartAndEndPoint(); void setRegionPointX(const float,const float); QPointF getClosestPointByX(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 LineStruct { float slope; // float intercept; // }; QPointF getIntersectionBySlope(const LineStruct& line1, const LineStruct& line2); //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