Author: Daniel Mentrard

Pirámide
       +
Prisma recto

   Cono
       +
 Cilindro

Separación

H1 = (1.5, -1)
B_1 = (-3.0725855050948954, -0.001459721801344921)
Vistas = (0.10813911099457343, 0.31298453682346955)
ya: y(Vistas)
costheta: cos(ya)
Zoom = 1 (slider from 0.1 to 5, step 0.1)
Z: (x(B_1) + 0.0, y(B_1) + Zoom * costheta)
w = Vector(B_1, Z)
e = 0 (slider from 0 to 0.6, step 0.1)
C2 = (-1.1133558936633596, -0.9568865076228966)
xa: x(Vistas)
sinphi: sin(xa)
cosphi: cos(xa)
sintheta: sin(ya)
xy: -(Zoom) * cosphi * sintheta
g = 0.6000000000000005 (slider from -5 to 5, step 0.1)
X: (x(B_1) + Zoom * sinphi, y(B_1) + xy)
u = Vector(B_1, X)
Altura = 1.4000000000000004 (slider from -5 to 5, step 0.1)
a = OrthogonalLine(Vistas, yAxis)
b = OrthogonalLine(Vistas, xAxis)
c: cos(ya)
Y: (x(B_1) + Zoom * cosphi, y(B_1) + Zoom * sinphi * sintheta)
v = Vector(B_1, Y)
O = Translate(H1, Vector[(e + Altura) * w])
A = Translate(O, Vector[g * u])
B = Translate(O, Vector[g * v])
e_2 = Segment(O, B)
D = Mirror(B, O)
E = Mirror(A, O)
h = Segment(D, O)
i = Segment(E, O)
C = Translate(O, Vector[Altura * w])
F = Midpoint(B, A)
G = Midpoint(B, F)
H = Midpoint(O, G)
I = Midpoint(H, G)
J = Mirror(I, G)
f = Conic(A, J, B, E, D)
j = Segment(C, A)
l = Segment(C, B)
m = Segment(C, E)
n = Segment(C, D)
p = Line(F, O)
K = Midpoint(B, E)
q = Line(K, O)
L, M = Intersect(f, p)
N, P = Intersect(f, q)
r = Segment(C, N)
s = Segment(C, L)
t = Segment(C, P)
a1 = Segment(C, M)
b1 = Segment(C, O)
Q = Translate(C2, Vector[(e + Altura) * w])
R = Translate(Q, Vector[0.8 * v])
S = Translate(Q, Vector[0.8 * u])
T = Mirror(R, Q)
U = Mirror(S, Q)
V = Translate(Q, Vector[Altura * w])
W = Midpoint(R, S)
A1 = Midpoint(U, T)
B1 = Midpoint(U, A1)
C1 = Midpoint(W, R)
D1 = Midpoint(B1, U)
E1 = Midpoint(C1, R)
F1 = Mirror(D1, A1)
G1 = Mirror(E1, W)
poly1, d1, e1, g1, f1 = Polygon(D1, E1, G1, F1)
c1 = Segment(V, E1)
h1 = Segment(V, G1)
i1 = Segment(V, D1)
j1 = Segment(V, F1)
k1 = Segment(V, Q)
z = Vector(O, H1)
p1 = Translate(f, z)
I1 = Translate(C, z)
u1 = Vector(H1, I1)
q1 = Translate(p1, u1)
J1 = Translate(D, z)
K1 = Translate(N, z)
M1 = Translate(A, z)
N1 = Translate(M, z)
O1 = Translate(L, z)
P1 = Translate(E, z)
Q1 = Translate(P, z)
R1 = Translate(B, z)
S1 = Translate(J1, u1)
T1 = Translate(K1, u1)
U1 = Translate(M1, u1)
V1 = Translate(N1, u1)
W1 = Translate(R1, u1)
Z1 = Translate(Q1, u1)
A2 = Translate(O1, u1)
B2 = Translate(P1, u1)
l1 = Segment(S1, J1)
m1 = Segment(T1, K1)
n1 = Segment(U1, M1)
r1 = Segment(V1, N1)
s1 = Segment(W1, R1)
t1 = Segment(Z1, Q1)
a2 = Segment(B2, P1)
b2 = Segment(A2, O1)
v1 = Vector(Q, C2)
D1' = Translate(D1, v1)
E1' = Translate(E1, v1)
G1' = Translate(G1, v1)
F1' = Translate(F1, v1)
poly1', d1', e1', g1', f1' = Polygon(D1', E1', G1', F1')
D2 = Translate(V, z)
w1 = Vector(C2, D2)
D1'' = Translate(D1', w1)
E1'' = Translate(E1', w1)
G1'' = Translate(G1', w1)
F1'' = Translate(F1', w1)
poly1'', d1'', e1'', g1'', f1'' = Polygon(D1'', E1'', G1'', F1'')
c2 = Segment(F1'', F1')
e2 = Segment(E1'', E1')
f2 = Segment(D1'', D1')
g2 = Segment(I1, H1)
d2 = Segment(G1'', G1')
k2 = Conic(M, B, P, E, D)
p2 = Conic(N1, R1, P1, J1, M1)
q2 = Conic(B2, W1, V1, T1, S1)
I2 = Midpoint(b1)
poly2, e1_1, v_1, g1_1 = Polygon(V, G1, E1)
poly3, g1_2, v_2, f1_1 = Polygon(V, F1, G1)
poly4, d1_1, v_3, f1_2 = Polygon(V, F1, D1)
poly5, d1_2, v_4, e1_2 = Polygon(V, E1, D1)
poly6, a_1, c_1, n_1 = Polygon(C, N, A)
poly7, l_1, c_2, a_2 = Polygon(C, A, L)
poly8, c_3, l_2, j_1, b_1 = Polygon(C, L, J, B)
poly9, d, c_4, n_2 = Polygon(C, N, D)
poly10, m_1, c_5, d_1 = Polygon(C, D, M)
poly11, e_1, c_6, m_2 = Polygon(C, M, E)
poly12, p_1, c_7, e_3 = Polygon(C, E, P)
L1 = Midpoint(g1')
E2 = Center(p2)
F2 = Midpoint(K1, M1)
h2 = Line(H1, F2)
r2 = Translate(p2, Vector[w / 2.0])
G2, H2 = Intersect(r2, m1)
J2, K2 = Intersect(r2, n1)
poly13, h2_1, k2_1, m1_1, k1_1 = Polygon(H2, K2, M1, K1)
L2 = Midpoint(d2)
M2 = Midpoint(c2)
N2 = Midpoint(L1, F1')
O2 = Midpoint(G1', L1)
P2 = Midpoint(L2, G1')
Q2 = Midpoint(L2, P2)
R2 = Midpoint(M2, F1')
S2 = Midpoint(R2, M2)
i2 = Line(O2, d2)
j2 = Line(N2, c2)
l2 = Line(S2, Q2)
T2 = Intersect(j2, l2)
U2 = Intersect(i2, l2)
poly14, t2, u2, o2, n2 = Polygon(T2, U2, O2, N2)