private Point2D.Double calculatePointOnLink(final VisLinkWLanes laneLinkData, final double position, final double horizontalFraction) { Point2D.Double lenghtPoint = this.calcPoint(laneLinkData.getLinkStart(), laneLinkData.getNormalizedLinkVector(), position); return this.calcPoint(lenghtPoint, laneLinkData.getLinkOrthogonalVector(), horizontalFraction * laneLinkData.getLinkWidth()); }
@Override public int compare(Lane o1, Lane o2) { if (o1.getStartsAtMeterFromLinkEnd() < o2.getStartsAtMeterFromLinkEnd()) { return -1; } else if (o1.getStartsAtMeterFromLinkEnd() > o2.getStartsAtMeterFromLinkEnd()) { return 1; } else { return 0; } } });
/** * @see LanesFactory#createLane(org.matsim.api.core.v01.Id) */ @Override public Lane createLane(Id<Lane> id) { return new LaneImpl(id); } }
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; }
private void createLanes() { Lanes ld = scenario.getLanes(); LanesFactory f = ld.getFactory(); LanesToLinkAssignment l2l = f.createLanesToLinkAssignment(Id.create(12, Link.class)); ld.addLanesToLinkAssignment(l2l); Lane l = f.createLane(Id.create(121, Lane.class)); l.setStartsAtMeterFromLinkEnd(300); l.addToLaneId(Id.create(122, Lane.class)); l2l.addLane(l); l = f.createLane(Id.create(122, Lane.class)); l.setStartsAtMeterFromLinkEnd(150); l.addToLinkId(Id.create(25, Link.class)); l2l.addLane(l); }
public static void overwriteLaneCapacitiesByNetworkCapacities(Network net, Lanes lanes) { for (LanesToLinkAssignment linkLanes : lanes.getLanesToLinkAssignments().values()) { double linkCap = net.getLinks().get(linkLanes.getLinkId()).getCapacity(); for (Lane lane : linkLanes.getLanes().values()) { lane.setCapacityVehiclesPerHour(linkCap); } } } }
private int getNumberOfExpectedVehiclesOnLane(double now, Id<Link> linkId, Id<Lane> laneId) { if (lanes.getLanesToLinkAssignments().get(linkId).getLanes().size() == 1) { return getNumberOfExpectedVehiclesOnLink(now, linkId); } else { return this.sensorManager.getNumberOfCarsInDistanceOnLane(linkId, laneId, 0., now); } }
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)); }
public LanesReader(Scenario scenario) { this.lanes = scenario.getLanes(); this.factory = lanes.getFactory(); }
@Override public void addLanesToLinkAssignment(LanesToLinkAssignment assignment) { this.lanesToLinkAssignments.put(assignment.getLinkId(), assignment); }
@Override public void addLane(Lane lane) { this.lanes.put(lane.getId(), lane); }
/** * @see LanesFactory#createLanesToLinkAssignment(org.matsim.api.core.v01.Id) */ @Override public LanesToLinkAssignment createLanesToLinkAssignment(Id<Link> linkIdReference) { return new LanesToLinkAssignmentImpl(linkIdReference); } /**
public void setLinkStartEndPoint(Double linkStart, Double linkEnd) { this.linkStart = linkStart; this.linkEnd = linkEnd; this.calcCoords(); }
public void setStartEndPoint(Point2D.Double startPoint, Point2D.Double endPoint) { this.startPoint = startPoint; this.endPoint = endPoint; this.calcCoords(); }
@Override public int compare(ModelLane o1, ModelLane o2) { if (o1.getEndsAtMeterFromLinkEnd() < o2.getEndsAtMeterFromLinkEnd()) { return -1; } else if (o1.getEndsAtMeterFromLinkEnd() > o2.getEndsAtMeterFromLinkEnd()) { return 1; } else { return 0; } } });
public static Lanes createLanesContainer(){ return new LanesImpl(); }
public void setState(SignalGroupState state) { for (VisSignal p : this.signalPositions.values()){ p.setState(state); } }
public void addLaneLinkData(VisLinkWLanes laneLinkData){ this.lanesLinkData.put(laneLinkData.getLinkId(), laneLinkData); }
private void calculateEarliestTimeInDistance (double enterTime, double dist, Link link, Lane lane){ this.earliestTimeInDistance = enterTime + ((lane.getStartsAtMeterFromLinkEnd() - dist) / link.getFreespeed(enterTime)); // log.debug("link " + link.getId() + " enterTime: " + enterTime + " earliest time " + this.earliestTimeInDistance + " distance " + d); }
public CarLocator( Lane lane, Link link, double enterTime, double distance){ double dist = this.checkDistance(lane.getStartsAtMeterFromLinkEnd(), distance); this.calculateEarliestTimeInDistance(enterTime, dist, link, lane); }