10个稳定版本
2.4.1 | 2024年4月19日 |
---|---|
2.4.0 | 2023年12月20日 |
1.2.3 |
|
1.2.2 | 2023年10月24日 |
1.2.1 | 2023年9月21日 |
#130 in 数学
94KB
2K SLoC
ncube - 一个广义超立方体可视化器
ncube
允许您可视化任意维度的旋转超立方体。它通过旋转超维顶点并对它们应用一系列透视投影来实现,直到达到第三维。 所有内容都是实时生成的,仅从维度数字生成。



功能
- 实时控制模拟,例如调整任何旋转平面的角速度因子
- 将自定义配置导出和加载为文件
但我实际上在可视化什么?
让我们以上面的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