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()); }
private VisDataImpl() { double nodeOffset = context.qsimConfig.getNodeOffset(); if (nodeOffset != 0.0) { nodeOffset = nodeOffset +2.0; // +2.0: eventually we need a bit space for the signal visModelBuilder = new VisLaneModelBuilder(); CoordinateTransformation transformation = new IdentityTransformation(); visLink = visModelBuilder.createVisLinkLanes(transformation, QLinkImpl.this, nodeOffset, null); visModelBuilder.recalculatePositions(visLink, context.linkWidthCalculator); } }
@Override public void readConstData(ByteBuffer in) throws IOException { int noLinks = in.getInt(); for (int i = 0; i < noLinks; i++){ //read link data VisLinkWLanes lanesLinkData = (VisLinkWLanes) ByteBufferUtils.getObject(in); this.drawer.addLaneLinkData(lanesLinkData); } this.laneModelBuilder.connect(this.drawer.getLanesLinkData()); }
Point2D.Double linkStartCenter = this.calculatePointOnLink(linkData, 0.0, 0.5); linkData.setLinkStartCenterPoint(linkStartCenter); if (linkData.getLaneData() == null || linkData.getLaneData().isEmpty()){ Point2D.Double laneStart = calculatePointOnLink(linkData, lane.getStartPosition(), horizontalFraction); Point2D.Double laneEnd = calculatePointOnLink(linkData, lane.getEndPosition(), horizontalFraction); lane.setStartEndPoint(laneStart, laneEnd); 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();
@Override public void writeConstData(ByteBuffer out) throws IOException { //write the data for the links out.putInt(this.network.getVisLinks().size()); for (VisLink visLink : this.network.getVisLinks().values()) { LanesToLinkAssignment l2l = null; if (this.lanes != null){ l2l = this.lanes.getLanesToLinkAssignments().get(visLink.getLink().getId()); } List<ModelLane> la = null; if (l2l != null) { la = LanesUtils.createLanes(visLink.getLink(), l2l); } VisLinkWLanes otfLink = this.laneModelBuilder.createVisLinkLanes(OTFServerQuadTree.getOTFTransformation(), visLink, config.qsim().getNodeOffset(), la); //write link data ByteBufferUtils.putObject(out, otfLink); } }
private void recalculatePositions() { SnapshotLinkWidthCalculator linkWidthCalculator = new SnapshotLinkWidthCalculator(); linkWidthCalculator.setLaneWidth(OTFClientControl.getInstance().getOTFVisConfig().getEffectiveLaneWidth()); linkWidthCalculator.setLinkWidthForVis(OTFClientControl.getInstance().getOTFVisConfig().getLinkWidth()); for (VisLinkWLanes linkData : this.lanesLinkData.values()){ this.laneModelBuilder.recalculatePositions(linkData, linkWidthCalculator); } }
double euclideanLinkLength = this.calculateEuclideanLinkLength(deltaLink); int maxAlignment = 0; for (ModelLane lane : lanes){ VisLane visLane = this.createVisLane(lane, link.getLink().getLength(), linkScale, linkLengthCorrectionFactor); lanesLinkData.addLaneData(visLane); if (visLane.getAlignment() > maxAlignment) {
VisDataImpl() { double nodeOffset = context.qsimConfig.getNodeOffset(); if (nodeOffset != 0.0) { nodeOffset = nodeOffset + 2.0; // +2.0: eventually we need a bit space for the // signal visModelBuilder = new VisLaneModelBuilder(); CoordinateTransformation transformation = new IdentityTransformation(); visLink = visModelBuilder.createVisLinkLanes(transformation, QLinkLanesImpl.this, nodeOffset, lanes); visModelBuilder.recalculatePositions(visLink, context.linkWidthCalculator); } }
private void drawSignals(GL2 gl, Map<String, VisSignal> signals, Point2D.Double point, Point2D.Double ortho, List<VisLinkWLanes> toLinks){ double dist = signals.size() - 1; Point2D.Double startPoint = this.laneModelBuilder.calcPoint(point, ortho, (quadSizeLinkEnd * -dist)); int i = 0; for (VisSignal signal : signals.values()){ this.drawToLinks(gl, startPoint, toLinks); startPoint = this.laneModelBuilder.calcPoint(point, ortho, (quadSizeLinkEnd * i));