F

B

E

E'

E'

E'

M

G

F

B

L

E

H

M

Línea de horizonte

Cambio de plano

DC=CF

C = Point(xAxis)
f = OrthogonalLine(C, xAxis)
A = Point(Ray[C, Vector[(0, 1)]])
g = OrthogonalLine(A, f)
D = Point(g)
C' = Mirror(C, yAxis)
Cuadrícula = 0.99 (slider from 0 to 3, step 0.01)
F = Point(xAxis)
E_2 = Point(xAxis)
c = Circle(E_2, Cuadrícula)
d = Circle(F, Cuadrícula)
F_2, G = Intersect(c, xAxis)
B, I_2 = Intersect(d, xAxis)
h = OrthogonalLine(E_2, xAxis)
i = OrthogonalLine(F, xAxis)
J = Intersect(c, h, 1)
K = Intersect(d, i, 1)
polígono1, j, k, l, m, L, M_2 = Polygon(G, F_2, 4)
polígono2, n, p, q, r, N, O = Polygon(I_2, B, 4)
s = Line(J, xAxis)
P = Intersect(s, k)
Q = Intersect(s, m)
E = Intersect(s, p)
S = Intersect(s, r)
I = Intersect(i, q)
II = Intersect(h, l)
t = Segment(E_2, II)
a = Segment(P, Q)
b = Segment(E, S)
e = Segment(I, F)
E', W = PierodelaFrancesca(xAxis, C', C, A, D, E)
Z, A_1 = PierodelaFrancesca(xAxis, C', C, A, D, N)
B_1, C_1 = PierodelaFrancesca(xAxis, C', C, A, D, I)
D_1, E_1 = PierodelaFrancesca(xAxis, C', C, A, D, K)
F_1, G_1 = PierodelaFrancesca(xAxis, C', C, A, D, O)
H_1, I_1 = PierodelaFrancesca(xAxis, C', C, A, D, S)
J_1, K_1 = PierodelaFrancesca(xAxis, C', C, A, D, P)
L_1, M_1 = PierodelaFrancesca(xAxis, C', C, A, D, J)
N_1, O_1 = PierodelaFrancesca(xAxis, C', C, A, D, Q)
P_1, Q_1 = PierodelaFrancesca(xAxis, C', C, A, D, L)
R_1, S_1 = PierodelaFrancesca(xAxis, C', C, A, D, II)
T_1, U_1 = PierodelaFrancesca(xAxis, C', C, A, D, M_2)
polígono3, f_1, g_1, t_1, p_1 = Polygon(F_2, G, T_1, P_1)
polígono4, h_1, i_1, f_2, z_1 = Polygon(B, I_2, F_1, Z)
j_1 = Segment(J_1, N_1)
k_1 = Segment(E_2, R_1)
l_1 = Segment(F, B_1)
m_1 = Segment(E', H_1)
s_1 = Segment(D, A)
a_1 = Segment(A, C)
polígono5, f_3, q_2, u_1, g_2 = Polygon(F_2, Q_1, U_1, G)
polígono6, b_1, a_2, g_3, i_2 = Polygon(B, A_1, G_1, I_2)
c_1 = Segment(K_1, O_1)
d_1 = Segment(E_2, S_1)
e_1 = Segment(F, C_1)
h_2 = Segment(I_1, W)
c_2 = Circle(C, Segment[D, A])
D' = Intersect(c_2, Ray[C, A])
j_2 = Segment(C, D')
k_2 = Segment(E, D')
l_2 = Segment(D', P)
H = Intersect(l_2, xAxis)
M = Intersect(k_2, xAxis)
R = Intersect(c_2, xAxis, 1)
q_1 = Circle(R, Cuadrícula)
T = Intersect(q_1, xAxis, 1)
R' = Mirror(R, T)
polígono7, n_1, r_1, m_2, n_2, U, V = Polygon(R, R', 4)
V_1 = Midpoint(U, V)
W_1 = Midpoint(V, R)
Z_1 = Midpoint(R', U)
A_2 = Midpoint(Z_1, W_1)
p_2 = Segment(Z_1, W_1)
r_2 = Segment(T, V_1)
s_2 = Segment(U, D')
t_2 = Segment(Z_1, D')
B_2 = Intersect(xAxis, t_2)
o = false
u = false
v = false
b_2 = Segment(C', C)
d_2 = Segment(C, F)
e_2 = Segment(C, E_2)

Tool: Piero de la Francesca (command PierodelaFrancesca)
Input: xAxis, B, C, A, O, D
Output: K, Q

f = Line(A, xAxis)
i = Segment(O, C)
polígono1, j, k, l, m, E, F = Polygon(C, B, 4)
p = Line(D, xAxis)
n = Line(E, C)
G = Intersect(p, n)
q = OrthogonalLine(G, xAxis)
r = OrthogonalLine(D, xAxis)
H = Intersect(q, xAxis)
I = Intersect(r, xAxis)
s = Line(A, H)
t = Line(I, A)
J = Intersect(s, i)
a = Line(J, xAxis)
K = Intersect(t, a)
b = Line(B, F)
M = Intersect(p, b)
c = OrthogonalLine(M, xAxis)
N = Intersect(xAxis, c)
d = Line(N, A)
e = Segment(O, B)
P = Intersect(d, e)
f_1 = Line(P, xAxis)
Q = Intersect(t, f_1)