From 7881cef5c3dcea8e6037101db2c3eeb2fd3ba5da Mon Sep 17 00:00:00 2001
From: 826220679@qq.com <826220679@qq.com>
Date: 星期六, 27 十二月 2025 23:42:36 +0800
Subject: [PATCH] 1211
---
src/lujing/MowingPathGenerationPage.java | 103 ++++++++++++++++++++++++++++++++++-----------------
1 files changed, 69 insertions(+), 34 deletions(-)
diff --git a/src/lujing/MowingPathGenerationPage.java b/src/lujing/MowingPathGenerationPage.java
index 78735ca..d30bc1f 100644
--- a/src/lujing/MowingPathGenerationPage.java
+++ b/src/lujing/MowingPathGenerationPage.java
@@ -609,12 +609,14 @@
// 鏃犻殰纰嶇墿鐨勬儏鍐�
if (grassType == 1) {
// 鍑稿舰鍦板潡锛屾棤闅滅鐗� -> 璋冪敤 AoxinglujingNoObstacle
+ System.out.println("璋冪敤绠楁硶: 鍑稿舰鏃犻殰纰嶇墿, 绫诲悕: AoxinglujingNoObstacle");
List<AoxinglujingNoObstacle.PathSegment> segments =
AoxinglujingNoObstacle.planPath(boundary, plannerWidth, safetyMarginStr);
generated = formatAoxingPathSegments(segments);
} else if (grassType == 2) {
// 寮傚舰鍦板潡锛屾棤闅滅鐗� -> 璋冪敤 YixinglujingNoObstacle
// 璋冪敤 YixinglujingNoObstacle.planPath 鑾峰彇璺緞娈靛垪琛�
+ System.out.println("璋冪敤绠楁硶: 寮傚舰鏃犻殰纰嶇墿, 绫诲悕: YixinglujingNoObstacle");
List<YixinglujingNoObstacle.PathSegment> segments =
YixinglujingNoObstacle.planPath(boundary, plannerWidth, safetyMarginStr);
// 鏍煎紡鍖栬矾寰勬鍒楄〃涓哄瓧绗︿覆
@@ -625,6 +627,7 @@
JOptionPane.showMessageDialog(parentComponent, "鏃犳硶鍒ゆ柇鍦板潡绫诲瀷锛屽皾璇曟寜鍑稿舰鍦板潡澶勭悊",
"鎻愮ず", JOptionPane.WARNING_MESSAGE);
}
+ System.out.println("璋冪敤绠楁硶: 鏃犳硶鍒ゆ柇绫诲瀷(榛樿鍑稿舰鏃犻殰纰嶇墿), 绫诲悕: AoxinglujingNoObstacle");
List<AoxinglujingNoObstacle.PathSegment> segments =
AoxinglujingNoObstacle.planPath(boundary, plannerWidth, safetyMarginStr);
generated = formatAoxingPathSegments(segments);
@@ -634,12 +637,14 @@
if (grassType == 1) {
// 鍑稿舰鍦板潡锛屾湁闅滅鐗� -> 璋冪敤 AoxinglujingHaveObstacel
// 浼犲叆鍙傛暟锛歜oundary(A), obstacles(B), plannerWidth(C), safetyMarginStr(D)
+ System.out.println("璋冪敤绠楁硶: 鍑稿舰鏈夐殰纰嶇墿, 绫诲悕: AoxinglujingHaveObstacel");
List<AoxinglujingHaveObstacel.PathSegment> segments =
AoxinglujingHaveObstacel.planPath(boundary, obstacles, plannerWidth, safetyMarginStr);
generated = formatAoxingHaveObstaclePathSegments(segments);
} else if (grassType == 2) {
// 寮傚舰鍦板潡锛屾湁闅滅鐗� -> 璋冪敤 YixinglujingHaveObstacel
// 浼犲叆鍙傛暟锛歜oundary(A), obstacles(B), plannerWidth(C), safetyMarginStr(D)
+ System.out.println("璋冪敤绠楁硶: 寮傚舰鏈夐殰纰嶇墿, 绫诲悕: YixinglujingHaveObstacel");
List<YixinglujingHaveObstacel.PathSegment> segments =
YixinglujingHaveObstacel.planPath(boundary, obstacles, plannerWidth, safetyMarginStr);
generated = formatYixingHaveObstaclePathSegments(segments);
@@ -649,6 +654,7 @@
JOptionPane.showMessageDialog(parentComponent, "鏃犳硶鍒ゆ柇鍦板潡绫诲瀷锛屽皾璇曟寜鍑稿舰鍦板潡澶勭悊",
"鎻愮ず", JOptionPane.WARNING_MESSAGE);
}
+ System.out.println("璋冪敤绠楁硶: 鏃犳硶鍒ゆ柇绫诲瀷(榛樿鍑稿舰鏈夐殰纰嶇墿), 绫诲悕: AoxinglujingHaveObstacel");
List<AoxinglujingHaveObstacel.PathSegment> segments =
AoxinglujingHaveObstacel.planPath(boundary, obstacles, plannerWidth, safetyMarginStr);
generated = formatAoxingHaveObstaclePathSegments(segments);
@@ -730,18 +736,20 @@
return "";
}
StringBuilder sb = new StringBuilder();
- AoxinglujingNoObstacle.Point last = null;
- for (AoxinglujingNoObstacle.PathSegment segment : segments) {
- // 鍙坊鍔犲壊鑽夊伐浣滄锛岃烦杩囪繃娓℃
- if (segment.isMowing) {
- // 濡傛灉璧风偣涓庝笂涓�涓粓鐐逛笉鍚岋紝娣诲姞璧风偣
- if (last == null || !equals2D(last, segment.start)) {
- appendPoint(sb, segment.start);
- }
- // 娣诲姞缁堢偣
- appendPoint(sb, segment.end);
- last = segment.end;
+ AoxinglujingNoObstacle.Point lastEnd = null;
+ boolean firstWritten = false;
+ for (AoxinglujingNoObstacle.PathSegment s : segments) {
+ if (!firstWritten) {
+ appendPoint(sb, s.start);
+ firstWritten = true;
+ lastEnd = s.start;
+ } else if (lastEnd == null || !equals2D(lastEnd, s.start)) {
+ // 闈炶繛缁锛屽紑濮嬫柊鐨勫瓙璺緞
+ appendPoint(sb, s.start);
+ lastEnd = s.start;
}
+ appendPointWithType(sb, s.end, s.isMowing);
+ lastEnd = s.end;
}
return sb.toString();
}
@@ -754,18 +762,20 @@
return "";
}
StringBuilder sb = new StringBuilder();
- YixinglujingNoObstacle.Point last = null;
- for (YixinglujingNoObstacle.PathSegment segment : segments) {
- // 鍙坊鍔犲壊鑽夊伐浣滄锛岃烦杩囪繃娓℃
- if (segment.isMowing) {
- // 濡傛灉璧风偣涓庝笂涓�涓粓鐐逛笉鍚岋紝娣诲姞璧风偣
- if (last == null || !equalsYixingPoint(last, segment.start)) {
- appendYixingPoint(sb, segment.start);
- }
- // 娣诲姞缁堢偣
- appendYixingPoint(sb, segment.end);
- last = segment.end;
+ YixinglujingNoObstacle.Point lastEnd = null;
+ boolean firstWritten = false;
+ for (YixinglujingNoObstacle.PathSegment s : segments) {
+ if (!firstWritten) {
+ appendYixingPoint(sb, s.start);
+ firstWritten = true;
+ lastEnd = s.start;
+ } else if (lastEnd == null || !equalsYixingPoint(lastEnd, s.start)) {
+ // 闈炶繛缁锛屽紑濮嬫柊鐨勫瓙璺緞
+ appendYixingPoint(sb, s.start);
+ lastEnd = s.start;
}
+ appendYixingPointWithType(sb, s.end, s.isMowing);
+ lastEnd = s.end;
}
return sb.toString();
}
@@ -802,15 +812,19 @@
return "";
}
StringBuilder sb = new StringBuilder();
- YixinglujingHaveObstacel.Point last = null;
- for (YixinglujingHaveObstacel.PathSegment segment : segments) {
- // 濡傛灉鏄涓�娈碉紝鎴栬�呭綋鍓嶆璧风偣涓庝笂涓�娈电粓鐐逛笉杩炵画锛屽垯娣诲姞璧风偣
- if (last == null || !equalsYixingHaveObstaclePoint(last, segment.start)) {
- appendYixingHaveObstaclePoint(sb, segment.start);
+ YixinglujingHaveObstacel.Point lastEnd = null;
+ boolean firstWritten = false;
+ for (YixinglujingHaveObstacel.PathSegment s : segments) {
+ if (!firstWritten) {
+ appendYixingHaveObstaclePoint(sb, s.start);
+ firstWritten = true;
+ lastEnd = s.start;
+ } else if (lastEnd == null || !equalsYixingHaveObstaclePoint(lastEnd, s.start)) {
+ appendYixingHaveObstaclePoint(sb, s.start);
+ lastEnd = s.start;
}
- // 娣诲姞缁堢偣
- appendYixingHaveObstaclePoint(sb, segment.end);
- last = segment.end;
+ appendYixingHaveObstaclePointWithType(sb, s.end, s.isMowing);
+ lastEnd = s.end;
}
return sb.toString();
}
@@ -825,7 +839,14 @@
if (sb.length() > 0) {
sb.append(";");
}
- sb.append(String.format(Locale.US, "%.6f,%.6f", point.x, point.y));
+ sb.append(String.format(Locale.US, "%.2f,%.2f", point.x, point.y));
+ }
+
+ private void appendYixingHaveObstaclePointWithType(StringBuilder sb, YixinglujingHaveObstacel.Point point, boolean isMowing) {
+ if (sb.length() > 0) {
+ sb.append(";");
+ }
+ sb.append(String.format(Locale.US, "%.2f,%.2f,%s", point.x, point.y, isMowing ? "M" : "T"));
}
/**
@@ -846,7 +867,14 @@
if (sb.length() > 0) {
sb.append(";");
}
- sb.append(String.format(Locale.US, "%.6f,%.6f", point.x, point.y));
+ sb.append(String.format(Locale.US, "%.2f,%.2f", point.x, point.y));
+ }
+
+ private void appendPointWithType(StringBuilder sb, AoxinglujingNoObstacle.Point point, boolean isMowing) {
+ if (sb.length() > 0) {
+ sb.append(";");
+ }
+ sb.append(String.format(Locale.US, "%.2f,%.2f,%s", point.x, point.y, isMowing ? "M" : "T"));
}
/**
@@ -867,7 +895,14 @@
if (sb.length() > 0) {
sb.append(";");
}
- sb.append(String.format(Locale.US, "%.6f,%.6f", point.x, point.y));
+ sb.append(String.format(Locale.US, "%.2f,%.2f", point.x, point.y));
+ }
+
+ private void appendYixingPointWithType(StringBuilder sb, YixinglujingNoObstacle.Point point, boolean isMowing) {
+ if (sb.length() > 0) {
+ sb.append(";");
+ }
+ sb.append(String.format(Locale.US, "%.2f,%.2f,%s", point.x, point.y, isMowing ? "M" : "T"));
}
/**
@@ -888,7 +923,7 @@
if (sb.length() > 0) {
sb.append(";");
}
- sb.append(String.format(Locale.US, "%.6f,%.6f", point.x, point.y));
+ sb.append(String.format(Locale.US, "%.2f,%.2f", point.x, point.y));
}
// ========== UI杈呭姪鏂规硶 ==========
--
Gitblit v1.10.0