Совсем я тупой. Точка перпендикуляра - это как я понимаю [локально] ближайшая точка сплайна к заданной точке. Т.е. Ваша задача суть найти точку сплайна ближайшую к данной?
Эта задача, в общем, решаться может примерно так: каждый сегмент сплайна отдельно. Сегмент сплайна - это кривая Безье (и мы имеем ее определяющий четырехугольник). Во-первых, большинство из них "хорошие" (то есть, без точек перегиба, петель, остриев, и т.п.). Плохие можно заранее отметить, дабы каждый раз в суете мышинной не проверять. Во вторых, легко построить перпендикуляры к концам (перпендикуляры к соответсвующим отрезкам четырехугольника). Эти перпендикуляры зададут "веер". Если точка находиться вне этого веера, то перпендикуляра внутри нет. Это отсекает бОльшую часть сегментов сплайна. Обычно остается два-три, для которых можно искать решение как угодно, например методом Ньютона (Я бы, правда, записал уравнение квадрата расстояния от точки до точки сегмента сплайна, и искал бы нули производной. Всё уравнение пятой степени, а не девятой). "Плохие" сегменты можно нарезать на несколько "хороших" (опять же, в момент редактирования).
Коли именно ближайшая точка интересует, процесс отсечения может быть продолжен (а может быть, с этого следует начинать). А именно, если объемлющий многоугольник одного сегмента лежит дальше, чем объемлющий многоугольник другого, то первый можно не рассматривать. (Правда, тут надо быть аккуратным. Именно многоугольник, а не вершины.)
Когда точка найдена (параметр точки) - остальное дело нехитрой техники. Крошим сегмент на два алгорифмом де Кастельжо, и имеем касательные. Ну а перпендикуляр к прямой - это круто.
Если мутно, скажите, попробую нарисовать... Рисование время жрет, так что если Вам не нжно - лень...