张世豪
2 天以前 f0d6cefec73492c29d8323e66fb92ee6bbb60cd2
src/lujing/AoxinglujingHaveObstacel.java
@@ -182,7 +182,30 @@
    private static List<Obstacle> parseObstacles(String obsStr, double margin) {
        List<Obstacle> list = new ArrayList<>();
        if (obsStr == null || obsStr.isEmpty()) return list;
        for (String part : obsStr.split("\\$")) {
        // 兼容两种格式:
        // 1. 括号分隔:(x1,y1;x2,y2)(x3,y3;x4,y4)
        // 2. $分隔:x1,y1;x2,y2$x3,y3;x4,y4
        String[] groups;
        if (obsStr.contains("(") && obsStr.contains(")")) {
            // 处理括号格式
            // 移除所有空白字符
            String cleanStr = obsStr.replaceAll("\\s+", "");
            // 提取括号内的内容
            List<String> parts = new ArrayList<>();
            java.util.regex.Matcher m = java.util.regex.Pattern.compile("\\(([^)]+)\\)").matcher(cleanStr);
            while (m.find()) {
                parts.add(m.group(1));
            }
            groups = parts.toArray(new String[0]);
        } else {
            // 处理$分隔格式
            groups = obsStr.split("\\$");
        }
        for (String part : groups) {
            if (part == null || part.trim().isEmpty()) continue;
            List<Point> pts = parseCoords(part);
            if (pts.size() == 2) {
                double r = dist(pts.get(0), pts.get(1));