From aaa515911eef34e2263ce8baa6f860025fd6060d Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期二, 14 一月 2025 11:21:02 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java |  169 +++++++++++++++++++++++++++----------------------------
 1 files changed, 83 insertions(+), 86 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
index faa379e..2d71496 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
@@ -2,7 +2,6 @@
 
 import com.zy.acs.common.enums.AgvDirectionType;
 import com.zy.acs.framework.common.Cools;
-import com.zy.acs.manager.common.utils.MapDataUtils;
 import com.zy.acs.manager.core.constant.MapDataConstant;
 import com.zy.acs.manager.core.domain.SortCodeDto;
 import com.zy.acs.manager.core.domain.UnlockPathTask;
@@ -212,7 +211,7 @@
     // v1 BFS ------------------------------------------------------------------------------
     public List<NavigateNode> getWaveScopeByCode(Integer lev, String code, Double radiusLen) {
         String[][] codeMatrix = mapDataDispatcher.getCodeMatrix(lev);
-        String[][] cdaMatrix = mapDataDispatcher.getCdaMatrix(lev);
+        Double[][][] cdaMatrix = mapDataDispatcher.getCdaMatrix(lev);
 
         int[] codeMatrixIdx = mapDataDispatcher.getCodeMatrixIdx(lev, code);
         NavigateNode originNode = new NavigateNode(codeMatrixIdx[0], codeMatrixIdx[1], code);
@@ -229,7 +228,7 @@
     }
 
     public void spreadWaveNode(NavigateNode originNode, NavigateNode currNode
-            , String[][] codeMatrix, String[][] cdaMatrix, Double radiusLen
+            , String[][] codeMatrix, Double[][][] cdaMatrix, Double radiusLen
             , List<NavigateNode> includeList, Set<NavigateNode> existNodes) {
         int x = currNode.getX();
         int y = currNode.getY();
@@ -241,7 +240,7 @@
     }
 
     public void extendNeighborNodes(NavigateNode originNode, NavigateNode nextNode
-            , String[][] codeMatrix, String[][] cdaMatrix, Double radiusLen
+            , String[][] codeMatrix, Double[][][] cdaMatrix, Double radiusLen
             , List<NavigateNode> includeList, Set<NavigateNode> existNodes) {
 
         int x = nextNode.getX();
@@ -258,11 +257,9 @@
 
         existNodes.add(nextNode);
 
-
-        List<Double> o1Cda = MapDataUtils.parseCdaNode(cdaMatrix[originNode.getX()][originNode.getY()]);
-        List<Double> o2Cda = MapDataUtils.parseCdaNode(cdaMatrix[x][y]);
-
-        if (Math.pow(o1Cda.get(0) - o2Cda.get(0), 2) + Math.pow(o1Cda.get(1) - o2Cda.get(1), 2) <= Math.pow(radiusLen, 2)) {
+        Double[] o1Cda = cdaMatrix[originNode.getX()][originNode.getY()];
+        Double[] o2Cda = cdaMatrix[x][y];
+        if (Math.pow(o1Cda[0] - o2Cda[0], 2) + Math.pow(o1Cda[1] - o2Cda[1], 2) <= Math.pow(radiusLen, 2)) {
             nextNode.setCodeData(codeMatrix[x][y]);
 
             if (!nextNode.getCodeData().equals(CodeNodeType.NONE.val)) {
@@ -275,83 +272,83 @@
     }
 
     // v2 BFS ------------------------------------------------------------------------------
-    public List<NavigateNode> getWaveScopeByCode0(Integer lev, String code, Double radiusLen) {
-        String[][] codeMatrix = mapDataDispatcher.getCodeMatrix(lev);
-
-        int[] codeMatrixIdx = mapDataDispatcher.getCodeMatrixIdx(lev, code);
-        NavigateNode originNode = new NavigateNode(codeMatrixIdx[0], codeMatrixIdx[1], code);
-
-        List<NavigateNode> includeList = new ArrayList<>();
-        Set<NavigateNode> visited = new HashSet<>(); // Track visited nodes to avoid re-processing
-        Queue<NavigateNode> queue = new LinkedList<>();
-
-        includeList.add(originNode);
-        visited.add(originNode);
-        queue.offer(originNode);
-
-        while (!queue.isEmpty()) {
-            NavigateNode currNode = queue.poll();
-            this.spreadWaveNode0(originNode, currNode, codeMatrix, radiusLen, includeList, visited, queue);
-        }
-
-        return includeList;
-    }
-
-    public void spreadWaveNode0(NavigateNode originNode, NavigateNode currNode,
-                               String[][] codeMatrix, Double radiusLen,
-                               List<NavigateNode> includeList, Set<NavigateNode> visited, Queue<NavigateNode> queue) {
-
-        int x = currNode.getX();
-        int y = currNode.getY();
-
-        // Expand neighbors in all four directions (up, down, left, right)
-        this.extendNeighborNodes0(originNode, new NavigateNode(x, y + 1), codeMatrix, radiusLen, includeList, visited, queue);
-        this.extendNeighborNodes0(originNode, new NavigateNode(x, y - 1), codeMatrix, radiusLen, includeList, visited, queue);
-        this.extendNeighborNodes0(originNode, new NavigateNode(x - 1, y), codeMatrix, radiusLen, includeList, visited, queue);
-        this.extendNeighborNodes0(originNode, new NavigateNode(x + 1, y), codeMatrix, radiusLen, includeList, visited, queue);
-    }
-
-    public void extendNeighborNodes0(NavigateNode originNode, NavigateNode nextNode,
-                                    String[][] codeMatrix, Double radiusLen,
-                                    List<NavigateNode> includeList, Set<NavigateNode> visited, Queue<NavigateNode> queue) {
-        int x = nextNode.getX();
-        int y = nextNode.getY();
-
-        // Check if the node is out of bounds
-        if (x < 0 || x >= codeMatrix.length || y < 0 || y >= codeMatrix[0].length) {
-            return;
-        }
-
-        // If the node has already been visited, skip it
-        if (visited.contains(nextNode)) {
-            return;
-        }
-
-        visited.add(nextNode);
-
-        String nextNodeCodeData = codeMatrix[x][y];
-
-        // If it's a NONE node, we still need to check its surroundings
-        if (nextNodeCodeData.equals(CodeNodeType.NONE.val)) {
-            this.spreadWaveNode0(originNode, nextNode, codeMatrix, radiusLen, includeList, visited, queue);
-        } else {
-            Integer lev = MapDataDispatcher.MAP_DEFAULT_LEV;
-            String[][] cdaMatrix = mapDataDispatcher.getCdaMatrix(lev);
-
-            // Check if the distance between nodes is within the radius length
-            List<Double> o1Cda = MapDataUtils.parseCdaNode(cdaMatrix[originNode.getX()][originNode.getY()]);
-            List<Double> o2Cda = MapDataUtils.parseCdaNode(cdaMatrix[nextNode.getX()][nextNode.getY()]);
-
-            // Calculate Euclidean distance between the nodes
-            if (Math.pow(o1Cda.get(0) - o2Cda.get(0), 2) + Math.pow(o1Cda.get(1) - o2Cda.get(1), 2) <= Math.pow(radiusLen, 2)) {
-                nextNode.setCodeData(nextNodeCodeData);
-                includeList.add(nextNode);
-
-                // Add the node to the queue to expand its neighbors
-                queue.offer(nextNode);
-            }
-        }
-    }
+//    public List<NavigateNode> getWaveScopeByCode0(Integer lev, String code, Double radiusLen) {
+//        String[][] codeMatrix = mapDataDispatcher.getCodeMatrix(lev);
+//
+//        int[] codeMatrixIdx = mapDataDispatcher.getCodeMatrixIdx(lev, code);
+//        NavigateNode originNode = new NavigateNode(codeMatrixIdx[0], codeMatrixIdx[1], code);
+//
+//        List<NavigateNode> includeList = new ArrayList<>();
+//        Set<NavigateNode> visited = new HashSet<>(); // Track visited nodes to avoid re-processing
+//        Queue<NavigateNode> queue = new LinkedList<>();
+//
+//        includeList.add(originNode);
+//        visited.add(originNode);
+//        queue.offer(originNode);
+//
+//        while (!queue.isEmpty()) {
+//            NavigateNode currNode = queue.poll();
+//            this.spreadWaveNode0(originNode, currNode, codeMatrix, radiusLen, includeList, visited, queue);
+//        }
+//
+//        return includeList;
+//    }
+//
+//    public void spreadWaveNode0(NavigateNode originNode, NavigateNode currNode,
+//                               String[][] codeMatrix, Double radiusLen,
+//                               List<NavigateNode> includeList, Set<NavigateNode> visited, Queue<NavigateNode> queue) {
+//
+//        int x = currNode.getX();
+//        int y = currNode.getY();
+//
+//        // Expand neighbors in all four directions (up, down, left, right)
+//        this.extendNeighborNodes0(originNode, new NavigateNode(x, y + 1), codeMatrix, radiusLen, includeList, visited, queue);
+//        this.extendNeighborNodes0(originNode, new NavigateNode(x, y - 1), codeMatrix, radiusLen, includeList, visited, queue);
+//        this.extendNeighborNodes0(originNode, new NavigateNode(x - 1, y), codeMatrix, radiusLen, includeList, visited, queue);
+//        this.extendNeighborNodes0(originNode, new NavigateNode(x + 1, y), codeMatrix, radiusLen, includeList, visited, queue);
+//    }
+//
+//    public void extendNeighborNodes0(NavigateNode originNode, NavigateNode nextNode,
+//                                    String[][] codeMatrix, Double radiusLen,
+//                                    List<NavigateNode> includeList, Set<NavigateNode> visited, Queue<NavigateNode> queue) {
+//        int x = nextNode.getX();
+//        int y = nextNode.getY();
+//
+//        // Check if the node is out of bounds
+//        if (x < 0 || x >= codeMatrix.length || y < 0 || y >= codeMatrix[0].length) {
+//            return;
+//        }
+//
+//        // If the node has already been visited, skip it
+//        if (visited.contains(nextNode)) {
+//            return;
+//        }
+//
+//        visited.add(nextNode);
+//
+//        String nextNodeCodeData = codeMatrix[x][y];
+//
+//        // If it's a NONE node, we still need to check its surroundings
+//        if (nextNodeCodeData.equals(CodeNodeType.NONE.val)) {
+//            this.spreadWaveNode0(originNode, nextNode, codeMatrix, radiusLen, includeList, visited, queue);
+//        } else {
+//            Integer lev = MapDataDispatcher.MAP_DEFAULT_LEV;
+//            String[][] cdaMatrix = mapDataDispatcher.getCdaMatrix(lev);
+//
+//            // Check if the distance between nodes is within the radius length
+//            List<Double> o1Cda = MapDataUtils.parseCdaNode(cdaMatrix[originNode.getX()][originNode.getY()]);
+//            List<Double> o2Cda = MapDataUtils.parseCdaNode(cdaMatrix[nextNode.getX()][nextNode.getY()]);
+//
+//            // Calculate Euclidean distance between the nodes
+//            if (Math.pow(o1Cda.get(0) - o2Cda.get(0), 2) + Math.pow(o1Cda.get(1) - o2Cda.get(1), 2) <= Math.pow(radiusLen, 2)) {
+//                nextNode.setCodeData(nextNodeCodeData);
+//                includeList.add(nextNode);
+//
+//                // Add the node to the queue to expand its neighbors
+//                queue.offer(nextNode);
+//            }
+//        }
+//    }
 
 
     public Boolean isTurnCorner(String codeData) {

--
Gitblit v1.9.1