一个用于模拟和验证资源查询的 3D 可视化工具。通过在三维空间中建立中心点和资源球的空间关系,直观验证基于权重的资源定位算法。
在实际的资源查询系统中,资源的位置往往无法直接观测,但可以通过多个已知锚点(中心点)与资源的关联强度来推算。本工具将这个过程可视化:
- 建模:在 3D 空间中放置中心点作为已知锚点
- 关联:创建资源球,指定其与各中心点的关联权重
- 计算:系统通过加权平均算法自动推算资源球的空间坐标
- 验证:在 3D 场景中直观检查资源球的位置和范围是否合理
- 创建中心点,指定名称和 (x, y, z) 坐标
- 删除中心点(自动级联清理受影响的资源球)
- 点击列表项在 3D 场景中高亮定位
- 创建资源球,指定名称和模长(半径)
- 关联 2 个及以上中心点,设置各关联的权重
- 实时预览计算坐标,确认后添加
- 修改权重和模长,自动重新计算坐标
- 删除资源球
- 中心点以红色圆点显示
- 资源球以青色半透明球体显示,模长决定球的大小
- 虚线连接资源球与其关联的中心点,直观展示关联关系
- 支持鼠标拖拽旋转、滚轮缩放、右键平移
- 坐标轴(红X、绿Y、蓝Z)和网格辅助空间定位
- 所有数据自动保存到 SQLite 数据库
- 刷新页面数据不丢失
# 安装依赖
uv sync
# 启动服务
uv run fastapi dev app/main.py
# 浏览器打开
# http://localhost:8000使用加权平均法,权重自动归一化:
pos = Σ(weight_i × center_i) / Σ(weight_i)
示例:中心点 A(0,0,0) 权重 0.7,中心点 B(5,0,3) 权重 0.3
→ 资源球坐标 = (0.7×0 + 0.3×5, 0, 0.7×0 + 0.3×3) / 1.0 = (1.5, 0, 0.9)
- 后端:Python + FastAPI + SQLite
- 前端:Three.js + 原生 HTML/CSS/JS
- 包管理:uv
app/
main.py # FastAPI 入口
api.py # REST API 路由
models.py # 数据模型
database.py # SQLite 数据库
calc.py # 坐标计算
static/
index.html # 主页面
style.css # 样式
app.js # 3D 场景 + 交互逻辑
three.min.js # Three.js 库
OrbitControls.js # 轨道控制器