1KB 代码在 386 上模拟 Navier-Stokes

Show HN: Navier-Stokes Visualized as 1kB i386 demos

在制作关于 MS-DOS 图形时代的 Web 项目时,受 OpenAI 关于 Navier-Stokes 平滑问题解决方案的启发,我尝试用复古的 386 架构重现这一流体可视化。最终,我通过极致优化,将基于 Burgers 涡旋解的演示程序压缩至 1KB 以内。项目包含两个版本:一个是利用调色板循环(Palette)实现动画,另一个则是实时渲染粒子轨迹。这两个程序不仅能在 js-dos 中运行,更能在真实的 386 硬件上流畅执行。从 16.16 定点数运算到移除所有冗余检查,每一步优化都旨在在极小的代码空间内呈现复杂的物理现象,证明了即使在 90 年代的硬件限制下,也能通过巧妙的算法实现令人惊叹的视觉效果。

这并非平滑问题的解决方案,而是 J.M.Burgers 于 1948 年发表的 Burgers 涡旋,它是 Navier-Stokes 方程的一个精确解。
  1. Kotlopou

    这画面挺美,但这些可视化效果看起来都不是很……“奇点”?有人能告诉我,在这些模拟中该看哪里才能看到“爆破”(blowup)吗?是某个区域的速度趋于无穷大(是蓝色部分还是橙色部分?),还是仅仅变得不光滑?

  2. westurner

    真酷!据我所记,Geisswerks 有能在 Win98/2k 上运行的 Navier-Stokes 可视化程序。

    Milkdrop3/projectM 可以根据音频属性样本实时调整可视化参数。

    也许可以放在一个开源的保龄球馆里:https://news.ycombinator.com/item?id=48971134

    我自己也有一些粒子可视化作品,在修改了 ThreeJS 的粒子吸引器示例后,我开始用 R3F ReactThreeFiber 和 Drei 构建这样一个集合:https://github.com/westurner/particlewavefluid

    ThreeJS 如果可用会使用 WebGPU,否则回退到 WebGL。

    我还没实现 NS(Navier-Stokes);我应该优先构建 Fedi 的 SQG 和 DDF 模型,即仅用单个涡旋湿度的 GOE Gross-Pitaevskii 方程来模拟黑洞的 Dilatant Dark Fluid。

    我确实做了(ai)审查,并试图从不可压缩流体的新 NS 解中寻找扩展。通过 Madelung 变换,Navier-Stokes 与 Lagrangian 力学之间存在联系;https://news.ycombinator.com/item?id=49637058

    但 SQS 和 DDF 指出,时空的超流体是一种既压缩又不可压缩的膨胀流体(dilatant fluid),并且还有一个第 4 项。到目前为止,我使用了 4x4 范数张量高斯散斑(Gaussian splatters)来量化流体模拟,这似乎是有利的,因为据我理解(FWIU),范数张量在模拟中已经自然地实现了能量守恒。

    同时也在针对有限架构进行模拟优化;

    关于 MU-AV 的第一个版本(C++ 编写)在 ESP32-S3 上运行,搭配 1Hz 的 ePaper 显示屏 […]

同日更多故事

2026-09-18