diff --git a/BetterGenshinImpact.Test/MainWindow.xaml b/BetterGenshinImpact.Test/MainWindow.xaml
index 580d3abf..2cb66533 100644
--- a/BetterGenshinImpact.Test/MainWindow.xaml
+++ b/BetterGenshinImpact.Test/MainWindow.xaml
@@ -56,5 +56,11 @@
Height="23"
Click="AutoCookTestCase"
Content="自动烹饪图像测试" />
+
\ No newline at end of file
diff --git a/BetterGenshinImpact.Test/MainWindow.xaml.cs b/BetterGenshinImpact.Test/MainWindow.xaml.cs
index a3c14922..d0d91d04 100644
--- a/BetterGenshinImpact.Test/MainWindow.xaml.cs
+++ b/BetterGenshinImpact.Test/MainWindow.xaml.cs
@@ -4,6 +4,7 @@ using BetterGenshinImpact.GameTask.Common.Map;
using BetterGenshinImpact.Test.Dataset;
using BetterGenshinImpact.Test.Simple;
using BetterGenshinImpact.Test.Simple.AllMap;
+using BetterGenshinImpact.Test.Simple.Track;
using BetterGenshinImpact.Test.View;
namespace BetterGenshinImpact.Test;
@@ -65,4 +66,9 @@ public partial class MainWindow : Window
{
AutoCookTest.Test();
}
+
+ private void MapPathView(object sender, RoutedEventArgs e)
+ {
+ MapPathTest.Test();
+ }
}
diff --git a/BetterGenshinImpact.Test/Simple/Track/MapPathTest.cs b/BetterGenshinImpact.Test/Simple/Track/MapPathTest.cs
new file mode 100644
index 00000000..2339cf32
--- /dev/null
+++ b/BetterGenshinImpact.Test/Simple/Track/MapPathTest.cs
@@ -0,0 +1,34 @@
+using BetterGenshinImpact.Core.Config;
+using BetterGenshinImpact.Core.Recognition.OpenCv;
+using BetterGenshinImpact.GameTask.AutoTrackPath.Model;
+using BetterGenshinImpact.GameTask.Common.Element.Assets;
+using BetterGenshinImpact.Service;
+using OpenCvSharp;
+using System.IO;
+using System.Text.Json;
+
+namespace BetterGenshinImpact.Test.Simple.Track;
+
+internal class MapPathTest
+{
+ public static void Test()
+ {
+ var wayJson = File.ReadAllText(Global.Absolute(@"log\way\yl3.json"));
+ var way = JsonSerializer.Deserialize(wayJson, ConfigService.JsonOptions) ?? throw new Exception("way json deserialize failed");
+
+ var points = way.WayPointList.Select(giPathPoint => giPathPoint.MatchRect.GetCenterPoint()).ToList();
+
+ var pointsRect = Cv2.BoundingRect(points);
+ var allMap = new Mat(@"E:\HuiTask\更好的原神\地图匹配\有用的素材\mainMap2048Block.png");
+
+ // 按顺序连线,每个点都画圈
+ for (var i = 0; i < points.Count - 1; i++)
+ {
+ Cv2.Line(allMap, points[i], points[i + 1], Scalar.Red, 1);
+ Cv2.Circle(allMap, points[i], 3, Scalar.Red, -1);
+ }
+
+ var map = allMap[new Rect(pointsRect.X - 100, pointsRect.Y - 100, pointsRect.Width + 200, pointsRect.Height + 200)];
+ Cv2.ImShow("map", map);
+ }
+}
diff --git a/BetterGenshinImpact/GameTask/AutoTrackPath/AutoTrackPathTask.cs b/BetterGenshinImpact/GameTask/AutoTrackPath/AutoTrackPathTask.cs
index d7304c35..ab100091 100644
--- a/BetterGenshinImpact/GameTask/AutoTrackPath/AutoTrackPathTask.cs
+++ b/BetterGenshinImpact/GameTask/AutoTrackPath/AutoTrackPathTask.cs
@@ -66,7 +66,7 @@ public class AutoTrackPathTask
var json = File.ReadAllText(Global.Absolute(@"GameTask\AutoTrackPath\Assets\tp.json"));
_tpPositions = JsonSerializer.Deserialize>(json, ConfigService.JsonOptions) ?? throw new Exception("tp.json deserialize failed");
- var wayJson = File.ReadAllText(Global.Absolute(@"log\way\way2.json"));
+ var wayJson = File.ReadAllText(Global.Absolute(@"log\way\yl3.json"));
_way = JsonSerializer.Deserialize(wayJson, ConfigService.JsonOptions) ?? throw new Exception("way json deserialize failed");
}
diff --git a/BetterGenshinImpact/GameTask/AutoTrackPath/Model/GiPath.cs b/BetterGenshinImpact/GameTask/AutoTrackPath/Model/GiPath.cs
index 613fe25c..01df91ec 100644
--- a/BetterGenshinImpact/GameTask/AutoTrackPath/Model/GiPath.cs
+++ b/BetterGenshinImpact/GameTask/AutoTrackPath/Model/GiPath.cs
@@ -27,9 +27,9 @@ public class GiPath
{
var lastPoint = WayPointList[^1];
var distance = MathHelper.Distance(giPathPoint.Pt, lastPoint.Pt);
- if (distance < 10)
+ if (distance == 0 || distance > 50)
{
- Debug.WriteLine($"距离上个点太近: {distance},舍弃");
+ Debug.WriteLine($"距离上个点太近或者太远: {distance},舍弃");
return;
}
}