void drawArrow(Point from, Point to, int width, int height) { final double w = vp.get().invScale(width); final double h = vp.get().invScale(height); final Point left = PointUtil.perp(to, from, h, w / 2d); final Point right = PointUtil.perp(to, from, h, -w / 2d); drawLine(from, PointUtil.on(from, to, h)); fillPolygon(left, right, to); }
static Point perp(Connection<?> conn, double distOnLine, double distFromLine) { return PointUtil.perp(conn.from(), conn.to(), distOnLine, distFromLine); }
final Point c1 = PointUtil.perp(p, n, -vehicleLength, -halfRoadWidth); final Point c2 = PointUtil.perp(p, n, -vehicleLength, halfRoadWidth); final Point o1 = PointUtil.perp(p, n, vehicleLength, -halfRoadWidth); final Point o2 = PointUtil.perp(p, n, vehicleLength, halfRoadWidth); adapter.setForegroundSysCol(SWT.COLOR_GRAY); adapter.drawPolyline(o1, c1, c2, o2); break; final Point a = PointUtil.perp(p, n, vehicleLength, -halfRoadWidth); final Point a2 = PointUtil .perp(p, n, vehicleLength + 1, -halfRoadWidth); final Point b = PointUtil.perp(p, it.peek(), vehicleLength, halfRoadWidth); final Point b2 = PointUtil.perp(p, it.peek(), vehicleLength + 1, halfRoadWidth); final Optional<Point> intersect = PointUtil.intersectionPoint(a, a2,
final double length = PointUtil.length(e); final Point a = PointUtil.perp(e, vehicleLength, halfRoadWidth); final Point b = PointUtil.perp(e, length - vehicleLength, halfRoadWidth); adapter.drawLine(a, b); final Point c = PointUtil.perp(e, vehicleLength, -halfRoadWidth); final Point d = PointUtil.perp(e, length - vehicleLength, -halfRoadWidth); adapter.drawLine(c, d);