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);
}
}
}