private void removeForbiddenSegment()

in diagram/src/main/java/jetbrains/jetpad/projectional/diagram/algorithm/orthogonal/OrthogonalRouteWithObstacles.java [178:206]


  private void removeForbiddenSegment(Segment fs) {
    for (MyLine line: mySegmentsMap.keySet()) {
      if (isVertical(fs) && line.ver && fitsMinDist(fs.start.x, line.coord)) {
        List<Segment> newSegments = new ArrayList<>();
        for (Segment s: mySegmentsMap.get(line)) {
          Vector vs = getYVector(s);
          ArrayList<Vector> list = new ArrayList<>();
          list.add(vs);
          Vector vfs = getYVector(fs);
          for (Vector v: FreeSegmentsUtil.removeSegment(list, vfs)) {
            newSegments.add(new Segment(new Vector(s.start.x, v.x), new Vector(s.start.x, v.y)));
          }
        }
        mySegmentsMap.put(line, newSegments);
      } else if (!isVertical(fs) && !line.ver && fitsMinDist(fs.start.y, line.coord)) {
        List<Segment> newSegments = new ArrayList<>();
        for (Segment s: mySegmentsMap.get(line)) {
          Vector vs = getXVector(s);
          ArrayList<Vector> list = new ArrayList<>();
          list.add(vs);
          Vector vfs = getXVector(fs);
          for (Vector v: FreeSegmentsUtil.removeSegment(list, vfs)) {
            newSegments.add(new Segment(new Vector(v.x, s.start.y), new Vector(v.y, s.start.y)));
          }
        }
        mySegmentsMap.put(line, newSegments);
      }
    }
  }