private void drawLane(GL2 gl, VisLane ld, VisLinkWLanes laneLinkData){ //draw lane start this.setColor(gl, Color.LANECOLOR); this.drawQuad(gl, ld.getStartPoint(), quadSizeLaneStart); //draw line between lane start point and lane end point this.drawVertex(gl, ld.getStartPoint(), ld.getEndPoint(), ((float)ld.getNumberOfLanes()* 2)); }
private VisLane createVisLane(ModelLane qlane, double linkLength, double linkScale, double linkLengthCorrectionFactor) { String id = qlane.getLaneData().getId().toString(); double startPosition = (linkLength - qlane.getLaneData().getStartsAtMeterFromLinkEnd()) * linkScale * linkLengthCorrectionFactor; double endPosition = startPosition + (qlane.getLength() * linkScale * linkLengthCorrectionFactor); // log.error("lane " + qlane.getId() + " starts at: " + startPosition + " and ends at : " +endPosition); int alignment = qlane.getLaneData().getAlignment(); VisLane lane = new VisLane(id); lane.setStartPosition(startPosition); lane.setEndPosition(endPosition); lane.setAlignment(alignment); lane.setNumberOfLanes(qlane.getLaneData().getNumberOfRepresentedLanes()); return lane; }
public void setStartEndPoint(Point2D.Double startPoint, Point2D.Double endPoint) { this.startPoint = startPoint; this.endPoint = endPoint; this.calcCoords(); }
double horizontalFraction = 0.5 - (lane.getAlignment() / numberOfLinkParts); Point2D.Double laneStart = calculatePointOnLink(linkData, lane.getStartPosition(), horizontalFraction); Point2D.Double laneEnd = calculatePointOnLink(linkData, lane.getEndPosition(), horizontalFraction); lane.setStartEndPoint(laneStart, laneEnd); if (lane.getNumberOfLanes() >= 2.0){ double noLanesFloor = Math.floor(lane.getNumberOfLanes()); double laneOffset = - noLanesFloor / 2 * linkWidthCalculator.getLaneWidth(); if (noLanesFloor % 2 == 0){ Point2D.Double drivingLaneStart = this.calcPoint(laneStart, linkData.getLinkOrthogonalVector(), laneOffset); Point2D.Double drivingLaneEnd = this.calcPoint(laneEnd, linkData.getLinkOrthogonalVector(), laneOffset); lane.addDrivingLane(i, drivingLaneStart, drivingLaneEnd); laneOffset = laneOffset + linkWidthCalculator.getLaneWidth();
VisLane visLane = this.createVisLane(lane, link.getLink().getLength(), linkScale, linkLengthCorrectionFactor); lanesLinkData.addLaneData(visLane); if (visLane.getAlignment() > maxAlignment) { maxAlignment = visLane.getAlignment(); if (lane.getToLanes() == null || lane.getToLanes().isEmpty()){ for (Id<Link> id : lane.getLaneData().getToLinkIds()){ otfLane.addToLinkId(id.toString()); for (ModelLane toLane : lane.getToLanes()){ VisLane otfToLane = lanesLinkData.getLaneData().get(toLane.getLaneData().getId().toString()); otfLane.addToLane(otfToLane);
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); } } } } } }
@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; } }
String laneId = ByteBufferUtils.getString(in); VisLane laneData = link.getLaneData().get(laneId); laneData.addSignal(signal);