| | |
| | | return codeService.getById(node).getData(); |
| | | }).collect(Collectors.toList())); |
| | | } |
| | | List<String> codeDataList = codeList.stream().map(Code::getData).collect(Collectors.toList()); |
| | | System.out.println(codeDataList.toString()); |
| | | System.out.println(adjacencyCodeMap.toString()); |
| | | |
| | | |
| | | Set<String> visited = new HashSet<>(); |
| | | |
| | | for (String codeData : codeList.stream().map(Code::getData).collect(Collectors.toList())) { |
| | | if (!visited.contains(codeData)) { |
| | | Lane lane = new Lane(String.valueOf(snowflakeIdWorker.nextId()).substring(3)); |
| | | dfsCalc(codeData, null, lane, visited, adjacencyCodeMap); |
| | | lanes.add(lane); |
| | | for (String codeData : codeDataList) { |
| | | if (adjacencyCodeMap.get(codeData).size() != 2) { |
| | | if (!visited.contains(codeData)) { |
| | | Lane lane = new Lane(String.valueOf(snowflakeIdWorker.nextId()).substring(3)); |
| | | dfsCalc(codeData, null, lane, visited, adjacencyCodeMap); |
| | | lanes.add(lane); |
| | | } |
| | | } |
| | | } |
| | | System.out.println(GsonUtils.toJson(lanes)); |
| | |
| | | if (parent == null) { |
| | | return true; |
| | | } |
| | | double direction1 = calculateDirection(codeService.selectByData(parent) , codeService.selectByData(code)); |
| | | double direction2 = calculateDirection(codeService.selectByData(code), codeService.selectByData(neighbor)); |
| | | return direction1 == direction2; |
| | | Code parentCode = codeService.selectByData(parent); |
| | | Code currentCode = codeService.selectByData(code); |
| | | Code neighborCode = codeService.selectByData(neighbor); |
| | | |
| | | double direction1 = calculateDirection(parentCode, currentCode); |
| | | double direction2 = calculateDirection(currentCode, neighborCode); |
| | | double angleDifference = Math.abs(direction1 - direction2); |
| | | |
| | | angleDifference = Math.min(angleDifference, 2 * Math.PI - angleDifference); |
| | | |
| | | return angleDifference < Math.toRadians(3); |
| | | } |
| | | |
| | | public double calculateDirection(Code from, Code to) { |