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()); }
if (linkData.getLaneData() == null || linkData.getLaneData().isEmpty()){ double x = linkData.getLinkEnd().x + (0.5 * linkWidth * linkData.getLinkOrthogonalVector().x); double y = linkData.getLinkEnd().y + (0.5 * linkWidth * linkData.getLinkOrthogonalVector().y); linkData.setLinkEndCenterPoint(new Point2D.Double(x, y)); 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();
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()); } } }