#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模型 };