Tassellazione semiregolare del piano usando 2 ottagoni e 1 quadrato per vertice

A = (1.7815458117577454, 5.047043253696415)
B = (2.0598631882884693, 5.329449825020104)
poly7, b_1, c_1, d_1, g_1, M, N = Polygon(A, B, 4)
poly1, m, b, c, d, e, f, g, h, C, D, E, F, G, H = Polygon(M, B, 8)
poly2, a, i, j, k, l, n, o, p, I, J, K, L, O, P = Polygon(B, A, 8)
poly3, q, r, s, t, a_1, e_1, u, v, Q, R, S, T, U, V = Polygon(A, N, 8)
poly4, f_1, h_1, w, z, k_1, l_1, m_1, n_1, W, Z, A_1, B_1, C_1, D_1 = Polygon(N, M, 8)
N' = Mirror(N, l_1)
M' = Mirror(M, l_1)
W' = Mirror(W, l_1)
Z' = Mirror(Z, l_1)
E_1 = Mirror(A_1, l_1)
F_1 = Mirror(B_1, l_1)
G_1 = Mirror(C_1, l_1)
H_1 = Mirror(D_1, l_1)
poly4', n', m', w', z', e_2, f_2, g_2, h_2 = Polygon(N', M', W', Z', E_1, F_1, G_1, H_1)
A' = Mirror(A, t)
N'_1 = Mirror(N, t)
Q' = Mirror(Q, t)
R' = Mirror(R, t)
S' = Mirror(S, t)
T' = Mirror(T, t)
U' = Mirror(U, t)
V' = Mirror(V, t)
poly3', a', n'_1, q', r', s', t', u', v' = Polygon(A', N'_1, Q', R', S', T', U', V')
B' = Mirror(B, n)
A'_1 = Mirror(A, n)
I' = Mirror(I, n)
J' = Mirror(J, n)
K' = Mirror(K, n)
L' = Mirror(L, n)
O' = Mirror(O, n)
P' = Mirror(P, n)
poly2', b', a'_1, i', j', k', l', o', p' = Polygon(B', A'_1, I', J', K', L', O', P')
M'_1 = Mirror(M, d)
B'_1 = Mirror(B, d)
C' = Mirror(C, d)
D' = Mirror(D, d)
E' = Mirror(E, d)
F' = Mirror(F, d)
G' = Mirror(G, d)
H' = Mirror(H, d)
poly1', m'_1, b'_1, c', d', e', f', g', h' = Polygon(M'_1, B'_1, C', D', E', F', G', H')
poly5, c_2, q_1, r_1, h_3 = Polygon(C_1, Q, R, H_1)
poly6, c_3, d_2, p'_1, o_1 = Polygon(C, D, P', O)
α = Angle(H, M, N)
β = Angle(N, M, B)
γ = Angle(B, M, H)

Tool: Circocerchio
Clicca sul triangolo
Input: poly1
Output: p, T

A = (-4.221655823828217, 0.2573952157720354)
B = (-6.409212927818962, -0.8940157728338809)
C = (-5.616576067409749, -3.37139259388696)
poly1, c, a, b = Polygon(A, B, C)
j = LineBisector(a)
l = LineBisector(c)
T = Intersect(j, l)
p = Circle(T, B)

Tool: Circonferenza inscrita (command Circonferenzainscrita)
Clicca sui vertici del triangolo
Input: N, P, Q
Output: c_1, R

poly2, q_1, n_1, p_1 = Polygon(N, P, Q)
r = AngularBisector(N, Q, P)
s = AngularBisector(P, N, Q)
R = Intersect(r, s)
t = OrthogonalLine(R, p_1)
S = Intersect(t, p_1)
c_1 = Circle(R, S)

Tool: Ortocentro
Clicca sui vertici del triangolo
Input: E_1, F_1, G_1
Output: H_1

j_1 = Line(F_1, G_1)
l_1 = Line(G_1, E_1)
m_1 = OrthogonalLine(F_1, l_1)
n_1 = OrthogonalLine(E_1, j_1)
H_1 = Intersect(m_1, n_1)

Tool: Excerchi
Clicca su 3 rette che determinano un triangolo
Input: b, c, a
Output: p, E, D, F, q, r

d, e = AngularBisector(a, c)
f, g = AngularBisector(b, c)
h, i = AngularBisector(a, b)
D = Intersect(h, d)
E = Intersect(d, f)
F = Intersect(f, h)
j = OrthogonalLine(D, a)
k = OrthogonalLine(E, c)
l = OrthogonalLine(F, b)
G = Intersect(b, l)
H = Intersect(k, c)
I = Intersect(j, a)
p = Circle(E, H)
q = Circle(F, G)
r = Circle(D, I)

Tool: Tr. Equil. su lato (command Treqlato)
Clicca sugli estremi in verso orario
Input: A, C
Output: poly2, a_1, c_1, D, d_1

d = Circle(C, A)
e = Circle(A, C)
D = Intersect(d, e, 2)
poly2, c_1, a_1, d_1 = Polygon(A, D, C)

Tool: Rapporto aureo (command Rapportoaureo)
Clicca sugli estremi del segmento
Input: A, B
Output: E

a = Segment(A, B)
b = OrthogonalLine(B, a)
M = Midpoint(a)
c = Circle(B, M)
C = Intersect(c, b, 2)
d = Segment(C, A)
e = Circle(C, B)
D = Intersect(e, d, 1)
f = Circle(A, D)
E = Intersect(f, a, 1)