santi-human-computer

三体人列计算机 3D 模拟器,在浏览器中交互呈现大规模人列计算想象。

santi-human-computer 项目封面或真实界面
TypeScript主要技术栈
0GitHub Stars
0Forks
258索引文件
MIT License许可标记
2026-08-28最近更新

01 / PROJECT OVERVIEW

项目研究解读

三体人列计算机 3D 模拟器,在浏览器中交互呈现大规模人列计算想象。 本仓库以 TypeScript 为主要技术栈,当前快照索引 258 个文件。报告依据README 与目录结构整理,重点呈现项目用途、工程结构和复用方式,不把宣传描述等同于验证结论。

reactsimulationthreejstypescriptwebgl3dcomputeremulatorgamethree-bodythree-body-problemthree-body-simulationthree-body-technology

02 / CORE CAPABILITIES

值得关注的能力

  1. 01

    围绕“三体人列计算机 3D 模拟器,在浏览器中交互呈现大规模人列计算想象”提供公开实现或研究资料

  2. 02

    以 TypeScript 为主,保留 258 个可检查仓库文件

  3. 03

    提供原始 GitHub 链接、目录导览和本地研究快照,便于复核与二次开发

03 / ENGINEERING

工程与仓库结构

仓库以 TypeScript 为主要实现语言,研究快照包含 258 个文件、6 个主要顶层入口。已提供 README 作为使用与能力说明。 项目最近更新时间为 2026-08-28,许可标记为 MIT License。

01LICENSE

项目文件与实现资料

02README.md

项目文件与实现资料

03app

应用入口与界面实现

04docs

设计文档、研究记录或项目配图

05info.md

项目文件与实现资料

06plan.md

项目文件与实现资料

04 / USE CASES

适合用在哪里

  • 学习项目设计与实现
  • 评估后用于二次开发
  • 作为相关领域的研究参考

05 / QUICK START

从仓库开始

以下命令摘自项目 README 或根据仓库地址生成。请先阅读源仓库的安装要求、许可和脚本,再在自己的环境中运行。

cd app
npm install
npm run dev

06 / REPOSITORY MAP

目录证据导览

这里列出快照中的前 258 个索引文件中的代表路径,帮助你快速定位源码、文档、测试与资源。

  • .github/workflows/deploy-pages.yml
  • LICENSE
  • README.md
  • app/.gitignore
  • app/README.md
  • app/components.json
  • app/eslint.config.js
  • app/index.html
  • app/info.md
  • app/package-lock.json
  • app/package.json
  • app/postcss.config.js
  • app/public/ground-rammed-earth.jpg
  • app/public/logo-seal.svg
  • app/public/models/bird-proto-front.jpg
  • app/public/models/bird-proto-side.jpg
  • app/public/models/bird-proto-top.jpg
  • app/public/models/bird-proto.glb
  • app/public/models/cloud-proto-front.jpg
  • app/public/models/cloud-proto-side.jpg
  • app/public/models/cloud-proto-top.jpg
  • app/public/models/drum-proto-front.jpg
  • app/public/models/drum-proto-side.jpg
  • app/public/models/drum-proto-top.jpg
  • app/public/models/drum-proto.glb
  • app/public/models/emperor-proto-back.jpg
  • app/public/models/emperor-proto-front.jpg
  • app/public/models/emperor-proto-side.jpg
  • app/public/models/emperor-proto.glb
  • app/public/models/flag-blue-proto-back.jpg
  • app/public/models/flag-blue-proto-front.jpg
  • app/public/models/flag-blue-proto-side.jpg
  • app/public/models/flag-red-proto-back.jpg
  • app/public/models/flag-red-proto-front.jpg
  • app/public/models/flag-red-proto-side.jpg
  • app/public/models/grass-billboard-front.png
  • app/public/models/grass-billboard-side.png
  • app/public/models/grass-proto-front.jpg
  • app/public/models/grass-proto-side.jpg
  • app/public/models/grass-proto-top.jpg
  • app/public/models/ground-proto-close.jpg
  • app/public/models/ground-proto-tile.jpg
  • app/public/models/ground-proto-yard.jpg
  • app/public/models/mallet-proto-end.jpg
  • app/public/models/mallet-proto-front.jpg
  • app/public/models/mallet-proto-side.jpg
  • app/public/models/proto-spec.json
  • app/public/models/qin-proto-back.png
  • app/public/models/qin-proto-front.png
  • app/public/models/qin-proto-head.png
  • app/public/models/qin-proto.glb
  • app/public/models/qin-soldier-army.glb
  • app/public/models/qin-soldier.glb
  • app/public/models/sign-proto-back.jpg
  • app/public/models/sign-proto-front.jpg
  • app/public/models/sign-proto-side.jpg
  • app/public/models/sky-proto-horizon.jpg
  • app/public/models/sky-proto-panorama.jpg
  • app/public/models/sky-proto-zenith.jpg
  • app/public/models/tent-proto-back.jpg
  • app/public/models/tent-proto-front.jpg
  • app/public/models/tent-proto-side.jpg
  • app/public/models/tent-proto.glb
  • app/public/models/torch-proto-front.jpg
  • app/public/models/torch-proto-side.jpg
  • app/public/models/torch-proto-top.jpg
  • app/public/models/tower-cmd-proto-front.jpg
  • app/public/models/tower-cmd-proto-side.jpg
  • app/public/models/tower-cmd-proto-top.jpg
  • app/public/models/tower-cmd-proto.glb
  • app/public/models/tower-drum-proto-front.jpg
  • app/public/models/tower-drum-proto-side.jpg
  • app/public/models/tower-drum-proto-top.jpg
  • app/public/models/tower-drum-proto.glb
  • app/public/models/tree-billboard-front.png
  • app/public/models/tree-billboard-side.png
  • app/public/models/tree-proto-front.jpg
  • app/public/models/tree-proto-side.jpg
  • app/public/models/tree-proto-top.jpg
  • app/public/models/vonneumann-proto-back.jpg
  • app/public/models/vonneumann-proto-front.jpg
  • app/public/models/vonneumann-proto-side.jpg
  • app/public/models/vonneumann-proto.glb
  • app/public/paper-grain.jpg
  • app/public/principle-hero.png
  • app/public/sky-day.jpg
  • app/public/story-illustration.png
  • app/scripts/bake-qin-albedo.py
  • app/scripts/blender_fix_qin_face.py
  • app/scripts/blender_mcp_ping.py

