| | |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | |
| | | //namespace IStation.Model |
| | | //{ |
| | | // /// <summary> |
| | | // /// |
| | | // /// </summary> |
| | | // public partial class CurveCoordinateParas |
| | | // { |
| | | // #region è®¡ç®æ¾ç¤ºåæ°æ¹æ³ |
| | | |
| | | // #region é»è®¤ |
| | | // /// <summary> |
| | | // /// æå¤§æµé(æ¾ç¤ºåæ°) |
| | | // /// </summary> |
| | | // public double DispMaxQ() |
| | | // { |
| | | // return this.CoordMinQ + (double)this.GridNumberX * this.CoordSpaceQ; |
| | | // } |
| | | |
| | | // /// <summary> |
| | | // /// æå°æ¬ç¨(æ¾ç¤ºåæ°) |
| | | // /// </summary> |
| | | // public double DispMinH() |
| | | // { |
| | | // return this.CoordMinH + (double)this.StartLineNoH * this.CoordSpaceH; |
| | | // } |
| | | |
| | | // /// <summary> |
| | | // /// æå¤§æ¬ç¨(æ¾ç¤ºåæ°) |
| | | // /// </summary> |
| | | // public double DispMaxH() |
| | | // { |
| | | // return CoordMinH + (double)this.EndLineNoH * this.CoordSpaceH; |
| | | // } |
| | | |
| | | // /// <summary> |
| | | // /// æå°æç(æ¾ç¤ºåæ°) |
| | | // /// </summary> |
| | | // public double DispMinE() |
| | | // { |
| | | // return this.CoordMinE + (double)this.StartLineNoE * this.CoordSpaceE; |
| | | // } |
| | | |
| | | // /// <summary> |
| | | // /// æå¤§æç(æ¾ç¤ºåæ°) |
| | | // /// </summary> |
| | | // public double DispMaxE() |
| | | // { |
| | | // return this.CoordMinE + (double)this.EndLineNoE * this.CoordSpaceE; |
| | | // } |
| | | |
| | | // /// <summary> |
| | | // /// æå°åç(æ¾ç¤ºåæ°) |
| | | // /// </summary> |
| | | // public double DispMinP() |
| | | // { |
| | | // return this.CoordMinP + (double)this.StartLineNoP * this.CoordSpaceP; |
| | | // } |
| | | |
| | | // /// <summary> |
| | | // /// æå¤§åç(æ¾ç¤ºåæ°) |
| | | // /// </summary> |
| | | // public double DispMaxP() |
| | | // { |
| | | // return this.CoordMinP + (double)this.EndLineNoP * this.CoordSpaceP; |
| | | // } |
| | | |
| | | // #endregion |
| | | |
| | | // /// <summary> |
| | | // /// éç½®æ¬ç¨åæ |
| | | // /// </summary> |
| | | // public void ResetCoordH(double space, double disMinH, double disMaxH) |
| | | // { |
| | | // this.CoordSpaceH = space; |
| | | // this.EndLineNoH = this.GridNumberY; |
| | | // this.StartLineNoH = this.EndLineNoH - (int)((disMaxH - disMinH) / this.CoordSpaceH); |
| | | // this.CoordMinH = disMaxH - (double)this.EndLineNoH * this.CoordSpaceH; |
| | | // } |
| | | // #endregion |
| | | |
| | | // #region 计ç®åæ |
| | | // /// <summary> |
| | | // /// 计ç®åæ |
| | | // /// </summary> |
| | | // /// <param name="group">æ²çº¿ç»</param> |
| | | // /// <returns></returns> |
| | | // public static CurveCoordinateParas CalcCoordinate(Model.FeatCurveExpressGroup group) |
| | | // { |
| | | // if (group == null) |
| | | // return null; |
| | | // return CalcCoordinate(group.CurveQH, group.CurveQE, group.CurveQP); |
| | | // } |
| | | |
| | | // /// <summary> |
| | | // /// 计ç®åæ |
| | | // /// </summary> |
| | | // /// <param name="QH">æµéæ¬ç¨çº¿</param> |
| | | // /// <param name="QE">æµéæç线</param> |
| | | // /// <param name="QP">æµéåç线</param> |
| | | // /// <returns></returns> |
| | | // public static CurveCoordinateParas CalcCoordinate(Model.CurveExpress QH, Model.CurveExpress QE, Model.CurveExpress QP) |
| | | // { |
| | | // if (QH == null) |
| | | // return null; |
| | | |
| | | // List<Model.CurvePoint> pointsQH = QH.GetFitPoints(); |
| | | // List<Model.CurvePoint> pointsQE = null; |
| | | // if (QE != null) |
| | | // pointsQE = QE.GetFitPoints(); |
| | | // List<Model.CurvePoint> pointsQP = null; |
| | | // if (QP != null) |
| | | // pointsQP = QP.GetFitPoints(); |
| | | |
| | | // return CalcCoordinate(pointsQH, pointsQE, pointsQP); |
| | | // } |
| | | |
| | | // /// <summary> |
| | | // /// 计ç®åæ |
| | | // /// </summary> |
| | | // /// <param name="QH">æµéæ¬ç¨çº¿</param> |
| | | // /// <param name="QE">æµéæç线</param> |
| | | // /// <param name="QP">æµéåç线</param> |
| | | // /// <returns></returns> |
| | | // public static CurveCoordinateParas CalcCoordinate(List<Model.CurvePoint> QH, List<Model.CurvePoint> QE, List<Model.CurvePoint> QP) |
| | | // { |
| | | // if (QH == null) |
| | | // return null; |
| | | // double maxQ = 0.0; |
| | | // double minQ = 1000.0; |
| | | // double maxH = 0.0; |
| | | // double minH = 1000.0; |
| | | // double maxE = 0.0; |
| | | // double minE = 1000.0; |
| | | // double maxP = 0.0; |
| | | // double minP = 1000.0; |
| | | |
| | | // if (QE == null && QP == null) |
| | | // { |
| | | // minQ = QH.Min(x => x.X); |
| | | // maxQ = QH.Max(x => x.X); |
| | | // if (minQ > maxQ) |
| | | // { |
| | | // return null; |
| | | // } |
| | | // minH = QH.Min(x => x.Y); |
| | | // maxH = QH.Max(x => x.Y); |
| | | // if (minH > maxH) |
| | | // { |
| | | // return null; |
| | | // } |
| | | // } |
| | | // else |
| | | // { |
| | | // CalcMinMaxValue(QH, QE, QP, ref maxQ, ref minQ, ref maxH, ref minH, ref maxE, ref minE, ref maxP, ref minP); |
| | | // } |
| | | |
| | | // return CalcCoordinate(minQ, maxQ, minH, maxH, minE, maxE, minP, maxP); |
| | | // } |
| | | |
| | | // /// <summary> |
| | | // /// è®¡ç®æå¤§æå°å¼ |
| | | // /// </summary> |
| | | // /// <param name="QH">æµéæ¬ç¨çº¿</param> |
| | | // /// <param name="QE">æµéæç线</param> |
| | | // /// <param name="QP">æµéåç线</param> |
| | | // /// <param name="maxQ">æå¤§æµé</param> |
| | | // /// <param name="minQ">æå°æµé</param> |
| | | // /// <param name="maxH">æå¤§æ¬ç¨</param> |
| | | // /// <param name="minH">æå°æ¬ç¨</param> |
| | | // /// <param name="maxE">æå¤§æç</param> |
| | | // /// <param name="minE">æå°æç</param> |
| | | // /// <param name="maxP">æå¤§åç</param> |
| | | // /// <param name="minP">æå°åç</param> |
| | | // /// <returns></returns> |
| | | // public static bool CalcMinMaxValue(List<Model.CurvePoint> QH, List<Model.CurvePoint> QE, List<Model.CurvePoint> QP, ref double maxQ, ref double minQ, ref double maxH, ref double minH, ref double maxE, ref double minE, ref double maxP, ref double minP) |
| | | // { |
| | | // maxQ = 0.0; |
| | | // minQ = 1000.0; |
| | | // maxH = 0.0; |
| | | // minH = 1000.0; |
| | | // maxE = 0.0; |
| | | // minE = 1000.0; |
| | | // maxP = 0.0; |
| | | // minP = 1000.0; |
| | | // if (QH == null) |
| | | // { |
| | | // return false; |
| | | // } |
| | | // minQ = QH.Min(x => x.X); |
| | | // maxQ = QH.Max(x => x.X); |
| | | // if (minQ > maxQ) |
| | | // { |
| | | // return false; |
| | | // } |
| | | // minH = QH.Min(x => x.Y); |
| | | // maxH = QH.Max(x => x.Y); |
| | | // if (QE != null && QE.Count > 0) |
| | | // { |
| | | // minE = QE.Min(x => x.Y); |
| | | // maxE = QE.Max(x => x.Y); |
| | | // } |
| | | // if (QP != null && QP.Count > 0) |
| | | // { |
| | | // minP = QP.Min(x => x.Y); |
| | | // maxP = QP.Max(x => x.Y); |
| | | // } |
| | | // return true; |
| | | // } |
| | | |
| | | // /// <summary> |
| | | // /// 计ç®åæ |
| | | // /// </summary> |
| | | // /// <param name="minQ">æå°æµé</param> |
| | | // /// <param name="maxQ">æå¤§æµé</param> |
| | | // /// <param name="minH">æå°æ¬ç¨</param> |
| | | // /// <param name="maxH">æå¤§æ¬ç¨</param> |
| | | // /// <param name="minE">æå°æç</param> |
| | | // /// <param name="maxE">æå¤§æç</param> |
| | | // /// <param name="minP">æå°åç</param> |
| | | // /// <param name="maxP">æå¤§åç</param> |
| | | // /// <returns></returns> |
| | | // public static CurveCoordinateParas CalcCoordinate(double minQ, double maxQ, double minH, double maxH, double minE, double maxE, double minP, double maxP) |
| | | // { |
| | | // if (minQ > maxQ - 0.01) |
| | | // return null; |
| | | |
| | | // if (minH > maxH - 0.01) |
| | | // return null; |
| | | |
| | | // var validGridNumH = 6; |
| | | // var coordinateParas = new CurveCoordinateParas(); |
| | | // coordinateParas.GridNumberX = 10; |
| | | // coordinateParas.GridNumberY = 18; |
| | | // CalcCoordinateQ(minQ, maxQ, ref coordinateParas, coordinateParas.GridNumberX); |
| | | // CalcCoordinateH(minH, maxH, validGridNumH, ref coordinateParas, out double disMinH, out double disMaxH); |
| | | |
| | | // if (maxP > minP + 0.01) |
| | | // CalcCoordinateP(minP, maxP, disMaxH, 0, ref coordinateParas); |
| | | |
| | | // if (maxE > minE + 0.01) |
| | | // CalcCoordinateE(minE, maxE, ref coordinateParas); |
| | | |
| | | // return coordinateParas; |
| | | // } |
| | | |
| | | // #endregion |
| | | |
| | | // #region 计ç®å¯¹åºçº¿åæ |
| | | |
| | | // /// <summary> |
| | | // /// è®¡ç®æµéåæ |
| | | // /// </summary> |
| | | // /// <param name="minQ">æå°æµé</param> |
| | | // /// <param name="maxQ">æå¤§æµé</param> |
| | | // /// <param name="coordinateParas">åæ Model</param> |
| | | // /// <param name="validGridNum">ææå»åº¦ç¹</param> |
| | | // /// <param name="default_num">æ¾å¤§ç³»æ°</param> |
| | | // public static void CalcCoordinateQ(double minQ, double maxQ, ref CurveCoordinateParas coordinateParas, int validGridNum = 10, double default_num = 1.0) |
| | | // { |
| | | // var coordSpaceQ = GetOptimalSpaceMin(minQ / default_num, maxQ / default_num, validGridNum, out double disMinQ, out double disMaxQ) * default_num; |
| | | // coordSpaceQ = Math.Max(0.5, coordSpaceQ / default_num) * default_num; |
| | | // if (coordSpaceQ == 8.0) |
| | | // coordSpaceQ = 10.0; |
| | | |
| | | // disMinQ *= default_num; |
| | | // //disMaxQ *= default_num; |
| | | // var gridNumberX = 0; |
| | | |
| | | // double min_q = disMinQ; |
| | | // while (min_q < maxQ) |
| | | // { |
| | | // gridNumberX++; |
| | | // min_q = disMinQ + gridNumberX * coordSpaceQ; |
| | | // } |
| | | |
| | | // if (gridNumberX <= 5) |
| | | // { |
| | | // coordSpaceQ *= 0.5; |
| | | // gridNumberX *= 2; |
| | | // } |
| | | |
| | | // coordinateParas.CoordSpaceQ = coordSpaceQ; |
| | | // coordinateParas.CoordMinQ = disMinQ; |
| | | // coordinateParas.GridNumberX = gridNumberX; |
| | | // } |
| | | |
| | | // /// <summary> |
| | | // /// è®¡ç®æ¬ç¨åæ å«è¿æ»¤ (Eventech: CalcCoordinateH2) |
| | | // /// </summary> |
| | | // /// <param name="minH">æå°æ¬ç¨</param> |
| | | // /// <param name="maxH">æå¤§æ¬ç¨</param> |
| | | // /// <param name="validGridNumH">æææ¬ç¨å»åº¦æ°</param> |
| | | // /// <param name="coordinateParas">åæ Model</param> |
| | | // /// <param name="disMinH">æå°æ¾ç¤ºæ¬ç¨</param> |
| | | // /// <param name="disMaxH">æå¤§æ¾ç¤ºæ¬ç¨</param> |
| | | // public static void CalcCoordinateH_Filter(double minH, double maxH, int validGridNumH, ref CurveCoordinateParas coordinateParas, out double disMinH, out double disMaxH) |
| | | // { |
| | | // if (maxH < 1.0) |
| | | // { |
| | | // disMinH = 0.0; |
| | | // disMaxH = 1.0; |
| | | // coordinateParas.ResetCoordH(0.1, disMinH, disMaxH); |
| | | // } |
| | | // else if (maxH < 2.0) |
| | | // { |
| | | // disMinH = 0.0; |
| | | // disMaxH = 2.0; |
| | | // coordinateParas.ResetCoordH(0.2, disMinH, disMaxH); |
| | | // } |
| | | // else if (maxH < 5.0) |
| | | // { |
| | | // disMinH = 0.0; |
| | | // disMaxH = 5.0; |
| | | // coordinateParas.ResetCoordH(0.5, disMinH, disMaxH); |
| | | // } |
| | | // else if (maxH < 10.0) |
| | | // { |
| | | // disMinH = 0.0; |
| | | // disMaxH = 10.0; |
| | | // coordinateParas.ResetCoordH(1.0, disMinH, disMaxH); |
| | | // } |
| | | // else if (maxH < 12.0) |
| | | // { |
| | | // coordinateParas.CoordSpaceH = 1.0; |
| | | // disMinH = 0.0; |
| | | // disMaxH = 12.0; |
| | | // coordinateParas.ResetCoordH(1.0, disMinH, disMaxH); |
| | | // } |
| | | // else if (maxH < 15.0) |
| | | // { |
| | | // coordinateParas.CoordSpaceH = 2.0; |
| | | // disMinH = 0.0; |
| | | // disMaxH = 16.0; |
| | | // coordinateParas.ResetCoordH(2.0, disMinH, disMaxH); |
| | | // } |
| | | // else if (maxH < 20.0) |
| | | // { |
| | | // coordinateParas.CoordSpaceH = 2.0; |
| | | // disMinH = 0.0; |
| | | // disMaxH = 20.0; |
| | | // coordinateParas.ResetCoordH(2.0, disMinH, disMaxH); |
| | | // } |
| | | // else |
| | | // { |
| | | // CalcCoordinateH(minH, maxH, validGridNumH, ref coordinateParas, out disMinH, out disMaxH); |
| | | // } |
| | | // } |
| | | |
| | | // /// <summary> |
| | | // /// è®¡ç®æ¬ç¨åæ |
| | | // /// </summary> |
| | | // /// <param name="minH">æå°æ¬ç¨</param> |
| | | // /// <param name="maxH">æå¤§æ¬ç¨</param> |
| | | // /// <param name="validGridNumH">æææ¬ç¨å»åº¦æ°</param> |
| | | // /// <param name="coordinateParas">åæ Model</param> |
| | | // /// <param name="disMinH">æå°æ¾ç¤ºæ¬ç¨</param> |
| | | // /// <param name="disMaxH">æå¤§æ¾ç¤ºæ¬ç¨</param> |
| | | // public static void CalcCoordinateH(double minH, double maxH, int validGridNumH, ref CurveCoordinateParas coordinateParas, out double disMinH, out double disMaxH) |
| | | // { |
| | | // var coordSpaceH = GetOptimalSpaceMax(minH, maxH, validGridNumH, out disMinH, out disMaxH); |
| | | // int endLineNoH = coordinateParas.GridNumberY; |
| | | // int stratLineNoH = endLineNoH; |
| | | |
| | | // double max_h = disMaxH;//夿æ¡ä»¶ |
| | | // while (max_h > minH * 0.98) |
| | | // { |
| | | // max_h -= coordSpaceH; |
| | | // if (max_h < 0.0) |
| | | // break; |
| | | // stratLineNoH--; |
| | | // } |
| | | |
| | | // coordinateParas.CoordSpaceH = coordSpaceH; |
| | | // coordinateParas.EndLineNoH = endLineNoH; |
| | | // coordinateParas.StartLineNoH = stratLineNoH; |
| | | // coordinateParas.CoordMinH = disMaxH - (double)endLineNoH * coordSpaceH; |
| | | // } |
| | | |
| | | // /// <summary> |
| | | // /// 计ç®åçåæ |
| | | // /// </summary> |
| | | // /// <param name="minP">æå°åç</param> |
| | | // /// <param name="maxP">æå¤§åç</param> |
| | | // /// <param name="disMaxH">æå¤§æ¾ç¤ºæ¬ç¨</param> |
| | | // /// <param name="downGridNum">æä½ç¹å»åº¦</param> |
| | | // /// <param name="coordinateParas">åæ Model</param> |
| | | // public static void CalcCoordinateP(double minP, double maxP, double disMaxH, int downGridNum, ref CurveCoordinateParas coordinateParas) |
| | | // { |
| | | // int default_num = 5; |
| | | // int spaceNum = coordinateParas.StartLineNoH - default_num - downGridNum; |
| | | // if (spaceNum < 3) |
| | | // spaceNum = 3; |
| | | |
| | | // var coordSpaceP = GetOptimalSpaceMax(minP, maxP, spaceNum, out double disMinP, out double disMaxP); |
| | | // int endLineNoP = coordinateParas.StartLineNoH - default_num; |
| | | // int stratLineNoP = endLineNoP; |
| | | |
| | | // double max_p = disMaxP; |
| | | // while (max_p > minP * 0.98) |
| | | // { |
| | | // max_p -= coordSpaceP; |
| | | // if (max_p < 0.0) |
| | | // break; |
| | | // stratLineNoP--; |
| | | // } |
| | | |
| | | // coordinateParas.CoordSpaceP = coordSpaceP; |
| | | // coordinateParas.EndLineNoP = endLineNoP; |
| | | // coordinateParas.StartLineNoP = stratLineNoP; |
| | | |
| | | // //妿å¼å§å»åº¦ä½äºæä½ç¹å»åº¦ é½å¾ä¸å å·®å¼ |
| | | // if (coordinateParas.StartLineNoP < downGridNum) |
| | | // { |
| | | // int diff_num = downGridNum - coordinateParas.StartLineNoP; |
| | | |
| | | // coordinateParas.EndLineNoP += diff_num; |
| | | // coordinateParas.StartLineNoP += diff_num; |
| | | // } |
| | | |
| | | // coordinateParas.CoordMinH = GetByPlacesLength(disMaxH - (double)coordinateParas.EndLineNoH * coordinateParas.CoordSpaceH, 3); |
| | | // coordinateParas.CoordMinP = GetByPlacesLength(disMaxP - (double)coordinateParas.EndLineNoP * coordinateParas.CoordSpaceP, 3); |
| | | // } |
| | | |
| | | // /// <summary> |
| | | // /// è®¡ç®æçåæ |
| | | // /// </summary> |
| | | // /// <param name="minE">æå°æç</param> |
| | | // /// <param name="maxE">æå¤§æç</param> |
| | | // /// <param name="coordinateParas">åæ Model</param> |
| | | // public static void CalcCoordinateE(double minE, double maxE, ref CurveCoordinateParas coordinateParas) |
| | | // { |
| | | // int startLineNoE = coordinateParas.StartLineNoH - 6; |
| | | // if (maxE <= 40.0) |
| | | // { |
| | | // coordinateParas.StartLineNoE = startLineNoE; |
| | | // coordinateParas.EndLineNoE = coordinateParas.StartLineNoE + 6; |
| | | // coordinateParas.CoordSpaceE = 5.0; |
| | | // } |
| | | // else if (maxE <= 50.0) |
| | | // { |
| | | // coordinateParas.StartLineNoE = startLineNoE - 5; |
| | | // coordinateParas.EndLineNoE = coordinateParas.StartLineNoE + 10; |
| | | // coordinateParas.CoordSpaceE = 5.0; |
| | | // } |
| | | // else if (maxE <= 60) |
| | | // { |
| | | // coordinateParas.StartLineNoE = startLineNoE; |
| | | // coordinateParas.EndLineNoE = coordinateParas.StartLineNoE + 6; |
| | | // coordinateParas.CoordSpaceE = 10.0; |
| | | // } |
| | | // else |
| | | // { |
| | | // coordinateParas.StartLineNoE = startLineNoE; |
| | | // coordinateParas.EndLineNoE = coordinateParas.StartLineNoE + 5; |
| | | // coordinateParas.CoordSpaceE = 20.0; |
| | | // } |
| | | // coordinateParas.CoordMinE = (double)(-coordinateParas.StartLineNoE) * coordinateParas.CoordSpaceE; |
| | | // } |
| | | |
| | | // #endregion |
| | | |
| | | // #region Space é´é |
| | | // /// <summary> |
| | | // /// è·åæå°çé´é |
| | | // /// </summary> |
| | | // /// <param name="minValue">æå°å¼</param> |
| | | // /// <param name="maxValue">æå¤§å¼</param> |
| | | // /// <param name="spaceNum">é´éæ°é</param> |
| | | // /// <param name="minDisplay">æå°æ¾ç¤ºåæ°</param> |
| | | // /// <param name="maxDisplay">æå¤§æ¾ç¤ºåæ°</param> |
| | | // /// <returns></returns> |
| | | // public static double GetOptimalSpaceMin(double minValue, double maxValue, int spaceNum, out double minDisplay, out double maxDisplay) |
| | | // { |
| | | // minDisplay = minValue; |
| | | // maxDisplay = maxValue; |
| | | // double num = maxValue - minValue; |
| | | // if (num < 0.0 || spaceNum < 1) |
| | | // { |
| | | // return (maxValue - minValue) / 10.0; |
| | | // } |
| | | |
| | | // double optimalSpace = GetOptimalSpace((maxValue - minValue) / (double)spaceNum); |
| | | // if (optimalSpace < 2.0) |
| | | // { |
| | | // minDisplay = Math.Floor(minValue / optimalSpace) * optimalSpace; |
| | | // maxDisplay = minDisplay + (double)spaceNum * optimalSpace; |
| | | // } |
| | | // else |
| | | // { |
| | | // minDisplay = Math.Floor(minValue / optimalSpace) * optimalSpace; |
| | | // maxDisplay = minDisplay + (double)spaceNum * optimalSpace; |
| | | // } |
| | | |
| | | // return optimalSpace; |
| | | // } |
| | | |
| | | // /// <summary> |
| | | // /// è·åæå¤§çé´é |
| | | // /// </summary> |
| | | // /// <param name="minValue">æå°å¼</param> |
| | | // /// <param name="maxValue">æå¤§å¼</param> |
| | | // /// <param name="spaceNum">é´éæ°é</param> |
| | | // /// <param name="minDisplay">æå°æ¾ç¤ºåæ°</param> |
| | | // /// <param name="maxDisplay">æå¤§æ¾ç¤ºåæ°</param> |
| | | // /// <returns></returns> |
| | | // public static double GetOptimalSpaceMax(double minValue, double maxValue, int spaceNum, out double minDisplay, out double maxDisplay) |
| | | // { |
| | | // minDisplay = minValue; |
| | | // maxDisplay = maxValue; |
| | | // double num = maxValue - minValue; |
| | | |
| | | // if (maxValue > 20) |
| | | // { |
| | | // if (num < 0.0 || spaceNum < 1) |
| | | // { |
| | | // return (maxValue - minValue) / 5.0; |
| | | // } |
| | | // } |
| | | // else |
| | | // { |
| | | // if (num < 0.0 || spaceNum < 1) |
| | | // { |
| | | // return (maxValue - minValue) / 10.0; |
| | | // } |
| | | // } |
| | | |
| | | // double optimalSpace = GetOptimalSpace((maxValue - minValue) / (double)spaceNum, true); |
| | | // maxDisplay = Math.Ceiling(maxValue / optimalSpace) * optimalSpace; |
| | | // minDisplay = maxDisplay - (double)spaceNum * optimalSpace; |
| | | |
| | | // if (minDisplay > minValue) |
| | | // { |
| | | // var diff = minDisplay - minValue; |
| | | // if (diff < optimalSpace) |
| | | // { |
| | | // minDisplay -= optimalSpace; |
| | | // } |
| | | |
| | | // } |
| | | |
| | | // return optimalSpace; |
| | | // } |
| | | |
| | | // /// <summary> |
| | | // /// è·åæä½³é´é (ç²¾ç»åæ´) |
| | | // /// </summary> |
| | | // /// <param name="refSpace"> é´é</param> |
| | | // /// <returns></returns> |
| | | // public static double GetOptimalSpace(double refSpace, bool IsAccurate = false) |
| | | // { |
| | | // if (refSpace < 1E-06) |
| | | // { |
| | | // return 1.0; |
| | | // } |
| | | |
| | | // if (refSpace < 0.01) |
| | | // { |
| | | // double refSpace2 = refSpace * 100.0; |
| | | // return GetOptimalSpace(refSpace2) / 100.0; |
| | | // } |
| | | |
| | | // if (refSpace < 0.1) |
| | | // { |
| | | // double refSpace3 = refSpace * 10.0; |
| | | // return GetOptimalSpace(refSpace3) / 10.0; |
| | | // } |
| | | |
| | | // if (IsAccurate) |
| | | // { |
| | | // if (refSpace < 11.0) |
| | | // { |
| | | // if (refSpace < 1.35) |
| | | // { |
| | | // return 1.0; |
| | | // } |
| | | |
| | | // if (refSpace < 2.2) |
| | | // { |
| | | // return 2.0; |
| | | // } |
| | | |
| | | // if (refSpace < 5.5) |
| | | // { |
| | | // return 5.0; |
| | | // } |
| | | |
| | | // if (refSpace < 8.5) |
| | | // { |
| | | // return 8.0; |
| | | // } |
| | | |
| | | // return 10.0; |
| | | // } |
| | | // } |
| | | |
| | | // if (refSpace < 1.0) |
| | | // { |
| | | // if (refSpace < 0.15) |
| | | // { |
| | | // return 0.1; |
| | | // } |
| | | |
| | | // if (refSpace < 0.22) |
| | | // { |
| | | // return 0.2; |
| | | // } |
| | | |
| | | // if (refSpace < 0.6) |
| | | // { |
| | | // return 0.5; |
| | | // } |
| | | |
| | | // return 1.0; |
| | | // } |
| | | |
| | | // if (refSpace < 1.2) |
| | | // { |
| | | // return 1.0; |
| | | // } |
| | | |
| | | // if (refSpace < 3.0) |
| | | // { |
| | | // if (refSpace < 1.2) |
| | | // { |
| | | // return 1.0; |
| | | // } |
| | | |
| | | // if (refSpace < 2.3) |
| | | // { |
| | | // return 2.0; |
| | | // } |
| | | |
| | | // return 3.0; |
| | | // } |
| | | |
| | | // if (refSpace < 11.0) |
| | | // { |
| | | // if (refSpace < 1.35) |
| | | // { |
| | | // return 1.0; |
| | | // } |
| | | |
| | | // if (refSpace < 2.2) |
| | | // { |
| | | // return 2.0; |
| | | // } |
| | | |
| | | // if (refSpace < 5.5) |
| | | // { |
| | | // return 5.0; |
| | | // } |
| | | |
| | | // if (refSpace < 8.5) |
| | | // { |
| | | // return 8.0; |
| | | // } |
| | | |
| | | // return 10.0; |
| | | // } |
| | | |
| | | // if (refSpace < 16.0) |
| | | // { |
| | | // return 15.0; |
| | | // } |
| | | |
| | | // if (refSpace < 22.0) |
| | | // { |
| | | // return 20.0; |
| | | // } |
| | | |
| | | // if (refSpace < 35.0) |
| | | // { |
| | | // return 25.0; |
| | | // } |
| | | |
| | | // if (refSpace < 41.0) |
| | | // { |
| | | // return 40.0; |
| | | // } |
| | | |
| | | // if (refSpace < 51.0) |
| | | // { |
| | | // return 50.0; |
| | | // } |
| | | |
| | | // if (refSpace < 61.0) |
| | | // { |
| | | // return 60.0; |
| | | // } |
| | | |
| | | // if (refSpace < 71.0) |
| | | // { |
| | | // return 70.0; |
| | | // } |
| | | |
| | | // if (refSpace < 78.0) |
| | | // { |
| | | // return 75.0; |
| | | // } |
| | | |
| | | // if (refSpace < 150.0) |
| | | // { |
| | | // return 100.0; |
| | | // } |
| | | |
| | | // if (refSpace < 230.0) |
| | | // { |
| | | // return 200.0; |
| | | // } |
| | | |
| | | // if (refSpace < 270.0) |
| | | // { |
| | | // return 250.0; |
| | | // } |
| | | |
| | | // if (refSpace < 1500.0) |
| | | // { |
| | | // int num = (int)(refSpace / 100.0); |
| | | // return num * 100; |
| | | // } |
| | | |
| | | // int num2 = (int)(refSpace / 1000.0); |
| | | // return num2 * 1000; |
| | | // } |
| | | |
| | | // #endregion |
| | | |
| | | // #region æ°åè¾
婿¹æ³ |
| | | // /// <summary> |
| | | // /// ææå®é¿åº¦è·å |
| | | // /// </summary> |
| | | // public static double GetByPlacesLength(double value, int length) |
| | | // { |
| | | // int decimalPlacesLength = GetDecimalPlacesLength(value); |
| | | // if (decimalPlacesLength > length) |
| | | // { |
| | | // return Math.Round(value, length); |
| | | // } |
| | | // return value; |
| | | // } |
| | | |
| | | // /// <summary> |
| | | // /// è·åå°æ°ç¹é¿åº¦ |
| | | // /// </summary> |
| | | // private static int GetDecimalPlacesLength(double value) |
| | | // { |
| | | // string text = value.ToString(); |
| | | // int num = text.IndexOf('.'); |
| | | // if (num >= 0) |
| | | // { |
| | | // return text.Length - num - 1; |
| | | // } |
| | | // return 0; |
| | | // } |
| | | // #endregion |
| | | |
| | | // } |
| | | //} |
| | | namespace IStation.Model |
| | | { |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public double DispMaxQ() |
| | | { |
| | | return this.CoordMinQ + (double)this.GridNumberX * this.CoordSpaceQ; |
| | | return this.CoordMinQ + this.GridNumberX * this.CoordSpaceQ; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public double DispMinH() |
| | | { |
| | | return this.CoordMinH + (double)this.StartLineNoH * this.CoordSpaceH; |
| | | return this.CoordMinH + this.StartLineNoH * this.CoordSpaceH; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public double DispMaxH() |
| | | { |
| | | return CoordMinH + (double)this.EndLineNoH * this.CoordSpaceH; |
| | | return CoordMinH + this.EndLineNoH * this.CoordSpaceH; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public double DispMinE() |
| | | { |
| | | return this.CoordMinE + (double)this.StartLineNoE * this.CoordSpaceE; |
| | | return this.CoordMinE + this.StartLineNoE * this.CoordSpaceE; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public double DispMaxE() |
| | | { |
| | | return this.CoordMinE + (double)this.EndLineNoE * this.CoordSpaceE; |
| | | return this.CoordMinE + this.EndLineNoE * this.CoordSpaceE; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public double DispMinP() |
| | | { |
| | | return this.CoordMinP + (double)this.StartLineNoP * this.CoordSpaceP; |
| | | return this.CoordMinP + this.StartLineNoP * this.CoordSpaceP; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public double DispMaxP() |
| | | { |
| | | return this.CoordMinP + (double)this.EndLineNoP * this.CoordSpaceP; |
| | | return this.CoordMinP + this.EndLineNoP * this.CoordSpaceP; |
| | | } |
| | | |
| | | #endregion |
| | |
| | | this.CoordSpaceH = space; |
| | | this.EndLineNoH = this.GridNumberY; |
| | | this.StartLineNoH = this.EndLineNoH - (int)((disMaxH - disMinH) / this.CoordSpaceH); |
| | | this.CoordMinH = disMaxH - (double)this.EndLineNoH * this.CoordSpaceH; |
| | | this.CoordMinH = disMaxH - this.EndLineNoH * this.CoordSpaceH; |
| | | } |
| | | #endregion |
| | | |
| | | #region 计ç®åæ |
| | | |
| | | /// <summary> |
| | | /// 计ç®åæ |
| | | /// </summary> |
| | | /// <param name="group">æ²çº¿ç»</param> |
| | | /// <param name="QH">æµéæ¬ç¨çº¿</param> |
| | | /// <param name="QE">æµéæç线</param> |
| | | /// <param name="QP">æµéåç线</param> |
| | | /// <returns></returns> |
| | | public static CurveCoordinateParas CalcCoordinate(Model.FeatCurveExpressGroup group) |
| | | public static CurveCoordinateParas CalcCoordinate(FeatCurveExpressGroup group) |
| | | { |
| | | if (group == null) |
| | | return null; |
| | | return CalcCoordinate(group.CurveQH, group.CurveQE, group.CurveQP); |
| | | } |
| | | |
| | |
| | | /// <param name="QE">æµéæç线</param> |
| | | /// <param name="QP">æµéåç线</param> |
| | | /// <returns></returns> |
| | | public static CurveCoordinateParas CalcCoordinate(Model.CurveExpress QH, Model.CurveExpress QE, Model.CurveExpress QP) |
| | | public static CurveCoordinateParas CalcCoordinate(CurveExpress QH, CurveExpress QE, CurveExpress QP) |
| | | { |
| | | if (QH == null) |
| | | return null; |
| | | |
| | | List<Model.CurvePoint> pointsQH = QH.GetFitPoints(); |
| | | List<Model.CurvePoint> pointsQE = null; |
| | | if (QE != null) |
| | | pointsQE = QE.GetFitPoints(); |
| | | List<Model.CurvePoint> pointsQP = null; |
| | | if (QP != null) |
| | | pointsQP = QP.GetFitPoints(); |
| | | |
| | | return CalcCoordinate(pointsQH, pointsQE, pointsQP); |
| | | return CalcCoordinate(QH.GetFitPoints(),QE.GetFitPoints(),QP.GetFitPoints()); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 计ç®åæ |
| | |
| | | /// <param name="QE">æµéæç线</param> |
| | | /// <param name="QP">æµéåç线</param> |
| | | /// <returns></returns> |
| | | public static CurveCoordinateParas CalcCoordinate(List<Model.CurvePoint> QH, List<Model.CurvePoint> QE, List<Model.CurvePoint> QP) |
| | | public static CurveCoordinateParas CalcCoordinate(List<CurvePoint> QH, List<CurvePoint> QE, List<CurvePoint> QP) |
| | | { |
| | | if (QH == null) |
| | | return null; |
| | | double maxQ = 0.0; |
| | | double minQ = 1000.0; |
| | | double maxH = 0.0; |
| | | double minH = 1000.0; |
| | | double maxE = 0.0; |
| | | double minE = 1000.0; |
| | | double maxP = 0.0; |
| | | double minP = 1000.0; |
| | | double max_flow = 0.0; |
| | | double min_flow = 1000.0; |
| | | double max_head = 0.0; |
| | | double min_head = 1000.0; |
| | | double max_eff = 0.0; |
| | | double min_eff = 1000.0; |
| | | double max_power = 0.0; |
| | | double min_power = 1000.0; |
| | | |
| | | if (QE == null && QP == null) |
| | | { |
| | | minQ = QH.Min(x => x.X); |
| | | maxQ = QH.Max(x => x.X); |
| | | if (minQ > maxQ) |
| | | min_flow = QH.Min(x => x.X); |
| | | max_flow = QH.Max(x => x.X); |
| | | if (min_flow > max_flow) |
| | | { |
| | | return null; |
| | | } |
| | | minH = QH.Min(x => x.Y); |
| | | maxH = QH.Max(x => x.Y); |
| | | if (minH > maxH) |
| | | min_head = QH.Min(x => x.Y); |
| | | max_head = QH.Max(x => x.Y); |
| | | if (min_head > max_head) |
| | | { |
| | | return null; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | CalcMinMaxValue(QH, QE, QP, ref maxQ, ref minQ, ref maxH, ref minH, ref maxE, ref minE, ref maxP, ref minP); |
| | | CalcMinMaxValue(QH, QE, QP, ref max_flow, ref min_flow, ref max_head, ref min_head, ref max_eff, ref min_eff, ref max_power, ref min_power); |
| | | } |
| | | |
| | | return CalcCoordinate(minQ, maxQ, minH, maxH, minE, maxE, minP, maxP); |
| | | var calc_corrd = CalcCoordinate(min_flow, max_flow, min_head, max_head, min_eff, max_eff, min_power, max_power); |
| | | |
| | | #region ä¿®æ£Yè½´ |
| | | |
| | | var head_num_y = calc_corrd.EndLineNoH - calc_corrd.StartLineNoH; |
| | | var eff_num_y = calc_corrd.EndLineNoE - calc_corrd.StartLineNoE; |
| | | var power_num_y = calc_corrd.EndLineNoP - calc_corrd.StartLineNoP; |
| | | var sun_num_y = Math.Abs(head_num_y + eff_num_y + power_num_y); |
| | | if (sun_num_y < calc_corrd.GridNumberY) |
| | | { |
| | | calc_corrd.StartLineNoP = 1; |
| | | } |
| | | #endregion |
| | | |
| | | return calc_corrd; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// <param name="QH">æµéæ¬ç¨çº¿</param> |
| | | /// <param name="QE">æµéæç线</param> |
| | | /// <param name="QP">æµéåç线</param> |
| | | /// <param name="maxQ">æå¤§æµé</param> |
| | | /// <param name="minQ">æå°æµé</param> |
| | | /// <param name="maxH">æå¤§æ¬ç¨</param> |
| | | /// <param name="minH">æå°æ¬ç¨</param> |
| | | /// <param name="maxE">æå¤§æç</param> |
| | | /// <param name="minE">æå°æç</param> |
| | | /// <param name="maxP">æå¤§åç</param> |
| | | /// <param name="minP">æå°åç</param> |
| | | /// <param name="max_flow">æå¤§æµé</param> |
| | | /// <param name="min_flow">æå°æµé</param> |
| | | /// <param name="max_head">æå¤§æ¬ç¨</param> |
| | | /// <param name="min_head">æå°æ¬ç¨</param> |
| | | /// <param name="max_eff">æå¤§æç</param> |
| | | /// <param name="min_eff">æå°æç</param> |
| | | /// <param name="max_power">æå¤§åç</param> |
| | | /// <param name="min_power">æå°åç</param> |
| | | /// <returns></returns> |
| | | public static bool CalcMinMaxValue(List<Model.CurvePoint> QH, List<Model.CurvePoint> QE, List<Model.CurvePoint> QP, ref double maxQ, ref double minQ, ref double maxH, ref double minH, ref double maxE, ref double minE, ref double maxP, ref double minP) |
| | | public static bool CalcMinMaxValue(List<CurvePoint> QH, List<CurvePoint> QE, List<CurvePoint> QP, ref double max_flow, ref double min_flow, ref double max_head, ref double min_head, ref double max_eff, ref double min_eff, ref double max_power, ref double min_power) |
| | | { |
| | | maxQ = 0.0; |
| | | minQ = 1000.0; |
| | | maxH = 0.0; |
| | | minH = 1000.0; |
| | | maxE = 0.0; |
| | | minE = 1000.0; |
| | | maxP = 0.0; |
| | | minP = 1000.0; |
| | | max_flow = 0.0; |
| | | min_flow = 1000.0; |
| | | max_head = 0.0; |
| | | min_head = 1000.0; |
| | | max_eff = 0.0; |
| | | min_eff = 1000.0; |
| | | max_power = 0.0; |
| | | min_power = 1000.0; |
| | | if (QH == null) |
| | | { |
| | | return false; |
| | | } |
| | | minQ = QH.Min(x => x.X); |
| | | maxQ = QH.Max(x => x.X); |
| | | if (minQ > maxQ) |
| | | min_flow = QH.Min(x => x.X); |
| | | max_flow = QH.Max(x => x.X); |
| | | if (min_flow > max_flow) |
| | | { |
| | | return false; |
| | | } |
| | | minH = QH.Min(x => x.Y); |
| | | maxH = QH.Max(x => x.Y); |
| | | min_head = QH.Min(x => x.Y); |
| | | max_head = QH.Max(x => x.Y); |
| | | if (QE != null && QE.Count > 0) |
| | | { |
| | | minE = QE.Min(x => x.Y); |
| | | maxE = QE.Max(x => x.Y); |
| | | min_eff = QE.Min(x => x.Y); |
| | | max_eff = QE.Max(x => x.Y); |
| | | } |
| | | if (QP != null && QP.Count > 0) |
| | | { |
| | | minP = QP.Min(x => x.Y); |
| | | maxP = QP.Max(x => x.Y); |
| | | min_power = QP.Min(x => x.Y); |
| | | max_power = QP.Max(x => x.Y); |
| | | } |
| | | return true; |
| | | } |
| | |
| | | /// <summary> |
| | | /// 计ç®åæ |
| | | /// </summary> |
| | | /// <param name="minQ">æå°æµé</param> |
| | | /// <param name="maxQ">æå¤§æµé</param> |
| | | /// <param name="minH">æå°æ¬ç¨</param> |
| | | /// <param name="maxH">æå¤§æ¬ç¨</param> |
| | | /// <param name="minE">æå°æç</param> |
| | | /// <param name="maxE">æå¤§æç</param> |
| | | /// <param name="minP">æå°åç</param> |
| | | /// <param name="maxP">æå¤§åç</param> |
| | | /// <param name="min_flow">æå°æµé</param> |
| | | /// <param name="max_flow">æå¤§æµé</param> |
| | | /// <param name="min_head">æå°æ¬ç¨</param> |
| | | /// <param name="max_head">æå¤§æ¬ç¨</param> |
| | | /// <param name="min_eff">æå°æç</param> |
| | | /// <param name="max_eff">æå¤§æç</param> |
| | | /// <param name="min_power">æå°åç</param> |
| | | /// <param name="max_power">æå¤§åç</param> |
| | | /// <returns></returns> |
| | | public static CurveCoordinateParas CalcCoordinate(double minQ, double maxQ, double minH, double maxH, double minE, double maxE, double minP, double maxP) |
| | | public static CurveCoordinateParas CalcCoordinate(double min_flow, double max_flow, double min_head, double max_head, double min_eff, double max_eff, double min_power, double max_power) |
| | | { |
| | | if (minQ > maxQ - 0.01) |
| | | if (min_flow > max_flow - 0.01) |
| | | return null; |
| | | |
| | | if (minH > maxH - 0.01) |
| | | if (min_head > max_head - 0.01) |
| | | return null; |
| | | |
| | | var validGridNumH = 6; |
| | | var coordinateParas = new CurveCoordinateParas(); |
| | | coordinateParas.GridNumberX = 10; |
| | | coordinateParas.GridNumberY = 18; |
| | | CalcCoordinateQ(minQ, maxQ, ref coordinateParas, coordinateParas.GridNumberX); |
| | | CalcCoordinateH(minH, maxH, validGridNumH, ref coordinateParas, out double disMinH, out double disMaxH); |
| | | var valid_grid_num_h = 6; |
| | | var coordinate_paras = new CurveCoordinateParas(); |
| | | coordinate_paras.GridNumberX = 10;//10 |
| | | coordinate_paras.GridNumberY = 18;//18 |
| | | CalcCoordinateQ(min_flow, max_flow, ref coordinate_paras, coordinate_paras.GridNumberX); |
| | | CalcCoordinateH(min_head, max_head, valid_grid_num_h, ref coordinate_paras, out double disMinH, out double disMaxH); |
| | | |
| | | if (maxP > minP + 0.01) |
| | | CalcCoordinateP(minP, maxP, disMaxH, 0, ref coordinateParas); |
| | | if (max_power > min_power + 0.01) |
| | | CalcCoordinateP(min_power, max_power, disMaxH, 0, ref coordinate_paras); |
| | | |
| | | if (maxE > minE + 0.01) |
| | | CalcCoordinateE(minE, maxE, ref coordinateParas); |
| | | if (max_eff > min_eff + 0.01) |
| | | CalcCoordinateE(min_eff, max_eff, ref coordinate_paras); |
| | | |
| | | return coordinateParas; |
| | | return coordinate_paras; |
| | | } |
| | | |
| | | #endregion |
| | |
| | | /// <summary> |
| | | /// è®¡ç®æµéåæ |
| | | /// </summary> |
| | | /// <param name="minQ">æå°æµé</param> |
| | | /// <param name="maxQ">æå¤§æµé</param> |
| | | /// <param name="coordinateParas">åæ Model</param> |
| | | /// <param name="min_flow">æå°æµé</param> |
| | | /// <param name="max_flow">æå¤§æµé</param> |
| | | /// <param name="coordinate_paras">åæ Model</param> |
| | | /// <param name="validGridNum">ææå»åº¦ç¹</param> |
| | | /// <param name="default_num">æ¾å¤§ç³»æ°</param> |
| | | public static void CalcCoordinateQ(double minQ, double maxQ, ref CurveCoordinateParas coordinateParas, int validGridNum = 10, double default_num = 1.0) |
| | | public static void CalcCoordinateQ(double min_flow, double max_flow, ref CurveCoordinateParas coordinate_paras, int validGridNum = 10, double default_num = 1.0) |
| | | { |
| | | var coordSpaceQ = GetOptimalSpaceMin(minQ / default_num, maxQ / default_num, validGridNum, out double disMinQ, out double disMaxQ) * default_num; |
| | | var coordSpaceQ = PhartCoordinateHelper.GetOptimalSpaceMin(min_flow / default_num, max_flow / default_num, validGridNum, out double disMinQ, out double disMaxQ) * default_num; |
| | | coordSpaceQ = Math.Max(0.5, coordSpaceQ / default_num) * default_num; |
| | | if (coordSpaceQ == 8.0) |
| | | coordSpaceQ = 10.0; |
| | |
| | | var gridNumberX = 0; |
| | | |
| | | double min_q = disMinQ; |
| | | while (min_q < maxQ) |
| | | while (min_q < max_flow) |
| | | { |
| | | gridNumberX++; |
| | | min_q = disMinQ + gridNumberX * coordSpaceQ; |
| | |
| | | gridNumberX *= 2; |
| | | } |
| | | |
| | | coordinateParas.CoordSpaceQ = coordSpaceQ; |
| | | coordinateParas.CoordMinQ = disMinQ; |
| | | coordinateParas.GridNumberX = gridNumberX; |
| | | coordinate_paras.CoordSpaceQ = coordSpaceQ; |
| | | coordinate_paras.CoordMinQ = disMinQ; |
| | | coordinate_paras.GridNumberX = gridNumberX; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è®¡ç®æ¬ç¨åæ å«è¿æ»¤ (Eventech: CalcCoordinateH2) |
| | | /// </summary> |
| | | /// <param name="minH">æå°æ¬ç¨</param> |
| | | /// <param name="maxH">æå¤§æ¬ç¨</param> |
| | | /// <param name="validGridNumH">æææ¬ç¨å»åº¦æ°</param> |
| | | /// <param name="coordinateParas">åæ Model</param> |
| | | /// <param name="min_head">æå°æ¬ç¨</param> |
| | | /// <param name="max_head">æå¤§æ¬ç¨</param> |
| | | /// <param name="valid_grid_num_h">æææ¬ç¨å»åº¦æ°</param> |
| | | /// <param name="coordinate_paras">åæ Model</param> |
| | | /// <param name="disMinH">æå°æ¾ç¤ºæ¬ç¨</param> |
| | | /// <param name="disMaxH">æå¤§æ¾ç¤ºæ¬ç¨</param> |
| | | public static void CalcCoordinateH_Filter(double minH, double maxH, int validGridNumH, ref CurveCoordinateParas coordinateParas, out double disMinH, out double disMaxH) |
| | | public static void CalcCoordinateH_Filter(double min_head, double max_head, int valid_grid_num_h, ref CurveCoordinateParas coordinate_paras, out double disMinH, out double disMaxH) |
| | | { |
| | | if (maxH < 1.0) |
| | | if (max_head < 1.0) |
| | | { |
| | | disMinH = 0.0; |
| | | disMaxH = 1.0; |
| | | coordinateParas.ResetCoordH(0.1, disMinH, disMaxH); |
| | | coordinate_paras.ResetCoordH(0.1, disMinH, disMaxH); |
| | | } |
| | | else if (maxH < 2.0) |
| | | else if (max_head < 2.0) |
| | | { |
| | | disMinH = 0.0; |
| | | disMaxH = 2.0; |
| | | coordinateParas.ResetCoordH(0.2, disMinH, disMaxH); |
| | | coordinate_paras.ResetCoordH(0.2, disMinH, disMaxH); |
| | | } |
| | | else if (maxH < 5.0) |
| | | else if (max_head < 5.0) |
| | | { |
| | | disMinH = 0.0; |
| | | disMaxH = 5.0; |
| | | coordinateParas.ResetCoordH(0.5, disMinH, disMaxH); |
| | | coordinate_paras.ResetCoordH(0.5, disMinH, disMaxH); |
| | | } |
| | | else if (maxH < 10.0) |
| | | else if (max_head < 10.0) |
| | | { |
| | | disMinH = 0.0; |
| | | disMaxH = 10.0; |
| | | coordinateParas.ResetCoordH(1.0, disMinH, disMaxH); |
| | | coordinate_paras.ResetCoordH(1.0, disMinH, disMaxH); |
| | | } |
| | | else if (maxH < 12.0) |
| | | else if (max_head < 12.0) |
| | | { |
| | | coordinateParas.CoordSpaceH = 1.0; |
| | | coordinate_paras.CoordSpaceH = 1.0; |
| | | disMinH = 0.0; |
| | | disMaxH = 12.0; |
| | | coordinateParas.ResetCoordH(1.0, disMinH, disMaxH); |
| | | coordinate_paras.ResetCoordH(1.0, disMinH, disMaxH); |
| | | } |
| | | else if (maxH < 15.0) |
| | | else if (max_head < 15.0) |
| | | { |
| | | coordinateParas.CoordSpaceH = 2.0; |
| | | coordinate_paras.CoordSpaceH = 2.0; |
| | | disMinH = 0.0; |
| | | disMaxH = 16.0; |
| | | coordinateParas.ResetCoordH(2.0, disMinH, disMaxH); |
| | | coordinate_paras.ResetCoordH(2.0, disMinH, disMaxH); |
| | | } |
| | | else if (maxH < 20.0) |
| | | else if (max_head < 20.0) |
| | | { |
| | | coordinateParas.CoordSpaceH = 2.0; |
| | | coordinate_paras.CoordSpaceH = 2.0; |
| | | disMinH = 0.0; |
| | | disMaxH = 20.0; |
| | | coordinateParas.ResetCoordH(2.0, disMinH, disMaxH); |
| | | coordinate_paras.ResetCoordH(2.0, disMinH, disMaxH); |
| | | } |
| | | else |
| | | { |
| | | CalcCoordinateH(minH, maxH, validGridNumH, ref coordinateParas, out disMinH, out disMaxH); |
| | | CalcCoordinateH(min_head, max_head, valid_grid_num_h, ref coordinate_paras, out disMinH, out disMaxH); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è®¡ç®æ¬ç¨åæ |
| | | /// </summary> |
| | | /// <param name="minH">æå°æ¬ç¨</param> |
| | | /// <param name="maxH">æå¤§æ¬ç¨</param> |
| | | /// <param name="validGridNumH">æææ¬ç¨å»åº¦æ°</param> |
| | | /// <param name="coordinateParas">åæ Model</param> |
| | | /// <param name="min_head">æå°æ¬ç¨</param> |
| | | /// <param name="max_head">æå¤§æ¬ç¨</param> |
| | | /// <param name="valid_grid_num_h">æææ¬ç¨å»åº¦æ°</param> |
| | | /// <param name="coordinate_paras">åæ Model</param> |
| | | /// <param name="disMinH">æå°æ¾ç¤ºæ¬ç¨</param> |
| | | /// <param name="disMaxH">æå¤§æ¾ç¤ºæ¬ç¨</param> |
| | | public static void CalcCoordinateH(double minH, double maxH, int validGridNumH, ref CurveCoordinateParas coordinateParas, out double disMinH, out double disMaxH) |
| | | public static void CalcCoordinateH(double min_head, double max_head, int valid_grid_num_h, ref CurveCoordinateParas coordinate_paras, out double disMinH, out double disMaxH) |
| | | { |
| | | var coordSpaceH = GetOptimalSpaceMax(minH, maxH, validGridNumH, out disMinH, out disMaxH); |
| | | int endLineNoH = coordinateParas.GridNumberY; |
| | | var coordSpaceH = PhartCoordinateHelper.GetOptimalSpaceMax(min_head, max_head, valid_grid_num_h, out disMinH, out disMaxH); |
| | | int endLineNoH = coordinate_paras.GridNumberY; |
| | | int stratLineNoH = endLineNoH; |
| | | |
| | | double max_h = disMaxH;//夿æ¡ä»¶ |
| | | while (max_h > minH * 0.98) |
| | | while (max_h > min_head * 0.98) |
| | | { |
| | | max_h -= coordSpaceH; |
| | | if (max_h < 0.0) |
| | |
| | | stratLineNoH--; |
| | | } |
| | | |
| | | coordinateParas.CoordSpaceH = coordSpaceH; |
| | | coordinateParas.EndLineNoH = endLineNoH; |
| | | coordinateParas.StartLineNoH = stratLineNoH; |
| | | coordinateParas.CoordMinH = disMaxH - (double)endLineNoH * coordSpaceH; |
| | | coordinate_paras.CoordSpaceH = coordSpaceH; |
| | | coordinate_paras.EndLineNoH = endLineNoH; |
| | | coordinate_paras.StartLineNoH = stratLineNoH; |
| | | coordinate_paras.CoordMinH = disMaxH - endLineNoH * coordSpaceH; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 计ç®åçåæ |
| | | /// </summary> |
| | | /// <param name="minP">æå°åç</param> |
| | | /// <param name="maxP">æå¤§åç</param> |
| | | /// <param name="min_power">æå°åç</param> |
| | | /// <param name="max_power">æå¤§åç</param> |
| | | /// <param name="disMaxH">æå¤§æ¾ç¤ºæ¬ç¨</param> |
| | | /// <param name="downGridNum">æä½ç¹å»åº¦</param> |
| | | /// <param name="coordinateParas">åæ Model</param> |
| | | public static void CalcCoordinateP(double minP, double maxP, double disMaxH, int downGridNum, ref CurveCoordinateParas coordinateParas) |
| | | /// <param name="coordinate_paras">åæ Model</param> |
| | | public static void CalcCoordinateP(double min_power, double max_power, double disMaxH, int downGridNum, ref CurveCoordinateParas coordinate_paras) |
| | | { |
| | | int default_num = 5; |
| | | int spaceNum = coordinateParas.StartLineNoH - default_num - downGridNum; |
| | | int default_num = 7; |
| | | int spaceNum = coordinate_paras.StartLineNoH - default_num - downGridNum; |
| | | if (spaceNum < 3) |
| | | spaceNum = 3; |
| | | |
| | | var coordSpaceP = GetOptimalSpaceMax(minP, maxP, spaceNum, out double disMinP, out double disMaxP); |
| | | int endLineNoP = coordinateParas.StartLineNoH - default_num; |
| | | var coordSpaceP = PhartCoordinateHelper.GetOptimalSpaceMax(min_power, max_power, spaceNum, out double disMinP, out double disMaxP); |
| | | int endLineNoP = coordinate_paras.StartLineNoH - default_num; |
| | | int stratLineNoP = endLineNoP; |
| | | |
| | | double max_p = disMaxP; |
| | | while (max_p > minP * 0.98) |
| | | while (max_p > min_power) |
| | | { |
| | | max_p -= coordSpaceP; |
| | | if (max_p < 0.0) |
| | |
| | | stratLineNoP--; |
| | | } |
| | | |
| | | coordinateParas.CoordSpaceP = coordSpaceP; |
| | | coordinateParas.EndLineNoP = endLineNoP; |
| | | coordinateParas.StartLineNoP = stratLineNoP; |
| | | coordinate_paras.CoordSpaceP = coordSpaceP; |
| | | coordinate_paras.EndLineNoP = endLineNoP; |
| | | coordinate_paras.StartLineNoP = stratLineNoP; |
| | | |
| | | //妿å¼å§å»åº¦ä½äºæä½ç¹å»åº¦ é½å¾ä¸å å·®å¼ |
| | | if (coordinateParas.StartLineNoP < downGridNum) |
| | | if (coordinate_paras.StartLineNoP < downGridNum) |
| | | { |
| | | int diff_num = downGridNum - coordinateParas.StartLineNoP; |
| | | |
| | | coordinateParas.EndLineNoP += diff_num; |
| | | coordinateParas.StartLineNoP += diff_num; |
| | | int diff_num = downGridNum - coordinate_paras.StartLineNoP; |
| | | coordinate_paras.EndLineNoP += diff_num; |
| | | coordinate_paras.StartLineNoP += diff_num; |
| | | } |
| | | |
| | | coordinateParas.CoordMinH = GetByPlacesLength(disMaxH - (double)coordinateParas.EndLineNoH * coordinateParas.CoordSpaceH, 3); |
| | | coordinateParas.CoordMinP = GetByPlacesLength(disMaxP - (double)coordinateParas.EndLineNoP * coordinateParas.CoordSpaceP, 3); |
| | | |
| | | |
| | | coordinate_paras.CoordMinH = PhartCoordinateHelper.GetByPlacesLength(disMaxH - coordinate_paras.EndLineNoH * coordinate_paras.CoordSpaceH, 3); |
| | | coordinate_paras.CoordMinP = PhartCoordinateHelper.GetByPlacesLength(disMaxP - coordinate_paras.EndLineNoP * coordinate_paras.CoordSpaceP, 3); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è®¡ç®æçåæ |
| | | /// </summary> |
| | | /// <param name="minE">æå°æç</param> |
| | | /// <param name="maxE">æå¤§æç</param> |
| | | /// <param name="coordinateParas">åæ Model</param> |
| | | public static void CalcCoordinateE(double minE, double maxE, ref CurveCoordinateParas coordinateParas) |
| | | /// <param name="min_eff">æå°æç</param> |
| | | /// <param name="max_eff">æå¤§æç</param> |
| | | /// <param name="coordinate_paras">åæ Model</param> |
| | | public static void CalcCoordinateE(double min_eff, double max_eff, ref CurveCoordinateParas coordinate_paras) |
| | | { |
| | | int startLineNoE = coordinateParas.StartLineNoH - 6; |
| | | if (maxE <= 40.0) |
| | | int startLineNoE = coordinate_paras.StartLineNoH - 6; |
| | | if (max_eff <= 40.0) |
| | | { |
| | | coordinateParas.StartLineNoE = startLineNoE; |
| | | coordinateParas.EndLineNoE = coordinateParas.StartLineNoE + 6; |
| | | coordinateParas.CoordSpaceE = 5.0; |
| | | coordinate_paras.StartLineNoE = startLineNoE; |
| | | coordinate_paras.EndLineNoE = coordinate_paras.StartLineNoE + 6; |
| | | coordinate_paras.CoordSpaceE = 5.0; |
| | | } |
| | | else if (maxE <= 50.0) |
| | | else if (max_eff <= 50.0) |
| | | { |
| | | coordinateParas.StartLineNoE = startLineNoE - 5; |
| | | coordinateParas.EndLineNoE = coordinateParas.StartLineNoE + 10; |
| | | coordinateParas.CoordSpaceE = 5.0; |
| | | coordinate_paras.StartLineNoE = startLineNoE - 5; |
| | | coordinate_paras.EndLineNoE = coordinate_paras.StartLineNoE + 10; |
| | | coordinate_paras.CoordSpaceE = 5.0; |
| | | } |
| | | else if (maxE <= 60) |
| | | else if (max_eff <= 60) |
| | | { |
| | | coordinateParas.StartLineNoE = startLineNoE; |
| | | coordinateParas.EndLineNoE = coordinateParas.StartLineNoE + 6; |
| | | coordinateParas.CoordSpaceE = 10.0; |
| | | coordinate_paras.StartLineNoE = startLineNoE; |
| | | coordinate_paras.EndLineNoE = coordinate_paras.StartLineNoE + 6; |
| | | coordinate_paras.CoordSpaceE = 10.0; |
| | | } |
| | | else |
| | | { |
| | | coordinateParas.StartLineNoE = startLineNoE; |
| | | coordinateParas.EndLineNoE = coordinateParas.StartLineNoE + 5; |
| | | coordinateParas.CoordSpaceE = 20.0; |
| | | coordinate_paras.StartLineNoE = startLineNoE; |
| | | coordinate_paras.EndLineNoE = coordinate_paras.StartLineNoE + 5; |
| | | coordinate_paras.CoordSpaceE = 20.0; |
| | | } |
| | | coordinateParas.CoordMinE = (double)(-coordinateParas.StartLineNoE) * coordinateParas.CoordSpaceE; |
| | | coordinate_paras.CoordMinE = (-coordinate_paras.StartLineNoE) * coordinate_paras.CoordSpaceE; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region Space é´é |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// åæ è¾
å©ç±» |
| | | /// </summary> |
| | | public class PhartCoordinateHelper |
| | | { |
| | | /// <summary> |
| | | /// è·åæå°çé´é |
| | | /// </summary> |
| | |
| | | return (maxValue - minValue) / 10.0; |
| | | } |
| | | |
| | | double optimalSpace = GetOptimalSpace((maxValue - minValue) / (double)spaceNum); |
| | | if (optimalSpace < 2.0) |
| | | double optimalSpace = GetOptimalSpace((maxValue - minValue) / spaceNum); |
| | | if (optimalSpace < 2) |
| | | { |
| | | minDisplay = Math.Floor(minValue / optimalSpace) * optimalSpace; |
| | | maxDisplay = minDisplay + (double)spaceNum * optimalSpace; |
| | | maxDisplay = minDisplay + spaceNum * optimalSpace; |
| | | } |
| | | else |
| | | { |
| | | minDisplay = Math.Floor(minValue / optimalSpace) * optimalSpace; |
| | | maxDisplay = minDisplay + (double)spaceNum * optimalSpace; |
| | | maxDisplay = minDisplay + spaceNum * optimalSpace; |
| | | } |
| | | |
| | | return optimalSpace; |
| | |
| | | } |
| | | } |
| | | |
| | | double optimalSpace = GetOptimalSpace((maxValue - minValue) / (double)spaceNum, true); |
| | | double optimalSpace = GetOptimalSpace((maxValue - minValue) / spaceNum, true); |
| | | maxDisplay = Math.Ceiling(maxValue / optimalSpace) * optimalSpace; |
| | | minDisplay = maxDisplay - (double)spaceNum * optimalSpace; |
| | | minDisplay = maxDisplay - spaceNum * optimalSpace; |
| | | |
| | | if (minDisplay > minValue) |
| | | { |
| | |
| | | { |
| | | if (refSpace < 11.0) |
| | | { |
| | | if (refSpace < 1) |
| | | { |
| | | return 0.5; |
| | | } |
| | | if (refSpace < 1.35) |
| | | { |
| | | return 1.0; |
| | |
| | | return num2 * 1000; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region æ°åè¾
婿¹æ³ |
| | | |
| | | /// <summary> |
| | | /// ææå®é¿åº¦è·å |
| | | /// </summary> |
| | |
| | | } |
| | | return 0; |
| | | } |
| | | #endregion |
| | | |
| | | } |
| | | } |
| | | |
| | | |