コード例 #1
0
  public QSimDensityDrawer(Scenario sc) {
    for (Link l : sc.getNetwork().getLinks().values()) {
      if (l.getId().toString().contains("jps")
          || l.getId().toString().contains("el")
          || l.getAllowedModes().contains("walk2d")
          || l.getCapacity() >= 100000
          || l.getFreespeed() > 100
          || l.getId().toString().contains("el")) {
        continue;
      }

      float width = (float) (l.getCapacity() / sc.getNetwork().getCapacityPeriod() / 1.3);

      boolean isCar = false;
      if (l.getFreespeed() > 1.35) {
        width = (float) (l.getNumberOfLanes() * 3.5);
        isCar = true;
      } else {
        width = (float) (width);
      }

      double dx = l.getToNode().getCoord().getX() - l.getFromNode().getCoord().getX();
      double dy = l.getToNode().getCoord().getY() - l.getFromNode().getCoord().getY();
      double length = Math.sqrt(dx * dx + dy * dy);
      dx /= length;
      dy /= length;
      LinkInfo info = new LinkInfo();

      info.id = l.getId();
      info.cap =
          (l.getLength() / ((NetworkImpl) sc.getNetwork()).getEffectiveCellSize())
              * l.getNumberOfLanes();

      double x0 = l.getFromNode().getCoord().getX();
      double y0 = l.getFromNode().getCoord().getY();

      double x1 = l.getToNode().getCoord().getX();
      double y1 = l.getToNode().getCoord().getY();

      x0 += dy * width / 2;
      x1 += dy * width / 2;
      y0 -= dx * width / 2;
      y1 -= dx * width / 2;

      info.width = width;
      info.x0 = x0;
      info.x1 = x1;
      info.y0 = y0;
      info.y1 = y1;

      double tan = dx / dy;
      double atan = Math.atan(tan);
      if (atan > 0) {
        atan -= Math.PI / 2;
      } else {
        atan += Math.PI / 2;
      }

      double offsetX = dy * .075;
      double offsetY = -dx * .075;
      if (dx > 0) {
        offsetX *= -1;
        offsetY *= -1;
      }

      info.tx = (x0 + x1) / 2 + offsetX;
      info.ty = (y0 + y1) / 2 + offsetY;
      info.text = "0";
      info.atan = atan;
      info.isCar = isCar;
      if (isCar) {
        info.cap = l.getLength() / 7.5 * l.getNumberOfLanes();
      }

      this.links.add(info);
      this.map.put(l.getId(), info);
    }
  }
コード例 #2
0
ファイル: CASimVisClient.java プロジェクト: sebhoerl/matsim
  private void loadScenario(Scenario scRsp) {
    Map<String, Node> nodes = new HashMap<>();
    for (Node n : scRsp.getNet().getNodesList()) {
      nodes.put(n.getId(), n);
    }
    Set<String> handled = new HashSet<>();
    for (Link l : scRsp.getNet().getLinksList()) {

      Node from = nodes.get(l.getFromNodeId());
      Node to = nodes.get(l.getToNodeId());
      StringBuffer b1 = new StringBuffer();
      StringBuffer b2 = new StringBuffer();
      b1.append(from.getId());
      b1.append('_');
      b1.append(to.getId());
      String id = b1.toString();
      b2.append(to.getId());
      b2.append('_');
      b2.append(from.getId());
      String refId = b2.toString();

      LinkInfo i = new LinkInfo();
      i.x0 = from.getX();
      i.y0 = from.getY();
      i.x1 = to.getX();
      i.y1 = to.getY();
      i.width = l.getCapacity() * 3;
      // LinkInfoPoly p = new LinkInfoPoly();
      // double dx = (to.getX() - from.getX());
      // double dy = (to.getY() - from.getY());
      // double length = Math.sqrt(dx * dx + dy * dy);
      // dx /= length;
      // dy /= length;
      // double x0 = from.getX() - dy * l.getCapacity() / 2;
      // double y0 = from.getY() + dx * l.getCapacity() / 2;
      // double x1 = from.getX() + dy * l.getCapacity() / 2;
      // double y1 = from.getY() - dx * l.getCapacity() / 2;
      // double x2 = to.getX() + dy * l.getCapacity() / 2;
      // double y2 = to.getY() - dx * l.getCapacity() / 2;
      // double x3 = to.getX() - dy * l.getCapacity() / 2;
      // double y3 = to.getY() + dx * l.getCapacity() / 2;
      // p.x = new double[] { x0, x1, x2, x3, x0 };
      // p.y = new double[] { y0, y1, y2, y3, y0 };
      //
      double area = l.getLength() * l.getCapacity();
      i.area = area;
      //
      // this.linkPolys.put(l.getId(), p);
      this.linkInfos.put(l.getId(), i);
      if (handled.contains(refId)) {
        continue;
      }
      handled.add(id);

      this.drawer.addLineStatic(
          from.getX(),
          from.getY(),
          to.getX(),
          to.getY(),
          192,
          192,
          192,
          255,
          0,
          3 * l.getCapacity());
    }
  }