密鋪四邊形
Author: 牛津大學出版社 2011

1.  拖曳下面四邊形上的藍色點
     來改變圖形的形狀。
2.  拖曳右面紅色滑桿把圖形拼砌。

密鋪四邊形

牛津大學出版社2012 

拼砌

A = (2.8457517644001173, -3.7562869914533774)
B = (1.3888886822149762, -6.026035021914672)
C = (5.751791577870575, -5.9123810466088775)
D = (3.830055572188498, -3.1000844529277907)
poly1, a, b, c, d = Polygon(A, B, C, D)
e = 1 (slider from 1 to 25, step 0.1)
E = Midpoint(D, C)
A' = Rotate(A, 180*°, E)
B' = Rotate(B, 180*°, E)
C' = Rotate(C, 180*°, E)
D' = Rotate(D, 180*°, E)
poly1', a', b', c', d' = Polygon(A', B', C', D')
F = Midpoint(D, B')
A'' = Rotate(A', 180*°, F)
B'' = Rotate(B', 180*°, F)
C'' = Rotate(C', 180*°, F)
D'' = Rotate(D', 180*°, F)
poly1'', a'', b'', c'', d'' = Polygon(A'', B'', C'', D'')
G = Midpoint(A'', D)
A''' = Rotate(A'', 180*°, G)
B''' = Rotate(B'', 180*°, G)
C''' = Rotate(C'', 180*°, G)
D''' = Rotate(D'', 180*°, G)
poly1''', a''', b''', c''', d''' = Polygon(A''', B''', C''', D''')
H = Midpoint(C''', A)
I = Rotate(A''', 180*°, H)
J = Rotate(B''', 180*°, H)
K = Rotate(C''', 180*°, H)
L = Rotate(D''', 180*°, H)
多邊形1, i, j, k, l = Polygon(I, J, K, L)
M = Midpoint(J, A)
I' = Rotate(I, 180*°, M)
J' = Rotate(J, 180*°, M)
K' = Rotate(K, 180*°, M)
L' = Rotate(L, 180*°, M)
多邊形1', i', j', k', l' = Polygon(I', J', K', L')
N = Midpoint(L', B)
I'' = Rotate(I', 180*°, N)
J'' = Rotate(J', 180*°, N)
K'' = Rotate(K', 180*°, N)
L'' = Rotate(L', 180*°, N)
多邊形1'', i'', j'', k'', l'' = Polygon(I'', J'', K'', L'')
O = Midpoint(B, K'')
I''' = Rotate(I'', 180*°, O)
J''' = Rotate(J'', 180*°, O)
K''' = Rotate(K'', 180*°, O)
L''' = Rotate(L'', 180*°, O)
多邊形1''', i''', j''', k''', l''' = Polygon(I''', J''', K''', L''')
P = Midpoint(I''', C)
Q = Rotate(I''', 180*°, P)
R = Rotate(J''', 180*°, P)
S = Rotate(K''', 180*°, P)
T = Rotate(L''', 180*°, P)
多邊形2, q, r, s, t = Polygon(Q, R, S, T)
U = Midpoint(T, S)
Q' = Rotate(Q, 180*°, U)
R' = Rotate(R, 180*°, U)
S' = Rotate(S, 180*°, U)
T' = Rotate(T, 180*°, U)
多邊形2', q', r', s', t' = Polygon(Q', R', S', T')
V = Midpoint(S', R')
Q'' = Rotate(Q', 180*°, V)
R'' = Rotate(R', 180*°, V)
S'' = Rotate(S', 180*°, V)
T'' = Rotate(T', 180*°, V)
多邊形2'', q'', r'', s'', t'' = Polygon(Q'', R'', S'', T'')
W = Midpoint(Q'', T'')
Q''' = Rotate(Q'', 180*°, W)
R''' = Rotate(R'', 180*°, W)
S''' = Rotate(S'', 180*°, W)
T''' = Rotate(T'', 180*°, W)
多邊形2''', q''', r''', s''', t''' = Polygon(Q''', R''', S''', T''')
Z = Midpoint(S''', R''')
A_1 = Rotate(Q''', 180*°, Z)
B_1 = Rotate(R''', 180*°, Z)
C_1 = Rotate(S''', 180*°, Z)
D_1 = Rotate(T''', 180*°, Z)
多邊形3, a_1, b_1, c_1, d_1 = Polygon(A_1, B_1, C_1, D_1)
E_1 = Midpoint(A_1, B_1)
F_1 = Rotate(A_1, 180*°, E_1)
G_1 = Rotate(B_1, 180*°, E_1)
H_1 = Rotate(C_1, 180*°, E_1)
I_1 = Rotate(D_1, 180*°, E_1)
多邊形3', f_1, g_1, h_1, i_1 = Polygon(F_1, G_1, H_1, I_1)
J_1 = Midpoint(H_1, I_1)
K_1 = Rotate(F_1, 180*°, J_1)
L_1 = Rotate(G_1, 180*°, J_1)
M_1 = Rotate(H_1, 180*°, J_1)
N_1 = Rotate(I_1, 180*°, J_1)
多邊形3'', k_1, l_1, m_1, n_1 = Polygon(K_1, L_1, M_1, N_1)
O_1 = Midpoint(K_1, L_1)
P_1 = Rotate(K_1, 180*°, O_1)
Q_1 = Rotate(L_1, 180*°, O_1)
R_1 = Rotate(M_1, 180*°, O_1)
S_1 = Rotate(N_1, 180*°, O_1)
多邊形3''', p_1, q_1, r_1, s_1 = Polygon(P_1, Q_1, R_1, S_1)
T_1 = Midpoint(R_1, S_1)
U_1 = Rotate(P_1, 180*°, T_1)
V_1 = Rotate(Q_1, 180*°, T_1)
W_1 = Rotate(R_1, 180*°, T_1)
Z_1 = Rotate(S_1, 180*°, T_1)
多邊形4, u_1, v_1, w_1, z_1 = Polygon(U_1, V_1, W_1, Z_1)
A_2 = Midpoint(V_1, W_1)
B_2 = Rotate(U_1, 180*°, A_2)
C_2 = Rotate(V_1, 180*°, A_2)
D_2 = Rotate(W_1, 180*°, A_2)
E_2 = Rotate(Z_1, 180*°, A_2)
多邊形4', b_2, c_2, d_2, e_2 = Polygon(B_2, C_2, D_2, E_2)
F_2 = Midpoint(E_2, B_2)
G_2 = Rotate(B_2, 180*°, F_2)
H_2 = Rotate(C_2, 180*°, F_2)
I_2 = Rotate(D_2, 180*°, F_2)
J_2 = Rotate(E_2, 180*°, F_2)
多邊形4'', g_2, h_2, i_2, j_2 = Polygon(G_2, H_2, I_2, J_2)
K_2 = Midpoint(H_2, I_2)
L_2 = Rotate(G_2, 180*°, K_2)
M_2 = Rotate(H_2, 180*°, K_2)
N_2 = Rotate(I_2, 180*°, K_2)
O_2 = Rotate(J_2, 180*°, K_2)
多邊形4''', l_2, m_2, n_2, o_2 = Polygon(L_2, M_2, N_2, O_2)
P_2 = Midpoint(O_2, L_2)
Q_2 = Rotate(L_2, 180*°, P_2)
R_2 = Rotate(M_2, 180*°, P_2)
S_2 = Rotate(N_2, 180*°, P_2)
T_2 = Rotate(O_2, 180*°, P_2)
多邊形5, q_2, r_2, s_2, t_2 = Polygon(Q_2, R_2, S_2, T_2)
U_2 = Midpoint(T_2, S_2)
V_2 = Rotate(Q_2, 180*°, U_2)
W_2 = Rotate(R_2, 180*°, U_2)
Z_2 = Rotate(S_2, 180*°, U_2)
A_3 = Rotate(T_2, 180*°, U_2)
多邊形5', v_2, w_2, z_2, a_3 = Polygon(V_2, W_2, Z_2, A_3)
B_3 = Midpoint(W_2, V_2)
C_3 = Rotate(V_2, 180*°, B_3)
D_3 = Rotate(W_2, 180*°, B_3)
E_3 = Rotate(Z_2, 180*°, B_3)
F_3 = Rotate(A_3, 180*°, B_3)
多邊形5'', c_3, d_3, e_3, f_3 = Polygon(C_3, D_3, E_3, F_3)
G_3 = Midpoint(F_3, E_3)
H_3 = Rotate(C_3, 180*°, G_3)
I_3 = Rotate(D_3, 180*°, G_3)
J_3 = Rotate(E_3, 180*°, G_3)
K_3 = Rotate(F_3, 180*°, G_3)
多邊形5''', h_3, i_3, j_3, k_3 = Polygon(H_3, I_3, J_3, K_3)
L_3 = Midpoint(T', H_3)
M_3 = Rotate(H_3, 180*°, L_3)
N_3 = Rotate(I_3, 180*°, L_3)
O_3 = Rotate(J_3, 180*°, L_3)
P_3 = Rotate(K_3, 180*°, L_3)
多邊形6, m_3, n_3, o_3, p_3 = Polygon(M_3, N_3, O_3, P_3)

Tool: 工具
Input: A, B, C, D, E
Output: poly1', H'_1, poly2'_1, poly2', poly1'_2, F'_1, G'_1, I'_1, A'_2, B'_2, C'_2, D'_2, F', G', H', I'

u = Vector(A, E)
A' = Translate(A, u)
B' = Translate(B, u)
C' = Translate(C, u)
D' = Translate(D, u)
poly1', a', b', c', d' = Polygon(A', B', C', D')
A'_1 = Mirror(A, xAxis)
B'_1 = Mirror(B, xAxis)
C'_1 = Mirror(C, xAxis)
D'_1 = Mirror(D, xAxis)
F = Mirror(A'_1, yAxis)
G = Mirror(B'_1, yAxis)
H = Mirror(C'_1, yAxis)
I = Mirror(D'_1, yAxis)
v = Vector(G, C')
F'_2 = Translate(F, v)
F' = Translate(F, v)
G'_2 = Translate(G, v)
G' = Translate(G, v)
H'_2 = Translate(H, v)
H' = Translate(H, v)
I'_2 = Translate(I, v)
I' = Translate(I, v)
poly2', f', g', h', i' = Polygon(F', G', H', I')
w = Vector(H, D')
F'_3 = Translate(F, w)
F'_1 = Translate(F, w)
G'_3 = Translate(G, w)
G'_1 = Translate(G, w)
H'_3 = Translate(H, w)
H'_1 = Translate(H, w)
I'_3 = Translate(I, w)
I'_1 = Translate(I, w)
poly2'_1, f'_1, g'_1, h'_1, i'_1 = Polygon(F'_1, G'_1, H'_1, I'_1)
z = Vector(A, I'_1)
A'_3 = Translate(A, z)
A'_2 = Translate(A, z)
B'_3 = Translate(B, z)
B'_2 = Translate(B, z)
C'_3 = Translate(C, z)
C'_2 = Translate(C, z)
D'_3 = Translate(D, z)
D'_2 = Translate(D, z)
poly1'_2, a'_2, b'_2, c'_2, d'_2 = Polygon(A'_2, B'_2, C'_2, D'_2)