足球顶点坐标的计算

                     

贡献者: addis

预备知识 解三棱锥顶角,空间旋转矩阵
图
图 1:足球透视图,动画见这里,代码见 “足球顶点坐标的计算程序(Matlab)”。

   足球的各种常用数据都可以由一个条件推出,那就是它有 60 个顶点。考虑到每个顶点都有 3 条同样长度的棱,棱的个数为

\begin{equation} (\text{60 个顶点}) \times (\text{3 条棱}) / (\text{每条棱有 2 个顶点}) = 90~. \end{equation}
另外每个顶点都由一个正五边形和两个正六边形共用,所以五边形的个数为
\begin{equation} (\text{60 个顶点}) \times (\text{每个顶点 1 个五边形}) / (\text{每个五边形有 5 个顶点}) = 12~. \end{equation}
同理,六边形的个数为
\begin{equation} (\text{60 个顶点}) \times (\text{每个顶点 2 个六边形}) / (\text{每个六边形有 6 个顶点}) = 20~. \end{equation}

1. 坐标计算

   以下所用到的方法不仅适用于足球,还适用于其他多面体如正十二面体,正二十面体等。以足球的一个五边形作为底面,得到足球的侧视图和俯视图如图 2 。为了方便讨论,我们根据这两个视图把足球的顶点按高度分为 A 到 H 共 8 层。并且逆时针给出相应的数字编号。

图
图 2:各层和各顶点的命名,右图中黑色字体对应五边形的顶点,灰色字体对应六边形的顶点

   由于足球由正六边形和正五边形拼成,足球的每一条棱都相等。在以下计算中,不妨设棱长为 1。通过以下几个步骤,就可以求解足球的各点的直角坐标。

求出 $A_1$ 到 $A_5$ 的坐标

   直角坐标系中,令 A 层的五边形与 $xy$ 平面重合,如下图。为了表示方便,令

\begin{equation} S = \sin\frac{2\pi}{5}~, \qquad C = \cos\frac{2\pi}{5} ~,\qquad s = \sin\frac{\pi}{5} ~,\qquad c = \cos\frac{\pi}{5}~. \end{equation}
则点 $A_1$ 到 $A_5$ 的坐标分别为
\begin{equation} \left(0, \frac{1}{2s}, 0 \right) ~,\quad \left(-\frac{S}{2s}, \frac{C}{2s}, 0 \right) ~,\quad \left(-\frac12, -\frac{c}{2s}, 0 \right) ~, \quad \left(\frac12, -\frac{c}{2s}, 0 \right) ~,\quad \left(\frac{S}{2s}, \frac{C}{2s}, 0 \right) ~. \end{equation}

2. 三个重要的角

   由式 1 可得以下角的大小(以下每个角都是锐角)。

   两个六边形之间的面面角满足

\begin{equation} \sin\phi_{66} = \frac{2}{3}~. \end{equation}
五边形与六边形之间的面面角满足
\begin{equation} \sin\phi_{56} = \frac{4s}{\sqrt{15}}~. \end{equation}
式 2 ,五边形与相邻棱的线面角满足
\begin{equation} \sin\gamma = \frac{2s}{\sqrt5}~~. \end{equation}

图
图 3:求线段 $A_1 B_1$ 与底面的线面角

3. 求出 $B_1$ 的坐标

   若把从 $A_5$ 指向 $A_1$ 的矢量记为 $ \boldsymbol{\mathbf{v}} _1$,$A_2$ 指向 $A_1$ 的矢量记为 $ \boldsymbol{\mathbf{v}} _2$,$A_1$ 指向 $B_1$ 的矢量记为 $ \boldsymbol{\mathbf{u}} $,可得

\begin{equation} \boldsymbol{\mathbf{u}} = \frac{ \boldsymbol{\mathbf{v}} _1 + \boldsymbol{\mathbf{v}} _2}{ \left\lvert \boldsymbol{\mathbf{v}} _1 + \boldsymbol{\mathbf{v}} _2 \right\rvert } \cos\gamma + \frac{ \boldsymbol{\mathbf{v}} _2 \boldsymbol\times \boldsymbol{\mathbf{v}} _1}{ \left\lvert \boldsymbol{\mathbf{v}} _2 \boldsymbol\times \boldsymbol{\mathbf{v}} _1 \right\rvert } \sin\gamma = \frac{\sqrt{1 - 3S^2/4}}{2s} ( \boldsymbol{\mathbf{v}} _1 + \boldsymbol{\mathbf{v}} _2) + \frac{\sqrt{3}}{2} ( \boldsymbol{\mathbf{v}} _2 \boldsymbol\times \boldsymbol{\mathbf{v}} _1)~. \end{equation}

   由式 5

