pywonderland 项目的新作品集发布啦

2019-01-21 10:49:38 +08:00
 mathzhaoliang

v2 是程序员为主的论坛,好像只有我是用代码写数学的伪程序员,混进来发点自己写的看起来很奇怪的东西。

(灰太狼画外音) 小朋友们,今天又到了不看不知道,数学真奇妙的时间啦!

最近 pywonderland 项目 增加了两个新功能:

  1. 制作各种四维旋转的动画。
  2. 渲染 Hopf 纤维丛。

下面介绍一下。

四维空间的旋转

大家应该都知道什么是三维空间中的旋转,但是四维空间中的旋转是什么样子的,却很难想象。这个脚本可以制作各种多面体在四维空间中旋转,然后投影到三维中的效果。

下面这个图演示的是一个四维空间中的星状正多胞体 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

Hopf 纤维丛

请大家思考这样一个问题:

问题:你能否把整个三维空间用若干圆和一条直线 L 填满,并满足如下的限制条件?

  1. 空间中的每个点恰好属于唯一的一个圆 /直线上。
  2. 所有的圆和直线两两之间没有交点。
  3. 所有的圆两两之间是互相穿过的,直线 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 一下,谢谢!

2049 次点击
所在节点    分享创造
1 条回复
Pudge1337
2019-01-21 12:58:01 +08:00
厉害

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/529004

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX