新图标

这是一篇旧文,其中的内容可能已经过时。

我决定为站点添加一个图标。然而找不到想表达的意思,干脆弄一个拉风的动态图标好了。

支持动态图标的浏览器

Browser ICO PNG GIF animated GIFs JPEG APNG SVG
Firefox 1.0 1.0 1.0 Yes Yes 3.0 No
Google Chrome Yes Yes 4.0 4.0 4.0 No ?
Internet Explorer 5.0 11.0 11.0 No No No No
Opera 7.0 7.0 7.0 7.0 7.0 9.5 ?
Safari Yes 4.0 4.0 No 4.0 No No

据说 Chrome 也是看不到动画效果的,不过管它呢,我用火狐。

构造

旋转起来有特色的图形,我想到了两个:一个是太极图,另一个是蚊香。正在两者之间犹豫时,我灵机一动 🤔 ,画出了这张图:

arctan

于是有了现在的图标。

如你所见:

  • 这个集合是有界的连通开集,被包含在 以内,且占据了它一半的面积;
  • 在接近中心的地方,它表现得像太极图那样初等;在接近外围的地方,它又像阿基米德螺线那样盘旋了无数圈。

作图过程中的问题

在 Mathematica 中作图时,遇到了不少问题:

  1. 一开始用的表达式:

    这样有个显著的缺点:当 固定时,点随 的变化扫出的是一段半圆弧,所以只有 的取样点足够多时,才不至于看到明显的折角。

    解决方案:把表达式改成

    当 固定时,点随 的变化扫出的是一条线段,这样 只要取三个样点就可以了。

  2. 采用了新的表达式,极轴下方的“蛇头”却不翼而飞。

    解决方案:不慌不忙地把“蛇头”补上:

  3. 由于边界线存在固定宽度,图形外围一片漆黑,而不是设想中的 50% 灰。

    解决方案:不显示边界线。

  4. 去掉边界线之后,原先平滑的边缘变成了锯齿状。这是由于曲线的图像支持抗锯齿,而区域不支持。

    解决方案:图形抗锯齿工具

ParametricPlot3D[
  {
    {Cos[u + v], Sin[u + v], Sin[u - v]},
    {-Sin[u + v], Cos[u + v], Sin[u - v]},
    {-Cos[u + v], -Sin[u + v], Sin[u - v]},
    {Sin[u + v], -Cos[u + v], Sin[u - v]},
    {Sin[u - v], Cos[u + v], Sin[u + v]},
    {Sin[u - v], -Sin[u + v], Cos[u + v]},
    {Sin[u - v], -Cos[u + v], -Sin[u + v]},
    {Sin[u - v], Sin[u + v], -Cos[u + v]},
    {Cos[u + v], Sin[u - v], Sin[u + v]},
    {-Sin[u + v], Sin[u - v], Cos[u + v]},
    {-Cos[u + v], Sin[u - v], -Sin[u + v]},
    {Sin[u + v], Sin[u - v], -Cos[u + v]}
  },
  {u, 0, Pi/4},
  {v, 0, Pi/4},
  Mesh -> False, PlotStyle -> Opacity[0.7]
]

题外话

在很长的一段时间内,人们认为平面上的曲线至多是两个不相交区域(即连通开集)的公共边界。上面的图形给出了一个反例: 是三个区域 、 的中心对称像和 的公共边界。类似地,可以构造任意多个不相交区域有公共边界的情形。