| | |
| | | * 修复:解决凹多边形扫描线跨越边界的问题,优化路径对齐 |
| | | */ |
| | | 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<>(); |