From c498385fb7e372d13e2ee76d7b54ae2381728082 Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期三, 17 十二月 2025 19:35:57 +0800
Subject: [PATCH] 新增了测量模式

---
 src/bianjie/bianjieguihua2.java |   37 ++++++++++++++++++++++++++++++++++---
 1 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/src/bianjie/bianjieguihua2.java b/src/bianjie/bianjieguihua2.java
index bb6e290..0129d75 100644
--- a/src/bianjie/bianjieguihua2.java
+++ b/src/bianjie/bianjieguihua2.java
@@ -34,9 +34,30 @@
 	        double baseLat = parseDMToDecimal(baseParts[0], baseParts[1]);
 	        double baseLon = parseDMToDecimal(baseParts[2], baseParts[3]);
 	        
-	        // 灏咰oordinate鍒楄〃杞崲涓哄眬閮ㄥ潗鏍囩郴鍧愭爣
-	        List<BoundaryAlgorithm.Coordinate> localCoordinates = 
-	            convertToLocalCoordinates(coordinates, baseLat, baseLon);
+			// 灏咰oordinate鍒楄〃杞崲涓哄眬閮ㄥ潗鏍囩郴鍧愭爣
+			List<BoundaryAlgorithm.Coordinate> localCoordinates = 
+				convertToLocalCoordinates(coordinates, baseLat, baseLon);
+
+			// 涓夎褰㈠皬鍖哄煙鐗规畩澶勭悊锛岄伩鍏嶈繃搴︽彃鍊煎鑷寸偣鏁版墿澧�
+			if (localCoordinates.size() == 3) {
+				double triangleArea = calculatePolygonArea(localCoordinates);
+				double trianglePerimeter = calculatePerimeter(localCoordinates);
+
+				System.out.println("妫�娴嬪埌涓夎褰㈣竟鐣岋紝闈㈢Н=" + String.format("%.2f", triangleArea) +
+						"m虏, 鍛ㄩ暱=" + String.format("%.2f", trianglePerimeter) + "m");
+
+				if (triangleArea < 100.0 || trianglePerimeter < 30.0) {
+					System.out.println("灏忎笁瑙掑舰锛岃烦杩囨彃鍊间紭鍖�");
+					BoundaryAlgorithm.Coordinate firstPoint = localCoordinates.get(0);
+					List<BoundaryAlgorithm.Coordinate> trianglePoints = new ArrayList<>(localCoordinates);
+					trianglePoints.add(new BoundaryAlgorithm.Coordinate(
+							firstPoint.x,
+							firstPoint.y,
+							firstPoint.lat,
+							firstPoint.lon));
+					return convertBoundaryPointsToString(trianglePoints);
+				}
+			}
 	        
 	        // 鍒涘缓绠楁硶瀹炰緥
 	        BoundaryAlgorithm algorithm = new BoundaryAlgorithm();
@@ -264,6 +285,16 @@
 	    
 	    return Math.abs(area) / 2.0;
 	}
+
+	private static double calculatePerimeter(List<BoundaryAlgorithm.Coordinate> points) {
+	    if (points == null || points.size() != 3) {
+	        return 0.0;
+	    }
+	    double d1 = calculateDistance(points.get(0), points.get(1));
+	    double d2 = calculateDistance(points.get(1), points.get(2));
+	    double d3 = calculateDistance(points.get(2), points.get(0));
+	    return d1 + d2 + d3;
+	}
 	
 	// ============ 鍏朵粬鏂规硶淇濇寔涓嶅彉 ============
 	

--
Gitblit v1.10.0