Demo: constrain a Segment to 15° intervals
C = DynamicCoordinates(B, x(ClosestPoint(VPoints, B)), y(ClosestPoint(VPoints, B)))
(credit to mathmagic)
A's On Update script
SetCoords(B,x(A)+x(vCopy),y(A)+y(vCopy))
v's On Update Script
SetValue(vCopy,v)