10个稳定版本

2.4.1 2024年4月19日
2.4.0 2023年12月20日
1.2.3 2023年11月30日
1.2.2 2023年10月24日
1.2.1 2023年9月21日

#130 in 数学

MIT 协议

94KB
2K SLoC

ncube - 一个广义超立方体可视化器

Crates.io Version Website

ncube 允许您可视化任意维度的旋转超立方体。它通过旋转超维顶点并对它们应用一系列透视投影来实现,直到达到第三维。 所有内容都是实时生成的,仅从维度数字生成。


功能

  • 实时控制模拟,例如调整任何旋转平面的角速度因子
  • 将自定义配置导出和加载为文件

Demo

但我实际上在可视化什么?

让我们以上面的7-立方体演示GIF为例。在那种特定情况下,你看到的是

  • 一个 三维透视投影...
    • 一个 四维透视投影...
      • 一个 五维透视投影...
        • 一个 六维透视投影...
          • 一个在 q1q4(X-W1)和 q2q3(Y-Z)正交平面上的旋转的 七维超立方体

好吧,让我们来分析一下... 我们作为简单的三维生物,生活在一个(至少表面上)三维的宇宙中,很容易感知三维物体,对于更小的维度来说,更容易,一个多边形,一条线,一个点... 但如果我们想看得更远呢?

想象一下你是一个二维生物,你生活在一个 平坦的 宇宙中,在一个平面上,你在1D(一条线)中看到,然后你尝试可视化一个三维物体,所以你的三维朋友将一个立方体切成你的视线,但你只能看到它的一小部分,你永远无法完全看到它。

当我们尝试理解四维或更高维度的物体时,会出现完全相同的问题。那么我们如何解决这个问题呢?

我们需要以更低的维度来表示对象。我们每天都能看到这样的表示……影子。将光线穿过立方体,你会得到所有特征压缩成二维的结果,这当然不同于立方体本身,但比薄切片要好得多!而且信不信由你,这正是这个项目数学的全部内容,影子……这些的另一词是透视投影

我们投射一个影子,然后投射一个影子的影子,依此类推,每一步都会去除一个维度,直到我们最终得到一个我们可以完全看到和检查的3D物体。有了这个,我们就可以对超立方体进行旋转,并看到它的投影如何变化。

在那里,我们有在3D空间中不存在的更奇特的旋转方式,称为双重、三重等,这发生在你同时进行多个简单旋转,而这些旋转不会相互干扰的情况下。例如,在3D空间中,你可以沿着X-Y平面旋转,但如果进入4D,你将有2个维度是自由的,可以执行另一个旋转。

Web

该应用的Web版本可通过WASM构建在获得。

安装

下载预构建的二进制文件

Windows、Linux、MacOS和WASM的预构建二进制文件可在发布页面找到。

从crates.io安装

安装cargo并运行安装命令

cargo install ncube

从源代码安装

安装cargo,克隆仓库并运行安装命令

git clone https://github.com/ndavd/ncube
cd ncube
cargo install --path .

卸载

cargo uninstall ncube

贡献

非常欢迎贡献!这些贡献可以是拉取请求、问题报告甚至想法。

  • 如果你有想法或问题,请在讨论页面上创建一个讨论。
  • 如果你想展示你的发现,可以在社区展示中展示。

依赖项

~39–79MB
~1.5M SLoC