Skip to content

About

3D resource space visualization with FastAPI + Three.js

Resources

Stars

1 star

Watchers

1 watching

Forks

Latest commit

 

History

20 Commits

Folders and files

Repository files navigation

3D Resource Space

一个用于模拟和验证资源查询的 3D 可视化工具。通过在三维空间中建立中心点和资源球的空间关系,直观验证基于权重的资源定位算法。

用途

在实际的资源查询系统中,资源的位置往往无法直接观测,但可以通过多个已知锚点(中心点)与资源的关联强度来推算。本工具将这个过程可视化:

  1. 建模:在 3D 空间中放置中心点作为已知锚点
  2. 关联:创建资源球,指定其与各中心点的关联权重
  3. 计算:系统通过加权平均算法自动推算资源球的空间坐标
  4. 验证:在 3D 场景中直观检查资源球的位置和范围是否合理

功能

中心点管理

  • 创建中心点,指定名称和 (x, y, z) 坐标
  • 删除中心点(自动级联清理受影响的资源球)
  • 点击列表项在 3D 场景中高亮定位

资源球管理

  • 创建资源球,指定名称和模长(半径)
  • 关联 2 个及以上中心点,设置各关联的权重
  • 实时预览计算坐标,确认后添加
  • 修改权重和模长,自动重新计算坐标
  • 删除资源球

3D 可视化

  • 中心点以红色圆点显示
  • 资源球以青色半透明球体显示,模长决定球的大小
  • 虚线连接资源球与其关联的中心点,直观展示关联关系
  • 支持鼠标拖拽旋转、滚轮缩放、右键平移
  • 坐标轴(红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  # 轨道控制器

About

3D resource space visualization with FastAPI + Three.js

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages