From bd2c0ed221e235420c7fdffefa1cdfa085529a0a Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期五, 24 十一月 2023 12:43:15 +0800
Subject: [PATCH] 升级

---
 Yw.Application.Curve.Core/Properties/PublishProfiles/FolderProfile.pubxml.user |    2 
 Yw.Service.Curve.Core/5-service/0-helper/PumpFeatHelper.cs                     |   26 ++++++++
 Yw.Service.Curve.Core/Yw.Service.Curve.Core.csproj                             |    4 
 Yw.Application.Curve.Core/Yw.Application.Curve.Core.csproj                     |    4 
 Yw.CurveBase.Core/7-fit/FitHelper.cs                                           |   98 ++++++++++++++++++++++++++++++++
 Yw.CurveBase.Core/Properties/PublishProfiles/FolderProfile.pubxml.user         |    2 
 Yw.CurveBase.Core/Yw.CurveBase.Core.csproj                                     |    2 
 Yw.Service.Curve.Core/Properties/PublishProfiles/FolderProfile.pubxml.user     |    2 
 8 files changed, 132 insertions(+), 8 deletions(-)

diff --git a/Yw.Application.Curve.Core/Properties/PublishProfiles/FolderProfile.pubxml.user b/Yw.Application.Curve.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
index 194df55..882dbc1 100644
--- a/Yw.Application.Curve.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
+++ b/Yw.Application.Curve.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -4,6 +4,6 @@
 -->
 <Project>
   <PropertyGroup>
-    <History>True|2023-11-22T03:00:47.6114775Z;True|2023-11-15T09:32:40.8990513+08:00;True|2023-11-08T14:05:47.8074399+08:00;True|2023-11-08T13:33:00.5811678+08:00;True|2023-11-08T11:55:54.5929525+08:00;True|2023-11-07T11:05:59.7264456+08:00;True|2023-11-07T11:05:52.0532331+08:00;True|2023-10-24T23:17:54.0748672+08:00;True|2023-10-21T14:38:03.2722172+08:00;True|2023-09-26T14:10:22.2485377+08:00;True|2023-08-29T11:46:24.5710627+08:00;True|2023-08-23T11:34:59.7400481+08:00;True|2023-08-21T13:31:52.3074533+08:00;True|2023-08-18T16:51:57.4477528+08:00;True|2023-08-18T13:49:11.3231257+08:00;True|2023-08-17T14:51:49.8452519+08:00;True|2023-08-17T11:44:23.5001902+08:00;True|2023-08-16T17:43:46.8283841+08:00;True|2023-08-16T11:10:43.5110570+08:00;True|2023-08-15T16:51:35.3016945+08:00;True|2023-08-15T15:04:30.4334950+08:00;True|2023-08-10T15:23:57.4783701+08:00;True|2023-08-08T10:01:53.7466486+08:00;True|2023-08-07T11:49:59.7506144+08:00;True|2023-08-05T10:38:53.6104500+08:00;True|2023-08-02T15:25:21.6024349+08:00;True|2023-08-02T15:20:20.4985081+08:00;True|2023-08-02T13:31:18.6184059+08:00;True|2023-08-02T13:30:52.4975034+08:00;True|2023-08-02T13:29:34.9010019+08:00;True|2023-08-02T13:28:35.4729592+08:00;True|2023-07-25T15:08:42.3375388+08:00;True|2023-07-17T10:31:53.5181752+08:00;True|2023-07-17T10:31:44.6652344+08:00;True|2023-07-13T12:10:11.2591498+08:00;True|2023-05-25T18:02:16.3580168+08:00;True|2023-05-25T15:44:32.4909866+08:00;</History>
+    <History>True|2023-11-24T04:42:58.9596873Z;True|2023-11-24T11:01:27.7460883+08:00;True|2023-11-22T11:00:47.6114775+08:00;True|2023-11-15T09:32:40.8990513+08:00;True|2023-11-08T14:05:47.8074399+08:00;True|2023-11-08T13:33:00.5811678+08:00;True|2023-11-08T11:55:54.5929525+08:00;True|2023-11-07T11:05:59.7264456+08:00;True|2023-11-07T11:05:52.0532331+08:00;True|2023-10-24T23:17:54.0748672+08:00;True|2023-10-21T14:38:03.2722172+08:00;True|2023-09-26T14:10:22.2485377+08:00;True|2023-08-29T11:46:24.5710627+08:00;True|2023-08-23T11:34:59.7400481+08:00;True|2023-08-21T13:31:52.3074533+08:00;True|2023-08-18T16:51:57.4477528+08:00;True|2023-08-18T13:49:11.3231257+08:00;True|2023-08-17T14:51:49.8452519+08:00;True|2023-08-17T11:44:23.5001902+08:00;True|2023-08-16T17:43:46.8283841+08:00;True|2023-08-16T11:10:43.5110570+08:00;True|2023-08-15T16:51:35.3016945+08:00;True|2023-08-15T15:04:30.4334950+08:00;True|2023-08-10T15:23:57.4783701+08:00;True|2023-08-08T10:01:53.7466486+08:00;True|2023-08-07T11:49:59.7506144+08:00;True|2023-08-05T10:38:53.6104500+08:00;True|2023-08-02T15:25:21.6024349+08:00;True|2023-08-02T15:20:20.4985081+08:00;True|2023-08-02T13:31:18.6184059+08:00;True|2023-08-02T13:30:52.4975034+08:00;True|2023-08-02T13:29:34.9010019+08:00;True|2023-08-02T13:28:35.4729592+08:00;True|2023-07-25T15:08:42.3375388+08:00;True|2023-07-17T10:31:53.5181752+08:00;True|2023-07-17T10:31:44.6652344+08:00;True|2023-07-13T12:10:11.2591498+08:00;True|2023-05-25T18:02:16.3580168+08:00;True|2023-05-25T15:44:32.4909866+08:00;</History>
   </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git a/Yw.Application.Curve.Core/Yw.Application.Curve.Core.csproj b/Yw.Application.Curve.Core/Yw.Application.Curve.Core.csproj
