You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "iAlgDiffusionBase.h"
|
|
|
|
|
|
|
|
|
|
|
|
// 模型方法
|
|
|
|
|
|
enum KkModelMethod
|
|
|
|
|
|
{
|
|
|
|
|
|
KK_M_Power = 0, //乘幂
|
|
|
|
|
|
KK_M_Exp, //指数
|
|
|
|
|
|
KK_M_Unknown
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 计算
|
|
|
|
|
|
class M_DIFFUSION_EXPORT iAlgDiffusionKK : public iAlgDiffusionBase
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
iAlgDiffusionKK();
|
|
|
|
|
|
|
|
|
|
|
|
// 计算函数(调用算法)
|
|
|
|
|
|
virtual bool cal(VecDouble vecX, VecDouble& vecY1, VecDouble& vecY2);
|
|
|
|
|
|
virtual bool cal(double dIn, double& dOut1, double& dOut2);
|
|
|
|
|
|
virtual bool cal(VecDouble vecX, VecDouble& vecY);
|
|
|
|
|
|
virtual bool cal(double dIn, double& dOut);
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 根据dX/dY(左侧/右侧的第二个点),反算求解指数
|
|
|
|
|
|
/// @param dIndex求解的指数
|
|
|
|
|
|
/// @param dX,dY 点通常指的是鼠标移动后对应的数值点
|
|
|
|
|
|
/// @param bL(左侧还是右侧,左侧为第一个,右侧为第2个)
|
|
|
|
|
|
virtual bool inversCal(double& dIndex, double dX, double dY, bool bL);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
// 把参数Map解析为成员变量
|
|
|
|
|
|
virtual bool parseParas2Members(QStringList& listTagParas, QStringList& listTagModels);
|
|
|
|
|
|
|
|
|
|
|
|
// 输入(参数+输入)正确性验证
|
|
|
|
|
|
virtual bool checkParas();
|
|
|
|
|
|
virtual bool checkInputs();
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
double m_dIndex1; //指数1,比如Kro指数
|
|
|
|
|
|
KkModelMethod m_oModel1;//模型1,比如Kro模型
|
|
|
|
|
|
double m_dIndex2; //指数2,比如Krw指数
|
|
|
|
|
|
KkModelMethod m_oModel2;//模型2,比如Krw模型
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|