不打算讲代码,说一下思路:
第一步目标,建立一个如下足球模型:
采用的是多边形拼接法:
A = (1, 0, 0)
B = 旋转(A, (360°) / 5, z轴)
poly1 = 多边形(A, B, 5, xOy平面)
poly2 = 多边形(B, A, 6, xOy平面)
画一个正五边形和正六边形
E = 多边形(A, B, 5, xOy平面)
K = 多边形(B, A, 6, xOy平面)
H = 多边形(B, A, 6, xOy平面)
c: 圆周(直线(A, B), H)
d: 圆周(直线(A, E), 旋转(K, -(72°), z轴))
G = 交点(d, c)
poly3 = 正六边形(B, A, G)
通过两圆交点把六边形旋转上来,下面就是拼接图形,不再一一讲了:
poly4 = 正六边形(E, A, G)
poly5 = 正六边形(D, E, Q)
poly6 = 正六边形(C, D, T)
poly7 = 正五边形(L, G, O)
poly8 = 正五边形(P, Q, R)
poly9 = 正六边形(O, P, C_1)
poly10 = 正六边形(B_1, C_1, D_1)
poly11 = 正五边形(E_1, D_1, G_1)
poly12 = 正六边形(H_1, G_1, J_1)
poly13 = 正六边形(K_1, J_1, L_1)
poly14 = 正五边形(L_1, M_1, O_1)
保留poly1和poly14显示,其它所有图形不再显示,选取其中关键图形(六边形和五边形)旋转:
l1 = 序列(旋转({poly3, poly9, poly10, poly13}, 72° i, z轴), i, 1, 5)
l2 = 序列(旋转({poly7, poly11}, 72° i, z轴), i, 1, 5)
至此,第一步目标完成,建立了模型,我们需要取得所有点,根据这些点画弧线:
T_1 = 中点(形心(poly1), 形心(poly14)) (这是根据两相对面确定球心)
l3 = 映射(序列(描点(SS, tt / 6), tt, 1, 6), SS, 扁平列表({l1})) (取出全部六边形顶点)
l6 = 映射(映射(圆弧(T_1, AA, BB), AA, TT, BB, 扁平列表({最后元素(TT, 5), 最前元素(TT, 1)})), TT, l3)
这时,我们成功将模型转化为弧线模型,这算是完成了第二步。下边是最后一步,我们采用曲面条粘贴出各正六边形,余下五边形用球的本色:
o: 球面(T_1, A) (画个黑球 )
e: 圆弧(T_1, B, A)
l4 = 序列(旋转(曲面(e, 84°, 直线(T_1, 直线(B, A))), 72° i, z轴), i, 1, 5)
从最下边开始,第1次贴条。
r: 圆弧(T_1, S, T)
l5 = 序列(旋转(曲面(r, 84°, 直线(T_1, 直线(T, S))), 72° i, z轴), i, 1, 5)
用旋转法,第2次贴条。这个旋转图形是下边这样:
其它不再讲了,原理都 一样:
l4' = 旋转(旋转(l4, 180°, 直线(T_1, x轴)), 36°, z轴)
l7 = 旋转(旋转(l5, 180°, 直线(T_1, x轴)), 36°, z轴)
s: 圆弧(T_1, F_1, O)
l8 = 序列(旋转(曲面(s, 84°, 直线(T_1, 直线(F_1, O))), 72° i, z轴), i, 1, 5)
t: 圆弧(T_1, C_1, P)
l9 = 序列(旋转(曲面(t, 84°, 直线(T_1, 直线(P, C_1))), 72° i, z轴), i, 1, 5)
完成图: