# 某数字孪生 **Repository Path**: mobuhan/a-digital-twin ## Basic Information - **Project Name**: 某数字孪生 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-09-28 - **Last Updated**: 2026-10-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 商场室内导航 · 数字孪生 单文件(零依赖、可离线)三维室内地图,基于参考楼层平面图画成 1F/2F/3F 三层体量模型。 直接双击 `index.html` 或部署任意静态服务器即可使用。 ## 功能 - **楼层切换**:1F / 2F / 3F,默认停在 1F;非当前层以线框"幽灵层"显示,保持空间关系。 - **2D / 3D 切换**:两种视角各自记忆缩放与平移,互不覆盖。 - **自由旋转(重点)**:进入 3D 后 - 单指 / 单鼠标拖动 → 左右旋转 + 上下俯仰(俯仰限制在 0–83°,可转到正俯视与近平视) - 双指 → 平移 + 捏合缩放;滚轮 → 以光标为锚点缩放 - Shift+拖动 / 鼠标右键拖动 → 平移;方向键 ← → ↑ ↓ → 微调角度 - 底部 `⟲ ▲ ▼ ⟳` 按钮支持点按与长按连续旋转,`复位` 回到初始机位 - **点击导航**:点两处生成起点 A、终点 B 与导航连线;自动规划同层/跨层路线(A* + 10 单位网格,跨层走扶梯或电梯,含绕开中庭洞口、不可穿墙、不斜穿拐角)。 - **模拟导航**:小人在路线上按真实速度行走,经过扶梯/电梯时做跨层升降动画,楼层标签与视角自动跟随,到点提示"已到达"。 - **辅助信息**:步列表(含距离与换乘次数)、比例尺、图例(可折叠、可按图层开关)、POI 图标。 ## 实现要点 - 自研轨道相机:`rotV()` 做 yaw/pitch 旋转,`proj()` 投影,`unproj()` 解析求屏幕点与楼层平面的交点,因此任意角度下点击选点都精确。 - 渲染用画家算法:楼层与色块体按深度排序,配合背面剔除(`facing()` / `planNormal()`),任意视角遮挡关系正确。 - 路径按楼层切段后再做 Douglas-Peucker 抽稀,避免跨层折线被压平。 - 全部交互用 Pointer Events 统一处理,触屏与鼠标一致;`touch-action:none` 防页面滚动干扰。 ## 说明 几何、色块位置与参考图对应:左侧矩形中庭、右侧不规则中庭、中部交通核(2 组扶梯 + 2 部电梯)以及各层主力店/餐饮/连廊/商铺/绿化分布。