Microsoft Small Basic

Program Listing: SPC794

'bron: https://nl.wikipedia.org/wiki/Afstand

x0=30
y0=150
x1=180
y1=20
GraphicsWindow.DrawLine(x0,y0,x1,y1)
GraphicsWindow.MouseMove = OnMouseMove

Sub OnMouseMove
GraphicsWindow.Clear()
GraphicsWindow.DrawLine(x0,y0,x1,y1)

xp=graphicswindow.MouseX
yp=graphicswindow.MouseY

dx=x1-x0
dy=y1-y0

lp=(dx*(xp-x0)+dy*(yp-y0))/(dx*dx+dy*dy)

L=xp-x0-lp*dx
R=yp-y0-lp*dy
d=math.SquareRoot(L*L+R*R)

If (lp>=0) And (lp<=1) then
GraphicsWindow.DrawLine(xp,yp,x0+lp*dx,y0+lp*dy)
EndIf

GraphicsWindow.Title = d
EndSub