Ok, here is a small utility function that I named shortenedArrows
Clear[ shortenedArrow];
shortenedArrow[ {p1_, p2_}, {s1_, s2_}] := Module[ {v, a, b},
v = p2 - p1;
a = p1 + s1 v;
b = p1 + (1 - s2) v;
Return[ Arrow[{a, b}]]
];
shortenedArrow[ {p1_, p2_}, s_: 0.05] :=
shortenedArrow[ {p1, p2}, {s, s}];
The function can be used like Arrow
but accepts an (optional) additional parameter that indicates by what fraction the arrow should be hemmed in. If the optional parameter is a list, it gives the fractional shortening at the beginning and the end of the arrow.
The two graphs above are created via
Function[{p1, p2},
Graphics[{Dashed, Red, Disk[#, 0.1] & /@ {p1, p2}, Black,
shortenedArrow[{p1, p2}, 0.0] }]][ {0, 0}, {1, 1}]
and
Function[{p1, p2},
Graphics[{Dashed, Red, Disk[#, 0.1] & /@ {p1, p2}, Black,
shortenedArrow[{p1, p2}, 0.1] }]][ {0, 0}, {1, 1}]
respectively.