Continuous script

Speed

Intersection

$\textsf{\LARGE A}$

$\textsf{\LARGE P}$

It seems that P is a point on the circle, but it is actually a free point.
Pull him. The slider script, which is updated at each step, is:      SetValue(P, P + u)
where   u = A - P + 4 UnitVector(P - A)

We can add a coefficient to control the speed:    SetValue(P, P + k u)

If we add another vector, P will head towards the nearest intersection, 
even if there is no intersection!

$\textsf{\LARGE B}$

Equilateral pentagon

Doing the same with 5 points and 5 vectors, voilà!
We can now maintain the equidistance at more than four points.

op1 = true
op2 = false
op3 = false
A = (0.1636363636363595, 1.150909090909092)
P = (3.7582041750100603, 2.905640480448837)
anima = 0.06 (slider from 0 to 1, step 0.01)
k = 1 (slider from 0.1 to 1.2, step 0.1)
B: (4.58, -1.54)
r2: 2
r1 = 4
k' = 0
d = Circle(B, r2)
c = Circle(A, r1)
op4 = false
P1 = (2.4148032098752727, 0.35384868225408006)
P2 = (-1.8707347168201292, 2.9295359068322595)
P3 = (3.0301130405553707, 1.9387325665938824)
P4 = (-1.6905767259814657, 0.2909801191326764)
P5 = (0.29230459073908666, 4.880989017141544)
v12: Vector[P1, P2] - (r1 * UnitVector[P2 - P1])
v23: Vector[P2, P3] - (r1 * UnitVector[P3 - P2])
v34: Vector[P3, P4] - (r1 * UnitVector[P4 - P3])
v45: Vector[P4, P5] - (r1 * UnitVector[P5 - P4])
v51: Vector[P5, P1] - (r1 * UnitVector[P1 - P5])
s12 = Segment(P1, P2)
s23 = Segment(P2, P3)
s34 = Segment(P3, P4)
s45 = Segment(P4, P5)
s51 = Segment(P5, P1)
u: A - P + (r1 * UnitVector[P - A])
v: B - P + (r2 * UnitVector[P - B])
texto5: "Lengths:
" + s12 + "
" + s23 + "
" + s34 + "
" + s45 + "
" + s51 + ""