
这个图形是由正十二体与正二十面体组合而成,截三分之一二十面体,其实就是足球模型图,看似简单的图,在GeoGebra中可以用指令实现,但问题关键是如何让两图形心在原点,且面与顶点完全对应上呢?
我们先画个形心在原点的正十二面体吧:
a=1 (棱长初始值,滑动条,最小为1,最大暂时定为2吧)
O=(0,0,0)
A = (a, 0, 0)
l1 = {多边形(O, A, 5, xOy平面)}
poly1 = 元素(l1, 1) (这样画多边形或者立体图形,省去那些不要的点、线、面信息)
B = 形心(poly1)
ψ = (sqrt(5) + 1) / 2 (黄金分割数)
r1 = a ψ² / (2sqrt(3 - ψ)) (正十二面体内接球半径计算公式)
O_1 = (0, 0, -r1)
face12 = 平移(poly1, 向量(B, O_1)) (这里取这样的名字,是为了后续提取十二个面方便)

我们成功将构成正十二面体的初始五边形移到了需要的位置,然后可以用系统命令画了:
t12 = 正十二面体(face12, true)
l2 = 序列(对象("face" + (i)), i, 1, 12) (根据生成图形各面的名称信息,把各面组成列表)
l3 = 映射(射线(O, 形心(a)), a, l2) (画出十二条射线,用于确定正二十面体顶点方向)

b = 3 (正二十面体棱长)
r2 = b (3sqrt(3) + sqrt(15)) / 12 (正二十面体外接球半径计算公式)
c2: 球面(O, r2)
l4 = 映射(交点(a, c2), a, l3) (取得正二十面体顶点)
T = l4(2)
U = l4(3)
V = l4(12) (找出三个点,构建初始三角形)
t1 = 多边形({T, U, V})

t20 = 正二十面体(t1, true)
H_1 = E_1 + 1 / 3 (B_1 - E_1)
I_1 = E_1 + 1 / 3 (F_1 - E_1)
J_1 = E_1 + 1 / 3 (G_1 - E_1) 找到正二十面体最上顶点及与其相邻三个点,分别作三分之一点。

过这三点作平面,与z轴交于一点,此点z坐标为切二十面体于三分之一处时,十二面体内接球半径。
p: 平面(H_1, I_1, J_1)
K_1 = 交点(z轴, p)
a_0 = 2sqrt(3 - ψ) z(K_1) / ψ² (根据公式,把半径换算为十二面体棱长)
当a=a_0时,为我们需要的图形了,这里可以把a_0的值复制出来,放到a的最大值中。
