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); } }
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()); } }