using System.Collections.Generic; using System.Linq; namespace IStation.Model { /// /// 特性曲线辅助类 /// public class FeatCurveHelper { /// /// 通过 频率 计算流量扬程曲线表达式 /// public static CurveExpress CalcuCurveQhByHz(Model.CurveExpress curve, double hz) { if (curve == null) return default; var points = curve.GetFitPoints(20); return CalcuCurveQhByHz(points, curve.FitType, hz); } /// /// 通过 频率 计算流量扬程曲线表达式 /// public static CurveExpress CalcuCurveQhByHz(List pts, eCurveFitType fit, double hz) { if (pts == null) return default; var fit_pow = CurveExpress.GetFitPow(fit); if (pts.Count < fit_pow + 1) return default; double f_ratio = hz / 50.0; var list = pts.Select(x => new CurvePoint(x.X * f_ratio, x.Y * f_ratio * f_ratio)).ToList(); return new CurveExpress(list, fit); //return new CurveExpress(pts, fit); } /// /// 通过 频率 计算流量功率曲线表达式 /// public static CurveExpress CalcuCurveQpByHz(Model.CurveExpress curve, double hz) { if (curve == null) return default; var points = curve.GetFitPoints(20); return CalcuCurveQpByHz(points, curve.FitType, hz); } /// /// 通过 频率 计算流量功率曲线表达式 /// public static CurveExpress CalcuCurveQpByHz(List pts, eCurveFitType fit, double hz) { if (pts == null) return default; var fit_pow = CurveExpress.GetFitPow(fit); if (pts.Count < fit_pow + 1) return default; double f_ratio = hz / 50.0; var list = pts.Select(x => new CurvePoint(x.X * f_ratio, x.Y * f_ratio * f_ratio * f_ratio)).ToList(); return new CurveExpress(list, fit); } } }