v2 是程序员为主的论坛,好像只有我是用代码写数学的伪程序员,混进来发点自己写的看起来很奇怪的东西。
(灰太狼画外音) 小朋友们,今天又到了不看不知道,数学真奇妙的时间啦!
最近 pywonderland 项目 增加了两个新功能:
下面介绍一下。
大家应该都知道什么是三维空间中的旋转,但是四维空间中的旋转是什么样子的,却很难想象。这个脚本可以制作各种多面体在四维空间中旋转,然后投影到三维中的效果。
下面这个图演示的是一个四维空间中的星状正多胞体 grand stellated 120-cell ( https://en.wikipedia.org/wiki/Grand_stellated_120-cell) 在四维空间中动起来的效果。它有 120 个顶点,720 条边和 720 个面!
这个变换效果是不是很有点变形金刚的感觉?我一直认为将来制造变形金刚的话,一定是在四维中设计好,然后变换到三维的。
我在维基百科上上传了许多这样的视频,地址在
https://commons.wikimedia.org/wiki/User:Neozhaoliang
这个脚本可以制作各种各样的三维 /四维均匀多面体的动画,不管是凸的还是星状的都可以。
此外我的 github 头像也是用这个项目制作的。
我还制作了一个视频,尝试重现 dimensions
http://www.dimensions-math.org/
里面的场景,你可以点击这里观看:
https://neozhaoliang.github.io/polytope/120-cell.mp4
请大家思考这样一个问题:
问题:你能否把整个三维空间用若干圆和一条直线 L 填满,并满足如下的限制条件?
这个问题的背后是拓扑学中著名的 Hopf 纤维丛:
这个构造也是在四维空间中进行的,上面这幅图是把一些四维空间的圆投影到三维的结果。
简单说,hopf 纤维丛是从四维空间的单位球面 S^3 到三维空间的单位球迷 S^2 的一个映射,满足如下条件:
对 S^2 上每个点 p, 其逆像是 S^3 上的一个圆。于是当 p 跑遍 S^2 时,将 p 的逆像投影到 3 维,得到的圆的集合即为所求的构造。其中 S^2 的北极点对应的逆像投影后的结果是直线 L。
详细的解释可以参考维基百科的页面 https://en.wikipedia.org/wiki/Hopf_fibration
上面这两个图都是用 python 做好计算以后导出到 POVRay 中渲染得到的,程序是傻瓜式的,只要你安装好 povray 和 ffmpeg 以后就会自动渲染和合成视频。
如果你喜欢这个项目的话,就请去 star 一下,谢谢!