, (x1, y1), (x2, y2), " " - (a, b).
, , - (x, y).

. , , m1 * m2 = -1 (m1 m2 - ).
, , , - .

, :
- x1 = x2, (x, y) = (x1, b).
- y1 = y2, (x, y) = (a, y1).
Python ( , Python psudo-code):
def get_closest_point( x1,y1, x2,y2, a,b ):
if x1==x2: return (x1,b)
if y1==y2: return (a,y1)
m1 = (y2-y1)/(x2-x1)
m2 = -1/m1
x = (m1*x1-m2*a+b-y1) / (m1-m2)
y = m2*(x-a)+b
return (x,y)