Cylindre de Révolution : De la Perspective au Patron

F = (0.4670882772136576, 0)
D = (1.5707963267948966, 0)
α = 0 rad (slider from 0° to 180°, step 0.01°)
t: 0 + α / (180°)
O = Intersect(xAxis, yAxis)
I = Point(xAxis)
I_1 = Circle(O, I)
E = Intersect(I_1, yAxis, 2)
γ = Angle(D, F, E)
A = Intersect(I_1, xAxis, 2)
B = (3.141592653589793, 0)
C = Midpoint(A, B)
c = CircleArc(C, B, A)
A' = Rotate(A, (-α), C)
β = Angle(A', C, A)
a = LineBisector(A', I)
B' = (-3.141592653589793, 0)
d = CircleArc(F, D, E)
D' = Rotate(D, (γ * (1 - t)), F)
δ = Angle(D, F, D')
b = LineBisector(A', D')
G = Intersect(b, a)
e = CircleArc(G, I, A')
f = CircleArc(G, A', I)
g = CircleArc(O, I, A)
h = Circle(G, I)
ε = Angle(I, G, A')
I' = Rotate(I, (2 * ε), G)
ζ = Angle(I, G, I')
k = CircleArc(G, A', I')
p = CircleArc(G, I', A')
q = CircleArc(O, A, I)
H = (5.28, 0)
i = Segment(I, B)
j = Segment(B, H)
J = (3, 2)
u = Vector(O, J)
e' = Translate(e, u)
k' = Translate(k, u)
r = Translate(I_1, u)
I'' = Translate(I', u)
I'_1 = Translate(I, u)
l = Segment(I', I'')
m = Segment(I, I'_1)
f' = Translate(f, u)
p' = Translate(p, u)
I'_2 = Translate(I, u)
B'_1 = Translate(B, u)
i' = Segment(I'_2, B'_1)
B'_2 = Translate(B, u)
H' = Translate(H, u)
j' = Segment(B'_2, H')
n = Segment(H, H')
s, a_1, b_1 = Tangent(r, g)
K = Intersect(I_1, g, 1)
L = Intersect(I_1, s)
M = Intersect(I_1, a_1)
N = Intersect(r, s)
P = Intersect(r, a_1)
c_1 = Segment(L, N)
d_1 = Segment(M, P)
e_1 = CircleArc(J, P, N)
f_1 = CircleArc(J, N, P)
g_1, i_1, q_1, j_1 = Tangent(k', k)
Q, U = Intersect(k, g_1)
R = Intersect(k', g_1)
h_1 = Segment(Q, R)
k_1, p_1, l_1, n_1 = Tangent(e', e)
S = Intersect(e', k_1)
T, V = Intersect(e, k_1)
m_1 = Segment(T, S)
poly1, i_2, i'_2, h', h_2 = Polygon(I, I'_2, H', H)
r_1 = Circle(O, I)
s_1 = Circle(J, I'_2)