From 3e3bd3a148990fb485323b67b9c0edb5bfb4b5e5 Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期五, 12 十二月 2025 15:15:40 +0800
Subject: [PATCH] 删除了自检提示功能

---
 src/zhuye/AppLauncher.java            |   32 ++++++++++
 image/gps2.png                        |    0 
 set.properties                        |    2 
 src/zhuye/Shouye.java                 |    9 +-
 image/gps5.png                        |    0 
 image/gps4.png                        |    0 
 src/gecaoji/MowerBoundaryChecker.java |  117 +++++++++++++++++++++++++++++++++++++++
 image/gps1.png                        |    0 
 image/gps0.png                        |    0 
 9 files changed, 155 insertions(+), 5 deletions(-)

diff --git a/image/gps0.png b/image/gps0.png
new file mode 100644
index 0000000..3df287b
--- /dev/null
+++ b/image/gps0.png
Binary files differ
diff --git a/image/gps1.png b/image/gps1.png
new file mode 100644
index 0000000..24fcef4
--- /dev/null
+++ b/image/gps1.png
Binary files differ
diff --git a/image/gps2.png b/image/gps2.png
new file mode 100644
index 0000000..eb20881
--- /dev/null
+++ b/image/gps2.png
Binary files differ
diff --git a/image/gps4.png b/image/gps4.png
new file mode 100644
index 0000000..65f3fe7
--- /dev/null
+++ b/image/gps4.png
Binary files differ
diff --git a/image/gps5.png b/image/gps5.png
new file mode 100644
index 0000000..2b71dee
--- /dev/null
+++ b/image/gps5.png
Binary files differ
diff --git a/set.properties b/set.properties
index d47c11a..6a027f6 100644
--- a/set.properties
+++ b/set.properties
@@ -1,5 +1,5 @@
 #Current work land selection updated
-#Thu Dec 11 17:40:50 CST 2025
+#Fri Dec 12 15:13:55 CST 2025
 appVersion=-1
 currentWorkLandNumber=LAND1
 cuttingWidth=200
