A = Intersect(yAxis, xAxis)
B = Point(xAxis)
poli1, f, g, h, i, C, D = Polygon(A, B, 4)
E = Midpoint(A, C)
F: (x(E), y(E), (sqrt(2) / 2 * f))
a, facciaABF, facciaBCF, facciaCDF, facciaADF, spigoloAF, spigoloBF, spigoloCF, spigoloDF = Pyramid(poli1, F)
G: (x(F), y(F), (-z(F)))
b, facciaABG, facciaBCG, facciaCDG, facciaADG, spigoloAG, spigoloBG, spigoloCG, spigoloDG = Pyramid(poli1, G)
j = Segment(F, E)
H = Point(j)
p = Plane(H, xOyPlane)
H' = Mirror(H, xOyPlane)
poli2, I, J, K, L, k, l, m, n = IntersectPath(p, a)
M = Midpoint(k)
q = Segment(H, M)
c, d, e, o = Cylinder(H', H, q)
p' = Mirror(p, xOyPlane)
poli3, N, O, P, Q, r, s, t, f_1 = IntersectPath(p', b)
R = Midpoint(l)
S = Midpoint(m)
T = Midpoint(n)
U = Midpoint(s)
V = Midpoint(t)
W = Midpoint(f_1)
Z = Midpoint(r)