Это все решается через вектора:
Из первого отрезка получаем единичный вектор, отняв от второй точки отрезка (EndPoint) первую точку (StartPoint) и вызвав метод GetNomal()
Из второй точки, указанной пользователем, получаем еще одну точку: pt + normalVector * length, где length - нужная длина отрезка
Строим второй отрезок по указанной и полученной точкам
Как два пальца