index 8369fe9..02265e2 100644
--- a/Yw.Application.Curve.Core/Yw.Application.Curve.Core.csproj
+++ b/Yw.Application.Curve.Core/Yw.Application.Curve.Core.csproj
@@ -7,7 +7,7 @@
     <RootNamespace>Yw.Application</RootNamespace>
     <GenerateDocumentationFile>True</GenerateDocumentationFile>
     <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-    <Version>1.0.5</Version>
+    <Version>1.0.7</Version>
     <Description>搴旂敤鍗囩骇</Description>
   </PropertyGroup>
 
@@ -41,7 +41,7 @@
   <ItemGroup>
     <PackageReference Include="Yw.Application.Core" Version="1.2.7" />
     <PackageReference Include="Yw.Quartz.Core" Version="1.0.0" />
-    <PackageReference Include="Yw.Service.Curve.Core" Version="1.0.4" />
+    <PackageReference Include="Yw.Service.Curve.Core" Version="1.0.6" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/Yw.CurveBase.Core/7-fit/FitHelper.cs b/Yw.CurveBase.Core/7-fit/FitHelper.cs
index 6d314b5..c313e20 100644
--- a/Yw.CurveBase.Core/7-fit/FitHelper.cs
+++ b/Yw.CurveBase.Core/7-fit/FitHelper.cs
@@ -160,5 +160,103 @@
             }
         }
 
