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.addPoint(0, 0); double l = drawArrowHead_length*size; arrowHead.addPoint(-size, -l); arrowHead.addPoint(size, -l); new AffineTransform tx; double angle = Math.atan2(y2-y1, x2-x1); tx.translate(x2, y2); tx.rotate(angle-Math.PI/2d); AffineTransform old = g.getTransform(); g.setTransform(tx); g.fill(arrowHead); g.setTransform(old); }