diff --git a/src/gecaoji/MowerBoundaryChecker.java b/src/gecaoji/MowerBoundaryChecker.java
new file mode 100644
index 0000000..636a7db
--- /dev/null
+++ b/src/gecaoji/MowerBoundaryChecker.java
@@ -0,0 +1,117 @@
+package gecaoji;
+
+import java.awt.geom.Point2D;
+import java.util.List;
+
+/**
+ * 鍓茶崏鏈鸿竟鐣屾鏌ュ伐鍏风被銆�
+ *
+ * 鐢ㄦ硶濂戠害锛�
+ * - 杈撳叆鐨勫湴鍧楄竟鐣屼负闂悎鐨勫杈瑰舰鐐瑰簭鍒楋紙椤哄簭涓洪『鏃堕拡鎴栭�嗘椂閽堝潎鍙級锛屾瘡涓偣鍖呭惈 X锛堢背锛夈�乊锛堢背锛夊潗鏍囥��
+ * - 鑻ョ偣浣嶄簬澶氳竟褰㈠唴閮ㄦ垨浣嶄簬杈圭晫绾夸笂锛岃繑鍥� true锛涘惁鍒欒繑鍥� false銆�
+ */
+public final class MowerBoundaryChecker {
+
+    private MowerBoundaryChecker() { }
+
+    /**
+     * 鍒ゆ柇缁欏畾鐐规槸鍚﹀湪杈圭晫澶氳竟褰㈠唴閮紙鍚竟鐣岋級銆�
+     *
+     * @param polygonPoints 杈圭晫鐐瑰垪琛紝姣忎釜鍏冪礌涓� double[2]锛岀储寮�0涓簒锛岀储寮�1涓簓锛涜嚦灏戦渶瑕�3涓偣
+     * @param x 鍓茶崏鏈哄疄鏃禭鍧愭爣锛堢背锛�
+     * @param y 鍓茶崏鏈哄疄鏃禮鍧愭爣锛堢背锛�
+     * @return 濡傛灉鐐瑰湪澶氳竟褰㈠唴閮ㄦ垨杈圭晫涓婂垯杩斿洖 true锛涘惁鍒欒繑鍥� false
+     */
+    public static boolean isInsideBoundary(List<double[]> polygonPoints, double x, double y) {
+        if (polygonPoints == null || polygonPoints.size() < 3) {
+            return false;
+        }
+        int n = polygonPoints.size();
+        boolean inside = false;
+        for (int i = 0, j = n - 1; i < n; j = i++) {
+            double xi = polygonPoints.get(i)[0];
+            double yi = polygonPoints.get(i)[1];
+            double xj = polygonPoints.get(j)[0];
+            double yj = polygonPoints.get(j)[1];
+
+            // 鍒ゆ柇鐐规槸鍚﹀湪褰撳墠杈逛笂锛堣�冭檻娴偣瀹瑰樊锛�
+            if (pointOnSegment(xj, yj, xi, yi, x, y)) {
+                return true;
+            }
+
+            boolean intersect = ((yi > y) != (yj > y)) &&
+                    (x < (xj - xi) * (y - yi) / (yj - yi + 0.0) + xi);
+            if (intersect) {
+                inside = !inside;
+            }
+        }
+        return inside;
+    }
+
+    /**
+     * 閲嶈浇锛氭帴鍙� Point2D 鍒楄〃
+     */
+    public static boolean isInsideBoundaryPoints(List<Point2D.Double> polygonPoints, double x, double y) {
+        if (polygonPoints == null || polygonPoints.size() < 3) {
+            return false;
+        }
+        int n = polygonPoints.size();
+        boolean inside = false;
+        for (int i = 0, j = n - 1; i < n; j = i++) {
+            double xi = polygonPoints.get(i).x;
+            double yi = polygonPoints.get(i).y;
+            double xj = polygonPoints.get(j).x;
+            double yj = polygonPoints.get(j).y;
+
+            if (pointOnSegment(xj, yj, xi, yi, x, y)) {
+                return true;
+            }
+
+            boolean intersect = ((yi > y) != (yj > y)) &&
+                    (x < (xj - xi) * (y - yi) / (yj - yi + 0.0) + xi);
+            if (intersect) {
+                inside = !inside;
+            }
+        }
+        return inside;
+    }
+
+    /**
+     * 閲嶈浇锛氭帴鍙椾簩缁存暟缁� double[][]锛屾瘡琛� [x,y]
+     */
+    public static boolean isInsideBoundary(double[][] polygon, double x, double y) {
+        if (polygon == null || polygon.length < 3) {
+            return false;
+        }
+        int n = polygon.length;
+        boolean inside = false;
+        for (int i = 0, j = n - 1; i < n; j = i++) {
+            double xi = polygon[i][0];
+            double yi = polygon[i][1];
+            double xj = polygon[j][0];
+            double yj = polygon[j][1];
+
+            if (pointOnSegment(xj, yj, xi, yi, x, y)) {
+                return true;
+            }
+
+            boolean intersect = ((yi > y) != (yj > y)) &&
+                    (x < (xj - xi) * (y - yi) / (yj - yi + 0.0) + xi);
+            if (intersect) {
+                inside = !inside;
+            }
+        }
+        return inside;
+    }
+
+    // 鍒ゆ柇鐐规槸鍚﹀湪绾挎 (x1,y1)-(x2,y2) 涓婏紙鍖呮嫭绔偣锛夛紝鍏佽灏忕殑鏁板�艰宸�
+    private static boolean pointOnSegment(double x1, double y1, double x2, double y2, double px, double py) {
+        double cross = (px - x1) * (y2 - y1) - (py - y1) * (x2 - x1);
+        double eps = 1e-8;
+        if (Math.abs(cross) > eps) {
+            return false;
+        }
+        double dot = (px - x1) * (px - x2) + (py - y1) * (py - y2);
+        return dot <= eps;
+    }
+}
diff --git a/src/zhuye/AppLauncher.java b/src/zhuye/AppLauncher.java
new file mode 100644
index 0000000..06d6e58
--- /dev/null
+++ b/src/zhuye/AppLauncher.java
@@ -0,0 +1,32 @@
+package zhuye;
+
+import javax.swing.JFrame;
+import javax.swing.SwingUtilities;
+
+import udpdell.UDPServer;
+
+/**
+ * 绋嬪簭鍏ュ彛鍚姩绫伙紙Swing 妗岄潰鍚姩鍣級銆�
+ * 浣跨敤姝ょ被浣滀负杩愯閰嶇疆鐨勪富绫伙紝淇濊瘉鏈夋槑纭殑 main 鏂规硶銆�
+ */
+public class AppLauncher {
+    public static void main(String[] args) {
+        SwingUtilities.invokeLater(() -> {
+            JFrame frame = new JFrame("AutoMow - 棣栭〉");
+            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+            frame.setSize(400, 800);
+            frame.setLocationRelativeTo(null);
+
+            Shouye shouye = new Shouye();
+            frame.add(shouye);
+
+            frame.setVisible(true);
+            // 鍚姩鏁版嵁鎺ユ敹绾跨▼锛堝鏋滃凡瀹炵幇锛�
+            try {
+                UDPServer.startAsync();
+            } catch (Throwable ignored) {
+                // 蹇界暐鍚姩杩囩▼涓彲鑳藉彂鐢熺殑寮傚父锛岄伩鍏嶄富绾跨▼宕╂簝
+            }
+        });
+    }
+}
diff --git a/src/zhuye/Shouye.java b/src/zhuye/Shouye.java
index bf46c63..ede7cb0 100644
--- a/src/zhuye/Shouye.java
+++ b/src/zhuye/Shouye.java
@@ -213,7 +213,8 @@
 	}
 
 	private void showInitialMowerSelfCheckDialogIfNeeded() {
-		zijian.showInitialPromptIfNeeded(this, this::showRemoteControlDialog);
+		// 宸茬Щ闄よ繘鍏ヤ富椤垫椂鐨勮嚜妫�鎻愮ず锛堟寜鐢ㄦ埛瑕佹眰鍒犻櫎锛�
+		// 浠ュ墠杩欓噷浼氳皟鐢� zijian.showInitialPromptIfNeeded(...) 灞曠ず鑷瀵硅瘽妗嗭紝鐜板凡绂佺敤銆�
 	}
 
 	private void applyIdleTrailDurationFromSettings() {
@@ -1125,9 +1126,9 @@
 			return;
 		}
 		if (startButtonShowingPause) {
-			if (!zijian.ensureBeforeMowing(this, this::showRemoteControlDialog)) {
-				return;
-			}
+			// 鐐瑰嚮寮�濮嬫寜閽椂涓嶅啀寮瑰嚭鑷鎻愮ず锛堟寜鐢ㄦ埛瑕佹眰鍒犻櫎锛�
+			// 鏃ч�昏緫锛氳皟鐢� zijian.ensureBeforeMowing(...) 骞跺湪鏈‘璁よ嚜妫�鏃堕樆姝㈠紑濮�
+			// 鏂伴�昏緫锛氱洿鎺ュ厑璁稿紑濮嬩綔涓�
 		}
 		startButtonShowingPause = !startButtonShowingPause;
 		if (!startButtonShowingPause) {

--
Gitblit v1.10.0