public void connect(Map<String, VisLinkWLanes> otfNetwork){ for (VisLinkWLanes otfLink : otfNetwork.values()){ if (otfLink.getLaneData() == null || otfLink.getLaneData().isEmpty()){ if (otfLink.getToLinkIds() != null){ for (String toLinkId : otfLink.getToLinkIds()){ VisLinkWLanes toLink = otfNetwork.get(toLinkId); otfLink.addToLink(toLink); } } } else { for (VisLane otfLane : otfLink.getLaneData().values()){ if (otfLane.getToLinkIds() != null) { for (String toLinkId : otfLane.getToLinkIds()){ VisLinkWLanes toLink = otfNetwork.get(toLinkId); otfLane.addToLink(toLink); } } } } } }
private void drawLink(GL2 gl, VisLinkWLanes link){ //draw a rect around linkStart this.setColor(gl, Color.LANECOLOR); this.drawQuad(gl, link.getLinkStartCenterPoint(), quadSizeLinkStart); if (link.getLaneData() != null) { //draw the lanes for (VisLane ld : link.getLaneData().values()){ this.drawLane(gl, ld, link); } } else { //draw the link this.drawVertex(gl, link.getLinkStartCenterPoint(), link.getLinkEndCenterPoint(), (float) (link.getNumberOfLanes() * 2)); } }
for (int l = 0; l < noLanes; l++){ String laneId = ByteBufferUtils.getString(in); VisLane laneData = link.getLaneData().get(laneId); laneData.addSignal(signal);
@Override public Collection<AgentSnapshotInfo> addAgentSnapshotInfo( final Collection<AgentSnapshotInfo> positions) { double now = context.getSimTimer().getTimeOfDay() ; if (visLink != null) { for (QLaneI ql : QLinkLanesImpl.this.laneQueues.values()) { VisLane otfLane = visLink.getLaneData().get( ql.getId().toString()); ((QueueWithBuffer.VisDataImpl) ql.getVisData()).setVisInfo( otfLane.getStartCoord(), otfLane.getEndCoord()); } } for (QLaneI road : QLinkLanesImpl.this.getQueueLanes().values()) { road.getVisData().addAgentSnapshotInfo(positions, now); } int cnt2 = 10; // treat vehicles from transit stops cnt2 = context.snapshotInfoBuilder.positionVehiclesFromTransitStop(positions, getLink(), getTransitQLink().getTransitVehicleStopQueue(), cnt2); // treat vehicles from waiting list: context.snapshotInfoBuilder.positionVehiclesFromWaitingList(positions, QLinkLanesImpl.this.getLink(), cnt2, QLinkLanesImpl.this.getWaitingList()); cnt2 = QLinkLanesImpl.this.getWaitingList().size(); context.snapshotInfoBuilder.positionAgentsInActivities(positions, QLinkLanesImpl.this.getLink(), QLinkLanesImpl.this.getAdditionalAgentsOnLink(), cnt2); return positions; } }
Point2D.Double linkStartCenter = this.calculatePointOnLink(linkData, 0.0, 0.5); linkData.setLinkStartCenterPoint(linkStartCenter); if (linkData.getLaneData() == null || linkData.getLaneData().isEmpty()){ double numberOfLinkParts = (2 * linkData.getMaximalAlignment()) + 2; for (VisLane lane : linkData.getLaneData().values()){ double horizontalFraction = 0.5 - (lane.getAlignment() / numberOfLinkParts); Point2D.Double laneStart = calculatePointOnLink(linkData, lane.getStartPosition(), horizontalFraction);
VisLane otfLane = lanesLinkData.getLaneData().get(lane.getLaneData().getId().toString()); if (lane.getToLanes() == null || lane.getToLanes().isEmpty()){ for (Id<Link> id : lane.getLaneData().getToLinkIds()){ VisLane otfToLane = lanesLinkData.getLaneData().get(toLane.getLaneData().getId().toString()); otfLane.addToLane(otfToLane);
private void drawLinkEndsAndSignals(GL2 gl, VisLinkWLanes link) { if (link.getLaneData() != null) { for (VisLane ld : link.getLaneData().values()){ if (ld.getSignals() != null){ this.drawSignals(gl, ld.getSignals(), ld.getEndPoint(), link.getLinkOrthogonalVector(), ld.getToLinks()); } else { this.setColor(gl, Color.LANECOLOR); this.drawLaneEnd(gl, ld); this.drawToLinks(gl, ld.getEndPoint(), ld.getToLinks()); } } } else { //link end without lanes if (link.getSignals() != null){ this.drawSignals(gl, link.getSignals(), link.getLinkEndCenterPoint(), link.getLinkOrthogonalVector(), link.getToLinks()); } else { this.setColor(gl, Color.LANECOLOR); this.drawQuad(gl, link.getLinkEndCenterPoint(), quadSizeLinkEnd); this.drawToLinks(gl, link.getLinkEndCenterPoint(), link.getToLinks()); } } }