Drawing an arrow between two 'shapes' by finding the intersection points along path.
Note that this technique may 'fail' if another 'shape' overlaps the start or end shapes along the path.
Written to support this Stack Overflow answer. Copyright ©2011 Gavin Kistner.