两两接触的等粗且无限长的圆柱体

    大家在吃饭喝酒时是否注意到了这样的事情:三个人碰杯时,每个人的杯子都能同时和其他两个人的杯子相接触,很完美;但是四个人碰杯时,任一时刻总会有两个人碰不到杯,非常尴尬。有一次和三个好朋友吃饭,四人碰杯时又发生了这种尴尬的情况,突然有一个人异想天开,把他的杯子放到了另外三个杯子的上面,从而实现了四个杯子两两接触!我们自然引出了这样一个问题:如果 n 个全等的圆柱体两两相接触,则 n 最大是多少?

      

    对于不同形状的圆柱体,答案可能是不一样的。 Martin Gardner 在 Hexaflexagons and other mathematical diversions 一书中提到,我们可以精巧地摆放 5 枚硬币,使得它们两两相接触,如上图所示(注意,最底下还藏着一枚硬币)。同时, Martin Gardner 问到,能否摆放 6 支香烟让它们两两接触?一个经典的答案如下:

      

Read more…

一个与球内接多面体体积有关的问题

    在所有周长相等的长方形中,正方形拥有最大的面积;在所有周长相等的平面图形中,圆拥有最大的面积;在所有表面积相等的长方体中,正方体拥有最大的体积;在所有表面积相等的立体图形中,球拥有最大的体积。所有这类问题的答案都是越对称的图形越好吗? George Pólya 在 Mathematical Discovery 一书中的第 15 章里举了下面这个例子。

    在给定圆周上选取四个点构成一个四边形,那么正方形的面积一定是最大的吗?答案是肯定的。只要有哪个点不在相邻两点之间的圆弧的中点处,我们都可以把它移动到这段圆弧的中点处,使得整个图形的面积变得更大。好了,我们现在的问题是,在球面上选取八个点构成一个顶点数为 8 的多面体,那么正方体一定是体积最大的吗?

Read more…

线性代数的妙用:怎样在Windows画图软件中实现28度旋转?

    在早期的小型图像编辑软件中,考虑到时间空间的限制,再加上算法本身的难度,很多看似非常简单的功能都无法实现。比如说,很多图像编辑软件只允许用户把所选的内容旋转 90 度、 180 度或者 270 度,不支持任意度数的旋转。毕竟,如果我们只是旋转 90 度的整数倍,那么所有像素仅仅是在做某些有规律的轮换,这甚至不需要额外的内存空间就能完成。但是,如果旋转别的度数,那么在采样和反锯齿等方面都将会有不小的挑战。

    不过, Windows 自带的画图软件聪明地用 skew 功能(中文版翻译成“扭曲”)部分地填补了无法自由变形的缺陷。随便选中图中的一块区域,再在菜单栏上选择“图像”→“拉伸/扭曲”,然后在“水平扭曲”那儿填写一个 -89 到 89 之间的整数(表示一个角度值),再按一下确定,于是整个图形就会像下图所示的那样被拉斜,其中 θ 就是你刚才填的度数。如果你填入的 θ 是负数值,则倾斜的方向会与下图方向相反。类似地,“垂直扭曲”功能会在竖直方向上对图形进行拉扯,如果角度值为正数,则整个图形会变得左低右高,如果角度值为负数,则整个图形会变得左高右低。

      

    不过,这玩意儿对于我们来说似乎完全没用。估计 99% 的人在使用画图软件的时候就从来没用过这个功能吧。如果真是这样,那么今天的问题恐怕将会是大家最近一段时间见过的最有趣的问题了:想办法利用 Windows 画图中的扭曲功能(近似地)实现 28 度旋转。

Read more…