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