import java.awt.geom.*; static float drawArrowHead_length = 2f; static void drawArrowHead(Graphics2D g, double x1, double y1, double x2, double y2, double size) { if (y2 == y1 && x2 == x1) ret; Path2D.Double arrowHead = new Path2D.Double(); arrowHead.moveTo(0, 0); double l = drawArrowHead_length*size; arrowHead.lineTo(-size, -l); arrowHead.lineTo(size, -l); arrowHead.closePath(); new AffineTransform tx; double angle = Math.atan2(y2-y1, x2-x1); tx.translate(x2, y2); tx.rotate(angle-Math.PI/2); AffineTransform old = g.getTransform(); g.transform(tx); g.fill(arrowHead); g.setTransform(old); }