\begin{equation} \boldsymbol{\mathbf{v}} _1 = \frac{-S \hat{\boldsymbol{\mathbf{x}}} + (C-1) \hat{\boldsymbol{\mathbf{y}}} }{2s} ~,\qquad \boldsymbol{\mathbf{v}} _2 = \frac{(-S+s) \hat{\boldsymbol{\mathbf{x}}} + (C+c) \hat{\boldsymbol{\mathbf{y}}} }{2s}~. \end{equation}
代入可得 $ \boldsymbol{\mathbf{u}} $(略),加上 $A_1$ 的坐标可得 $B_1$ 的坐标。接下来我们并不需要用同样的方法求出 B 层的其他坐标,因为我们可以通过一个简单的矢量公式依次求出剩下所有顶点的坐标。

4. 求剩下的坐标

   已知空间中正 $N$ 边形任意连续 3 点的坐标,求第 4 点的坐标,可以用以下矢量公式来计算

\begin{equation} \boldsymbol{\mathbf{r}} _4 = \boldsymbol{\mathbf{r}} _1 - \boldsymbol{\mathbf{r}} _2 + \boldsymbol{\mathbf{r}} _3 + 2 \sin\left(\frac{N-4}{2N}\pi\right) \cdot ( \boldsymbol{\mathbf{r}} _3 - \boldsymbol{\mathbf{r}} _2)~, \end{equation}
其中 $ \boldsymbol{\mathbf{r}} _i$ 是第 $i$ 点的位置矢量

   根据已知的 $A_2, A_1, B_1$ 三个点,该式可以算出 $C_1$ 的坐标,再把 $A_1, B_1, C_1$ 的坐标代入得到 $C_2$,再由 $B_1, C_1, C_2$ 得到 $B_2$,以此类推。当 $C$ 层完成后,又可以同理算出其他层的所有顶点。下面我们来推导这个公式。

图
图 4:由正 $N$ 边形的 3 个顶点坐标求第 4 个顶点坐标。图中以五边形为例,但图中的公式适用于任意的 $N > 2$

   令 $ \boldsymbol{\mathbf{v}} _i = \boldsymbol{\mathbf{r}} _{i+1} - \boldsymbol{\mathbf{r}} _i$,从图 4 中不难发现

\begin{equation} \boldsymbol{\mathbf{v}} _1 + \boldsymbol{\mathbf{v}} _3 = 2 \sin\left(\frac{N-4}{2N}\pi\right) \cdot \boldsymbol{\mathbf{v}} _2~, \end{equation}
将 $ \boldsymbol{\mathbf{r}} _i$ 代入即可得到式 11

5. 足球的高度和中点坐标

   我们从底部的五边形出发,沿着任意一条外接棱的方向前进,依次会经过棱,五边形,六边形,六边形,顶部的五边形。如果从反方向出发,顺序恰好相反。这两条路线恰好可以绕足球一整圈。

   按照第一种路线到达顶部,转过的角度依次是 $\gamma, \gamma, \phi_{56}, \phi_{66}, \phi_{56}$。可以验证,它们相加等于 $\pi$。

   考虑到经过的五边形(边长为 1)的中轴线长度是 $(1+c)/(2s)$,经过的六边形的中轴线长度是 $\sqrt{3}$,经过的棱长为 1,底部五边形到顶部五边形的高度为1

\begin{equation} \begin{aligned} h &= \sin\gamma + \frac{1+c}{2s} \sin\left(2\gamma\right) + \sqrt{3} \sin\left(2\gamma + \phi_{56}\right) + \sqrt{3} \sin\left(2\gamma + \phi_{56} + \phi_{66}\right) \\ &= \sqrt{\frac{41}{10}\sqrt 5 + \frac{25}{2}}~, \end{aligned} \end{equation}
球心到底面和顶面的距离为 $h/2$。

   由勾股定理可以得到中心点到任意顶点的距离为

\begin{equation} R = \sqrt{ \left(\frac{h}{2} \right) ^2 + \left(\frac{1}{2s} \right) ^2} = \frac14 \sqrt{18\sqrt{5} + 58}~. \end{equation}


1. ^ 事实上这个式子很难化简,结果来自 Wikipedia 查找并通过数值验证。

                     

© 小时科技 保留一切权利