From d91d1fc34a8af84513416cb2a03c75d96fb0304e Mon Sep 17 00:00:00 2001
From: zzgtfwq <zzgtfwq>
Date: 星期三, 10 十二月 2025 08:46:01 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/utils/Utils.java |  208 +++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 175 insertions(+), 33 deletions(-)

diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index fa440ef..c14a658 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -87,15 +87,14 @@
      */
     public static String getShallowLoc(SlaveProperties slaveProperties, String deepLoc) {
         int row = getRow(deepLoc);
-        int remainder = (int) Arith.remainder(row, slaveProperties.getGroupCount());
-        int shallowRow = remainder == 1 ? (row + 1) : (row - 1);
-        if(row==9 ||  row==15 ){
-            shallowRow = row + 1;
-        }else if(row==12 ||  row==18 ){
-            shallowRow = row - 1;
-        }else {
-            return null;
+        int shallowRow = row;
+        if (row==1 || row == 5 || row==11){
+            shallowRow = row+1;
+        } else if (row==4 || row==8 || row == 14){
+            shallowRow = row-1;
         }
+//        int remainder = (int) Arith.remainder(row, slaveProperties.getGroupCount());
+//        int shallowRow = remainder == 1 ? (row + 1) : (row - 1);
         return zerofill(String.valueOf(shallowRow), 2) + deepLoc.substring(2);
     }
 
@@ -114,21 +113,13 @@
         int row = getRow(shallowLoc);
 //        int remainder = (int) Arith.remainder(row, slaveProperties.getGroupCount());
         int targetRow;
-        switch (row){
-            case 10:
-                targetRow = 9;
-                break;
-            case 11:
-                targetRow = 12;
-                break;
-            case 16:
-                targetRow = 15;
-                break;
-            case 17:
-                targetRow = 18;
-                break;
-            default:
-                throw new RuntimeException(shallowLoc + "涓嶆槸娴呭簱浣嶏紝绯荤粺绻佸繖");
+//        int targetRow = row;
+        if (row==2 || row == 6 || row==12){
+            targetRow = row-1;
+        } else if (row==3 || row==7 || row == 13){
+            targetRow = row+1;
+        }else {
+            throw new RuntimeException(shallowLoc + "涓嶆槸娴呭簱浣嶏紝绯荤粺绻佸繖");
         }
 //        if (remainder == 2) {
 //            targetRow = row - 1;
@@ -144,14 +135,23 @@
      * 鑾峰彇 娴呭簱浣嶆帓瀵瑰簲鐨勬繁搴撲綅鎺�
      */
     public static Integer getDeepRow(SlaveProperties slaveProperties, Integer shallowRow) {
-        int remainder = (int) Arith.remainder(shallowRow, slaveProperties.getGroupCount());
+//        int remainder = (int) Arith.remainder(shallowRow, slaveProperties.getGroupCount());
         int targetRow;
-        if (remainder == 2) {
-            targetRow = shallowRow - 1;
-        } else if (remainder == 3) {
-            targetRow = shallowRow + 1;
-        } else {
-            throw new RuntimeException(shallowRow + "涓嶆槸娴呭簱浣嶆帓锛岀郴缁熺箒蹇�");
+//        if (remainder == 2) {
+//            targetRow = shallowRow - 1;
+//        } else if (remainder == 3) {
+//            targetRow = shallowRow + 1;
+//        } else {
+//            throw new RuntimeException(shallowRow + "涓嶆槸娴呭簱浣嶆帓锛岀郴缁熺箒蹇�");
+//        }
+
+//        int targetRow = row;
+        if (shallowRow==2 || shallowRow == 6 || shallowRow==12){
+            targetRow = shallowRow-1;
+        } else if (shallowRow==3 || shallowRow==7 || shallowRow == 13){
+            targetRow = shallowRow+1;
+        }else {
+            throw new RuntimeException(shallowRow + "涓嶆槸娴呭簱浣嶏紝绯荤粺绻佸繖");
         }
         return targetRow;
     }
@@ -184,12 +184,154 @@
 
     }
 
+
+    public static double[] getRgvPosNew(Integer devNo,double a, double b) {
+        double[] rgvPosNew = getRgvPosNew(a, b);
+        switch (devNo){
+            case 101:
+            case 102:
+            case 103:
+            case 104:
+            case 105:
+            case 106:
+            case 107:
+            case 108:
+            case 109:
+            case 110:
+            case 111:
+                rgvPosNew[0] = rgvPosNew[0] - 70;
+                break;
+            case 112:
+            case 113:
+            case 114:
+            case 115:
+                rgvPosNew[0] = rgvPosNew[0] + 50;
+                break;
+            case 116:
+            case 117:
+            case 118:
+            case 119:
+            case 120:
+            case 121:
+            case 122:
+            case 123:
+            case 124:
+            case 125:
+            case 126:
+            case 127:
+            case 128:
+            case 129:
+            case 130:
+            case 131:
+            case 132:
+            case 133:
+                rgvPosNew[1] = rgvPosNew[1] + 50;
+                break;
+            case 134:
+                rgvPosNew[1] = rgvPosNew[1] - 70;
+                break;
+        }
+        return rgvPosNew;
+
+    }
+    public static double[] getRgvPosNew(double a, double b) {
+        Object[][] intervals = {
+//                // 寮х嚎鍖洪棿锛堟嫄鐐�116-115锛夛紝鎺у埗鐐瑰亣璁句负(1125, 882)
+//                {680103, 731550, 1115, 882, 1215, 775, 1125, 882},
+                // 鐩寸嚎鍖洪棿锛�0-134400锛�
+//                {璧风偣, 缁堢偣, 绫诲瀷, x1, y1, x2, y2,
+                {0.0, 240000.0, 0, 100.0, 225.0, 1100.0, 225.0},
+                {1000000.0, 1240000.0, 0, 100.0, 625.0, 1100.0, 625.0},
+//                // 鍦嗗姬鍖洪棿锛堟嫄鐐�116-115锛夋柊鍙傛暟锛氬渾蹇�(1115,775)
+//                {120000.0, 127500.0, 2, 60.0, 750.0, 10.0, 800.0, 60.0, 800.0}, // 淇缁堢偣鍧愭爣
+//                {127500.0, 134900.0, 2, 10.0, 800.0, 60.0, 850.0, 60.0, 800.0},
+//                {134900.0, 680103.0,0, 60.0, 850.0, 1100.0, 850.0},
+//                {680103.0, 731550.0, 2, 1100.0, 850.0, 1200.0, 750.0, 1100.0, 750.0},
+//                {731550.0, 972950.0,0, 1200.0, 750.0, 1200.0, 100.0},
+//                {972950.0, 1016193.0, 2, 1200.0, 100.0, 1150.0, 50.0, 1150.0, 100.0},
+//                {1016193.0, 1063563.0, 2, 1150.0, 50.0, 1100.0, 100.0, 1150.0, 100.0},
+//                {1063563.0, 1315250.0,0, 1100.0, 100.0, 1100.0, 700.0},
+//                {1315250.0, 1322829.0, 2, 1100.0, 700.0, 1050.0, 750.0, 1050.0, 700.0},
+//                {1322829.0, 1737000.0,0, 1050.0, 750.0, 390.0, 750.0},
+        };
+
+        for (Object[] interval : intervals) {
+            double start = (Double) interval[0];
+            double end = (Double) interval[1];
+            int type = (Integer) interval[2];
+
+            if (b >= start && b <= end) {
+                double t = (b - start) / (end - start);
+
+                // 鏍规嵁涓嶅悓绫诲瀷璁$畻鍧愭爣
+                switch (type) {
+                    case 0: // 鐩寸嚎
+                        return linearInterpolation(interval, t);
+                    case 1: // 璐濆灏旀洸绾�
+                        return bezierInterpolation(interval, t);
+                    case 2: // 鍦嗗姬
+                        return circularInterpolation(interval, t);
+                }
+            }
+        }
+        return new double[]{0, 0};
+    }
+
+
+
+    // 鐩寸嚎鎻掑��
+    private static double[] linearInterpolation(Object[] interval, double t) {
+        double x1 = (Double) interval[3];
+        double y1 = (Double) interval[4];
+        double x2 = (Double) interval[5];
+        double y2 = (Double) interval[6];
+        return new double[]{
+                x1 + t * (x2 - x1),
+                y1 + t * (y2 - y1)
+        };
+    }
+
+    // 璐濆灏旀洸绾挎彃鍊�
+    private static double[] bezierInterpolation(Object[] interval, double t) {
+        double x0 = (Double) interval[3];
+        double y0 = (Double) interval[4];
+        double x2 = (Double) interval[5];
+        double y2 = (Double) interval[6];
+        double cx = (Double) interval[7];
+        double cy = (Double) interval[8];
+        return new double[]{
+                Math.pow(1-t, 2)*x0 + 2*(1-t)*t*cx + t*t*x2,
+                Math.pow(1-t, 2)*y0 + 2*(1-t)*t*cy + t*t*y2
+        };
+    }
+
+    // 鍦嗗姬鎻掑�硷紙鏂板锛�
+    private static double[] circularInterpolation(Object[] interval, double t) {
+        // 鍙傛暟瑙f瀽
+        double startX = (Double) interval[3];
+        double startY = (Double) interval[4];
+        double endX = (Double) interval[5];
+        double endY = (Double) interval[6];
+        double centerX = (Double) interval[7];
+        double centerY = (Double) interval[8];
+
+        // 璁$畻璧峰瑙掑害鍜岀粓姝㈣搴�
+        double startAngle = Math.atan2(startY - centerY, startX - centerX);
+        double endAngle = Math.atan2(endY - centerY, endX - centerX);
+
+        // 瑙掑害鎻掑��
+        double currentAngle = startAngle + t * (endAngle - startAngle);
+        double radius = Math.hypot(startX - centerX, startY - centerY);
+
+        return new double[]{
+                centerX + radius * Math.cos(currentAngle),
+                centerY + radius * Math.sin(currentAngle)
+        };
+    }
+
     public static void main(String[] args) {
         SlaveProperties slaveProperties = new SlaveProperties();
         slaveProperties.setDoubleDeep(true);
-
-        String aa = getDeepLoc(slaveProperties,"1604402");
-
         List<Integer> list = new ArrayList<>();
         list.add(1);list.add(4);list.add(5);list.add(8);list.add(9);list.add(12);
         slaveProperties.setDoubleLocs(list);

--
Gitblit v1.9.1