V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
mathzhaoliang
V2EX  ›  分享创造

pywonderland 项目的新作品集发布啦

  •  1
     
  •   mathzhaoliang ·
    neozhaoliang · 2019-01-21 10:49:38 +08:00 · 2037 次点击
    这是一个创建于 2143 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 一下,谢谢!

    Pudge1337
        1
    Pudge1337  
       2019-01-21 12:58:01 +08:00 via iPhone
    厉害
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2412 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:02 · PVG 08:02 · LAX 16:02 · JFK 19:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.