初始化项目:规划文档 + FFU 洁净室流场实时仿真 Demo

- 规划文档 01-07:愿景 / 架构 / 路线图 / 数据与AI / 风险 / 参考 / FFU Demo
- 演示图:系统架构、数据流水线、里程碑路线图(SVG + PNG)
- FFU Demo:D2Q9 LBM 高保真(360x270, 76s)+ 粗网格快速代理(120x90, 7.3s, 16-27x 加速)
- 趋势验证:速度 r=0.95 / 粒子 r=0.83 / 温度 r=0.68
- 工具链:仿真脚本、快速代理、图表生成器、SVG->PNG 转换
This commit is contained in:
2026-09-18 00:05:18 +08:00
commit 792daa6feb
27 changed files with 9037 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
/**
* SVG -> PNG 批量转换 (resvg, 支持中文系统字体)
*
* npm install # 首次安装依赖
* node tools/svg2png.js # 转换 docs/assets 下全部 svg
* node tools/svg2png.js foo.svg # 只转换指定文件
*/
const fs = require("fs");
const path = require("path");
let Resvg;
try {
({ Resvg } = require("@resvg/resvg-js"));
} catch (e) {
console.error("缺少依赖 @resvg/resvg-js,请先执行: npm install");
process.exit(1);
}
const dir = path.join(__dirname, "..", "docs", "assets");
const args = process.argv.slice(2);
const files = args.length
? args
: fs.readdirSync(dir).filter((f) => f.toLowerCase().endsWith(".svg"));
let ok = 0;
for (const f of files) {
const src = path.join(dir, f);
const dst = src.replace(/\.svg$/i, ".png");
const svg = fs.readFileSync(src, "utf8");
const r = new Resvg(svg, {
fitTo: { mode: "zoom", value: 2 },
font: { loadSystemFonts: true },
background: "#0d1117",
});
fs.writeFileSync(dst, r.render().asPng());
console.log(` ${f} -> ${path.basename(dst)}`);
ok++;
}
console.log(`converted ${ok} file(s)`);