+
+        #region 鑾峰緱X鍊�
+
+        /// <summary>
+        /// 鑾峰彇绾挎�ф彃鍊糥锛堝彲鑳芥湁澶氫釜鐐癸級
+        /// </summary>
+        public static List<CurvePoint> GetInterPointX(List<CurvePoint> pts, double y)
+        {
+            if (pts == null || pts.Count < 2)
+            {
+                return default;
+            }
+            var list = new List<CurvePoint>();
+            for (int i = 0; i < pts.Count - 1; i++)
+            {
+                if ((y >= pts[i].Y && y <= pts[i + 1].Y) || (y <= pts[i].Y && y >= pts[i + 1].Y))
+                {//鐩寸嚎鎻掑��
+                    double x;
+                    if (Math.Abs(pts[i].Y - pts[i + 1].Y) < 0.01)
+                        x = (pts[i].X + pts[i + 1].X) * 0.5;
+                    else
+                        x = pts[i].X + (pts[i + 1].X - pts[i].X) * (y - pts[i].Y) / (pts[i + 1].Y - pts[i].Y);
+
+                    list.Add(new CurvePoint(x, y));
+                }
+            }
+            return list;
+        }
+
+        /// <summary>
+        /// 鑾峰彇绾挎�ф彃鍊糥锛堝彲鑳芥湁澶氫釜鐐癸級(鍏佽寤堕暱)
+        /// </summary>
+        public static List<CurvePoint> GetInterPointXByExtend(List<CurvePoint> pts, double y)
+        {
+            if (pts == null || pts.Count < 2)
+            {
+                return default;
+            }
+
+            //鍦ㄨ寖鍥村唴
+            var minY = pts.Min(x => x.Y);
+            var maxY = pts.Max(x => x.Y);
+            if (y >= minY && y <= maxY)
+            {
+                return GetInterPointX(pts, y);
+            }
+
+            var list = new List<CurvePoint>();
+
+            //鍒ゆ柇鏄惁鍦ㄥ墠闈㈢殑寤堕暱閮ㄥ垎
+            double x_start = CurveLineHelper.GetXbyY(pts[0].X, pts[0].Y, pts[1].X, pts[1].Y, y);
+            if (x_start <= pts[0].X)
+            {
+                if (x_start > 0 && x_start > pts[0].X * 0.9)//鏀句竴鐐逛綑閲�
+                {
+                    list.Add(new CurvePoint(x_start, y));
+                }
+            }
+
+            //鍒ゆ柇鏄惁鍦ㄥ悗闈㈢殑寤堕暱閮ㄥ垎:U鍨嬫洸绾� 鏄墠鍚庨兘鏈�
+            double x_end = CurveLineHelper.GetXbyY(pts[pts.Count - 2].X, pts[pts.Count - 2].Y, pts[pts.Count - 1].X, pts[pts.Count - 1].Y, y);
+            if (x_end >= pts[pts.Count - 1].X && x_end < pts[pts.Count - 1].X * 1.1)//鏀句竴鐐逛綑閲�
+            {
+                list.Add(new CurvePoint(x_end, y));
+            }
+
+            return list;
+        }
+
+        /// <summary>
+        /// 鑾峰彇绾挎�ф彃鍊糥锛堝彲鑳芥湁澶氫釜鐐癸級
+        /// </summary>
+        public static List<CurvePoint> GetInterPointX(CurveExpress express, double y, int pointNumber = 20, double extendRatio = 1.0)
+        {
+            if (express == null)
+            {
+                return default;
+            }
+            var pts = express.GetFitPointsByXRange(express.Min, express.Max * extendRatio, pointNumber);
+            return GetInterPointX(pts, y);
+        }
+
+        /// <summary>
+        /// 鑾峰彇绾挎�ф彃鍊糥锛堝彲鑳芥湁澶氫釜鐐癸級(鍏佽寤堕暱)
+        /// </summary>
+        public static List<CurvePoint> GetInterPointXByExtend(CurveExpress express, double y, int pointNumber = 20, double extendRatio = 1.2)
+        {
+            if (express == null)
+            {
+                return default;
+            }
+            var pts = express.GetFitPointsByXRange(express.Min, express.Max * extendRatio, pointNumber);
+            return GetInterPointXByExtend(pts, y);
+        }
+
+
+        #endregion 鑾峰緱X鍊�
+
     }
 }
diff --git a/Yw.CurveBase.Core/Properties/PublishProfiles/FolderProfile.pubxml.user b/Yw.CurveBase.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
index 40e938c..e98e258 100644
--- a/Yw.CurveBase.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
+++ b/Yw.CurveBase.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -4,6 +4,6 @@
 -->
 <Project>
   <PropertyGroup>
-    <History>True|2023-11-07T02:59:03.8484346Z;True|2023-09-22T13:16:35.5213053+08:00;True|2023-09-19T13:47:08.6616971+08:00;True|2023-09-19T13:42:42.1690038+08:00;True|2023-09-18T15:12:24.4129783+08:00;False|2023-09-18T15:11:19.1798407+08:00;True|2023-09-01T13:20:20.4261550+08:00;True|2023-09-01T11:08:43.5292206+08:00;True|2023-08-29T16:21:32.3346453+08:00;</History>
+    <History>True|2023-11-24T04:41:35.1109248Z;True|2023-11-07T10:59:03.8484346+08:00;True|2023-09-22T13:16:35.5213053+08:00;True|2023-09-19T13:47:08.6616971+08:00;True|2023-09-19T13:42:42.1690038+08:00;True|2023-09-18T15:12:24.4129783+08:00;False|2023-09-18T15:11:19.1798407+08:00;True|2023-09-01T13:20:20.4261550+08:00;True|2023-09-01T11:08:43.5292206+08:00;True|2023-08-29T16:21:32.3346453+08:00;</History>
   </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git a/Yw.CurveBase.Core/Yw.CurveBase.Core.csproj b/Yw.CurveBase.Core/Yw.CurveBase.Core.csproj
