OH : AH = OK : BK      ↔     OH · BK = OK · AH 
  muovi il punto rosso lungo il tragitto rosso

O = Intersect(xAxis, yAxis)
A = (4.12, 1.62)
a = Ray(O, A)
B = Point(a)
b = OrthogonalLine(A, xAxis)
C = (1, 0)
c = OrthogonalLine(B, xAxis)
d = Ray(O, C)
H = Intersect(b, d)
K = Intersect(c, d)
e = Segment(A, H)
f = Segment(B, K)
g = Line(K, a)
h = Line(O, f)
D = Intersect(h, g)
i = Line(D, d)
E = Intersect(i, b)
F = Intersect(g, b)
j = Segment(O, D)
k = Segment(D, E)
l = Segment(E, H)
m = Line(A, d)
G = Intersect(g, m)
I = Intersect(h, m)
J = Intersect(m, c)
n = Segment(D, G)
p = Segment(I, G)
q = Segment(I, O)
tragitto, r, s, t, a_1, b_1, c_1 = Polygon(E, F, G, J, G, F)
S = Point(tragitto)
u = Vector(E, H)
P = If(y(S) ≟ y(G), Translate[A, Vector[G, S]], If[x(S) ≟ x(E), Translate[S, u], A])
M = If(y(S) ≟ y(G), K, If[x(S) ≟ x(E), D, Translate[D, Vector[F, S]]])
Q = If(y(S) ≟ y(G), O, Translate[M, Vector[S, P]])
parallelogram, l_2, m_1, q_1, p_1 = Polygon(S, M, Q, P)
d_1 = Segment(D, F)
v = Vector(F, G)
w = Vector(G, J)
z = Vector(E, F)