static int drawArrowBetweenPoints_width = 4; static double drawArrowBetweenPoints_headScale = 2; static void drawArrowBetweenPoints(Graphics2D g, Pt p1, Pt p2, Color color) { int x1 = p1.x, y1 = p1.y, x2 = p2.x, y2 = p2.y; double dist = pointDistance(x1, y1, x2, y2); double headSize = drawArrowBetweenPoints_width*drawArrowBetweenPoints_headScale*drawArrowHead_length+2; // 2 = gap DoublePt v = blendDoublePts(new DoublePt(x2, y2), new DoublePt(x1, y1), headSize/dist); DoublePt p = blendDoublePts(new DoublePt(x2, y2), new DoublePt(x1, y1), 0); g.setColor(color); g.setStroke(new BasicStroke(drawArrowBetweenPoints_width)); g.draw(new Line2D.Double(x1, y1, v.x, v.y)); drawArrowHead(g, x1, y1, p.x, p.y, drawArrowBetweenPoints_width*drawArrowBetweenPoints_headScale); }