index 1e9a02d..3283788 100644
--- a/Yw.CurveBase.Core/Yw.CurveBase.Core.csproj
+++ b/Yw.CurveBase.Core/Yw.CurveBase.Core.csproj
@@ -8,7 +8,7 @@
     <RootNamespace>$(MSBuildProjectName.Replace(" ", "_"))</RootNamespace>
     <GenerateDocumentationFile>True</GenerateDocumentationFile>
     <ProduceReferenceAssembly>True</ProduceReferenceAssembly>
-    <Version>1.0.0</Version>
+    <Version>1.0.1</Version>
   </PropertyGroup>
 
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
diff --git a/Yw.Service.Curve.Core/5-service/0-helper/PumpFeatHelper.cs b/Yw.Service.Curve.Core/5-service/0-helper/PumpFeatHelper.cs
index 7176570..e0b4b29 100644
--- a/Yw.Service.Curve.Core/5-service/0-helper/PumpFeatHelper.cs
+++ b/Yw.Service.Curve.Core/5-service/0-helper/PumpFeatHelper.cs
@@ -25,6 +25,19 @@
         }
 
         /// <summary>
+        /// 閫氳繃 棰戠巼 璁$畻娴侀噺鎵▼鏇茬嚎琛ㄨ揪寮�
+        /// </summary>
+        public static CurveExpress CalcuCurveQhByHz(CurveExpress express, double hz, int? pointNumber = null)
+        {
+            if (!pointNumber.HasValue)
+            {
+                pointNumber = Settings.CurveParasHelper.Curve.PointNumber;
+            }
+            var pts = express.GetFitPoints(pointNumber.Value);
+            return CalcuCurveQhByHz(pts, express.FitType, hz);
+        }
+
+        /// <summary>
         /// 閫氳繃 棰戠巼 璁$畻娴侀噺鍔熺巼鏇茬嚎琛ㄨ揪寮�
         /// </summary>
         public static CurveExpress CalcuCurveQpByHz(List<CurvePoint> pts, eFitType fit, double hz)
@@ -43,6 +56,19 @@
             return FitHelper.BuildCurveExpress(list, fit);
         }
 
+        /// <summary>
+        /// 閫氳繃 棰戠巼 璁$畻娴侀噺鍔熺巼鏇茬嚎琛ㄨ揪寮�
+        /// </summary>
+        public static CurveExpress CalcuCurveQpByHz(CurveExpress express, double hz, int? pointNumber = null)
+        {
+            if (!pointNumber.HasValue)
+            {
+                pointNumber = Settings.CurveParasHelper.Curve.PointNumber;
+            }
+            var pts = express.GetFitPoints(pointNumber.Value);
+            return CalcuCurveQpByHz(pts, express.FitType, hz);
+        }
+
 
     }
 }
diff --git a/Yw.Service.Curve.Core/Properties/PublishProfiles/FolderProfile.pubxml.user b/Yw.Service.Curve.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
index 9f80c35..276f0ef 100644
--- a/Yw.Service.Curve.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
+++ b/Yw.Service.Curve.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -4,6 +4,6 @@
 -->
 <Project>
   <PropertyGroup>
