Я бы получил pathIterator из фигуры,
public PathIterator getPathIterator(AffineTransform at)
и из итератора, вызовите
int currentSegment(double[] coords)
, затем, учитывая начальный и конечный pt, вы можете вычислить наклонлиния.
На любом отрезке пути, если у вас есть наклон предыдущего сегмента линии и наклон текущего отрезка линии, вы можете сказать, в каком относительном направлении идти, используя Точечное произведение для определения угла.