826220679@qq.com
9 小时以前 cbfd1df513c473dd5550d78740c92fc1677b6e9b
src/lujing/YixinglujingNoObstacle.java
@@ -7,7 +7,20 @@
 * 修复:解决凹多边形扫描线跨越边界的问题,优化路径对齐
 */
public class YixinglujingNoObstacle {
    // 用法说明(无障碍物路径规划):
    // - 方法用途:根据地块边界、割草宽度与安全边距,生成覆盖全区域的割草路径。
    // - 参数:
    //   coordinates:地块边界坐标字符串,格式 "x1,y1;x2,y2;...",至少3个点,单位为米。
    //   widthStr:割草宽度(字符串,单位米),用于确定扫描线间距。
    //   marginStr:安全边距(字符串,单位米),用于将地块边界向内收缩,避免贴边作业。
    // - 返回值:List<PathSegment>,其中 PathSegment.start/end 为坐标点,isMowing 为 true 表示割草段,false 表示空走段。
    // - 失败情况:当边界点不足或内缩后区域过小,返回空列表。
    // - 使用示例:
    //   String boundary = "0,0;20,0;20,15;0,15";
    //   String width = "0.3";
    //   String margin = "0.5";
    //   List<YixinglujingNoObstacle.PathSegment> path =
    //       YixinglujingNoObstacle.planPath(boundary, width, margin);
    public static List<PathSegment> planPath(String coordinates, String widthStr, String marginStr) {
        List<Point> rawPoints = parseCoordinates(coordinates);
        if (rawPoints.size() < 3) return new ArrayList<>();