-    <History>True|2023-11-22T02:59:43.5869760Z;True|2023-11-15T09:31:29.7022607+08:00;True|2023-11-08T13:30:50.1423957+08:00;True|2023-11-08T11:54:49.6715090+08:00;True|2023-11-07T11:00:32.3186525+08:00;True|2023-11-07T11:00:20.7173571+08:00;True|2023-10-24T23:16:33.8643304+08:00;True|2023-10-21T14:19:25.2606768+08:00;True|2023-09-26T14:09:33.8756384+08:00;True|2023-08-29T11:33:28.5466784+08:00;True|2023-08-21T13:26:43.3162454+08:00;True|2023-08-18T13:08:38.6378644+08:00;True|2023-08-16T17:42:45.3685771+08:00;True|2023-08-16T11:48:48.4326811+08:00;True|2023-08-15T15:00:14.6493599+08:00;True|2023-08-10T15:20:03.2786400+08:00;True|2023-08-07T11:48:46.2865626+08:00;True|2023-08-07T11:15:37.1248435+08:00;True|2023-08-07T10:40:31.7277832+08:00;True|2023-08-04T17:10:25.6488475+08:00;True|2023-08-02T15:24:28.5531853+08:00;True|2023-08-02T15:19:18.2260163+08:00;True|2023-08-02T13:26:30.0499052+08:00;True|2023-07-17T10:30:15.0370305+08:00;True|2023-07-13T11:54:33.7989040+08:00;True|2023-07-13T11:54:23.3967174+08:00;True|2023-07-06T09:49:52.7407983+08:00;True|2023-05-25T15:37:23.5406830+08:00;False|2023-05-25T15:36:09.3589239+08:00;</History>
+    <History>True|2023-11-24T04:42:29.4629539Z;True|2023-11-24T11:00:06.9513357+08:00;True|2023-11-22T10:59:43.5869760+08:00;True|2023-11-15T09:31:29.7022607+08:00;True|2023-11-08T13:30:50.1423957+08:00;True|2023-11-08T11:54:49.6715090+08:00;True|2023-11-07T11:00:32.3186525+08:00;True|2023-11-07T11:00:20.7173571+08:00;True|2023-10-24T23:16:33.8643304+08:00;True|2023-10-21T14:19:25.2606768+08:00;True|2023-09-26T14:09:33.8756384+08:00;True|2023-08-29T11:33:28.5466784+08:00;True|2023-08-21T13:26:43.3162454+08:00;True|2023-08-18T13:08:38.6378644+08:00;True|2023-08-16T17:42:45.3685771+08:00;True|2023-08-16T11:48:48.4326811+08:00;True|2023-08-15T15:00:14.6493599+08:00;True|2023-08-10T15:20:03.2786400+08:00;True|2023-08-07T11:48:46.2865626+08:00;True|2023-08-07T11:15:37.1248435+08:00;True|2023-08-07T10:40:31.7277832+08:00;True|2023-08-04T17:10:25.6488475+08:00;True|2023-08-02T15:24:28.5531853+08:00;True|2023-08-02T15:19:18.2260163+08:00;True|2023-08-02T13:26:30.0499052+08:00;True|2023-07-17T10:30:15.0370305+08:00;True|2023-07-13T11:54:33.7989040+08:00;True|2023-07-13T11:54:23.3967174+08:00;True|2023-07-06T09:49:52.7407983+08:00;True|2023-05-25T15:37:23.5406830+08:00;False|2023-05-25T15:36:09.3589239+08:00;</History>
   </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git a/Yw.Service.Curve.Core/Yw.Service.Curve.Core.csproj b/Yw.Service.Curve.Core/Yw.Service.Curve.Core.csproj
index e21a374..02d15a8 100644
--- a/Yw.Service.Curve.Core/Yw.Service.Curve.Core.csproj
+++ b/Yw.Service.Curve.Core/Yw.Service.Curve.Core.csproj
@@ -7,7 +7,7 @@
 		<RootNamespace>Yw</RootNamespace>
 		<GenerateDocumentationFile>True</GenerateDocumentationFile>
 		<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-		<Version>1.0.4</Version>
+		<Version>1.0.6</Version>
 		<Description>瀹屽杽缂撳瓨鍏宠仈鏇存柊</Description>
 	</PropertyGroup>
 
@@ -27,7 +27,7 @@
 	</ItemGroup>
 
 	<ItemGroup>
-	  <PackageReference Include="Yw.CurveBase.Core" Version="1.0.0" />
+	  <PackageReference Include="Yw.CurveBase.Core" Version="1.0.1" />
 	  <PackageReference Include="Yw.DynamicExpresso.Core" Version="1.0.0" />
 	  <PackageReference Include="Yw.RabbitMq.Core" Version="1.0.0" />
 	  <PackageReference Include="Yw.Redis.Core" Version="1.0.1" />

--
Gitblit v1.9.3