#ifndef POINTCALCULATE_H #define POINTCALCULATE_H #include #include "filemanager.h" #include "global.h" namespace PointCalculate{ using namespace Global; void setAnalysisData(const QVector&); //QPair getStartAndEndPoint(); QPair getMinAndMaxOfSampleTemp(); QPair getMinAndMaxOfRunTime(); QPair getMinAndMaxOfDSC(); QPair getMinAndMaxOfAxis(const float min,const float max); QVector getDataInXRange(const float, const float); QVector getPointVtrInXRange(const float, const float); void setRegionPointX(const float,const float); ExperimentData getClosestDataByTemperature(const float); QPointF getClosestPointByX(const float); QVector getNearbyPointGroupByX(const float); QPointF getClosestPointByY(const double left,const double right,const double valueY); QPointF getPeakPoint(); QPair getMaxMinValue(); // According to the value of plot x axis witch of temperature value. QPair getTheMaximumAndMinimumValuesOfTime( const double min,const double max); QPair calculateStartAndEndPoint(); QPair calculateStartAndEndData(); float calculateArea(); double obtainTimeValueBasedOnTemperatureValue(const double sampleTemp); ExperimentData findOnSetDataByTemperature(const double x1,const double x2); ExperimentData findEndSetDataByTemperature(const double x1,const double x2); ExperimentData findOnSetDataByTime(const double x1,const double x2); // text format QString textFormatPeakPoint(const float enthalpyValue, const float peakValue, const float startPoint, const float endPoint); QString textFormatPeakPointWithTime(const float enthalpyValue, const float peakValue, const float startPoint, const float endPoint); QString textFormatNumbericalLabel(const QPointF); QString textFormatNumbericalLabelWithTime(const QPointF); QString textFormatStartPoint(const QPointF); QString textFormatStartPointWithTime(const QPointF); QString textFormatEndPoint(const QPointF); QString textFormatEndPointWithTime(const QPointF); QString textFormatGlassTranstion(const float t1,const float tg,const float t2); QString textFormatGlassTranstionWithTime(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); QVector movingAveragePoint(const QVector& data, int windowSize); extern QVector _dataVtr; extern QPointF _peakPoint; extern QPointF _leftSelectedPoint,_rightSelectedPoint; } #endif // POINTCALCULATE_H