07 / SOURCE NOTES

README 原文摘录

保留原始说明便于复核。中文研究结论以当前快照为依据,后续变化请以 GitHub 仓库为准。

[图片] 演算场全景:说文解字小篆标题,十位军令九百三十二卒持红蓝旗

十位军令 · 九百三十二卒 · 鼓点翻旗

人列计算机

《三体》里,秦始皇用三千万士兵组成人列计算机。这里把它缩进浏览器:每位士兵是一扇逻辑门,红旗 = 1,蓝旗 = 0。鼓点一响,全阵同时翻旗,把 (A + B) × C 算完。

Human-Array Computer Qin-dynasty soldiers as gates. Red flag = 1, blue flag = 0.

In The Three-Body Problem, Qin Shi Huang builds a computer from thirty million soldiers. This shrinks that field into a browser: each soldier is a gate (AND / OR / XOR / NOT). A drumbeat, and the whole array flips at once.

  • Default campaign — unsigned 10-bit (A + B) × C: 932 gates / 62 ticks / 21-bit output. Example (1013 + 1012) × 1001 = 2027025. Widths 10 / 16 / 32; at most three binary ops; output ≤ 65 bits. Flags are live truth values, not a JavaScript result played back as animation.
  • Program mode — one fixed CPU field (registers, add / sub / mul / div, and compare, all standing). Instructions activate units; they do not rebuild the army. 10-bit: 2266 gates. (A+B)*C is add, then mul.
  • Live — open the yard · v1.3

打开演算场 · v1.3 · 原理 · 阵图 · 点验

标题「人列計算機」用说文解字小篆;界面与正文用黄令东齐伋体。士兵是逻辑门,旗帜是真值——没有「JS 先算完再回放」。

机位 1–6

热键 1–6 切到演算场预设机位(真模:监军台、鼓台、营帐、始皇与冯诺依曼)。

1 全景2 俯瞰
[图片] 1 全景[图片] 2 俯瞰
3 注入列4 鼓台
[图片] 3 注入列[图片] 4 鼓台
5 輸出端6 監軍台
[图片] 5 輸出端[图片] 6 監軍台

在线演示

页面GitHub Pages
演算场https://suifei.github.io/santi-human-computer/
原理https://suifei.github.io/santi-human-computer/principle
阵图https://suifei.github.io/santi-human-computer/formation
點驗https://suifei.github.io/santi-human-computer/asset

左键旋转、右键平移、滚轮缩放;点士兵看指令卡。空格 击鼓,1–6 换机位,F 跟随信号。横屏更好看。

默认军令

无符号 10 位 (A + B) × C:932 门 / 62 拍 / 21 位输出。例 (1013 + 1012) × 1001 = 2027025。甲乙丙各 0–1023。注入后击鼓,红蓝旗从南往北翻到输出手。

位宽可选 10 / 16 / 32;军令最多 3 个二元运算,输出不超过 65 位。一条表达式铺一张专用网表(A+B、A×B、(A+B)×C …)。

信号南 → 北:输入手 001–030 → 加法阵 → 部分积 → 移位累加 → 输出手 901–921。DONE 旗举红即算完。

程序档

一张固定 CPU:寄存器、加减乘除、比较同时列阵。指令只激活对应部件,不按语句换整支军队。(A+B)*C 拆成微操作:先加再乘。10 位 2266 门;比较 / 加 / 减三列贴中,乘与除并排在南。

写赋值、if、while;值仍由士兵翻旗算出。循环请用较小的乙 B。

[图片] 程序档:2266 门固定 CPU 人海

[图片] 程序档近景:秦卒持「零」旗

本地运行

工程在 app/。需要 Node.js 18+。

cd app
npm install
npm run dev

浏览器打开 http://localhost:3000(与线上同一套页面)。端口占用时可 npm run dev -- --host --port 5175。

npm run build      # 类型检查 + 生产构建
npm run preview    # 预览 dist

若 npm install 因锁文件里的旧镜像失败,用:

npm install --replace-registry-host=always --registry https://registry.npmmirror.com

网表在 app/src/sim/netlist.ts,与 DOM / Three 解耦。npm run verify:netlist 抽检默认编制;npm run verify:program 用同一张 CPU 网表抽检程序档。

版本

当前发布 v1.3。推送到 main 会自动构建并发布到 GitHub Pages。

Vite 7 · React 19 · TypeScript · Three.js / React Three Fiber · Zustand · Tailwind。人与旗共用一套 InstancedMesh,下标即 gate.index。默认 932 人一批绘制;程序档 10 位 2266 人同样一批。

许可证 / License

以 MIT 许可证 发布。 Released under the MIT License.