Skip to content

Repository files navigation

物理动起来

高中物理在线刷题平台:在线做题 + 知识点训练 + 错题复习 + 模拟考试, 确定性物理动画作为辅助理解模块(抽屉式展开,不占做题版面)。

  • 题库:知识点树形侧栏(一级/二级分类)+ 紧凑列表 + 筛选(年份/省份/题型/难度/做题状态/收藏/动画/掌握)+ 分页 + 顺序/随机/错题/按难度练习
  • 做题页:左侧原题与作答(约 65%),右侧答题卡/收藏标记/动画/提示/解析入口(约 35%);提交后展示判定、标准答案、分步解析与易错点
  • 专项训练:知识点介绍 + 公式总结 + 常见题型 + 易错点,基础 → 进阶 → 综合训练顺序
  • 错题本:自动收录,按知识点分组,重做/查看上次答案/标记已掌握
  • 模拟考试:按知识点/年份/难度组卷,限时 + 答题卡 + 自动交卷 + 薄弱知识点分析
  • 学习进度:按知识点的进度、正确率与掌握度(记录存本地浏览器 localStorage)

运行

npm install
npm run dev        # 开发服务器
npm run build      # 生产构建(约 160 个静态页面)
npm test           # 73 个测试:求解器/场景/平台逻辑(判分、知识点归类)
npm run typecheck  # TypeScript strict 检查

架构(分层)

src/
├─ physics/                 # Physics Core(纯 TS,不依赖 React)
│  ├─ core/                 #   一维分段解析解、路径几何、RK4 固定步长积分
│  ├─ solvers/              #   13 个求解器:运动学/动力学/轨道/碰撞/弹簧/传送带/
│  │                        #   浮力/波/光学/带电粒子/电磁感应/热学/电路
│  └─ validation/           # Validation Layer:守恒律、事件顺序、答案一致性检查
├─ sim/                     # Renderer 数据层
│  ├─ builders/             #   10 个场景构建器 → SimResult(帧、阶段、事件、图表、验证)
│  └─ registry.ts           #   builder 注册表(题目配置只引用名字+参数)
├─ content/                 # Question Content Layer
│  ├─ types.ts              #   PhysicsQuestion 数据结构 + 发布门槛 deriveStatus
│  ├─ taxonomy.ts           #   知识点分类树(一级/二级)+ 题目自动归类 + 训练知识内容
│  ├─ demos/                #   10 个自研教学案例(完整闭环,全部通过自动验证)
│  ├─ questions/            #   真题内容(含来源、校对状态、答案出处)
│  │                        #   zhejiang.ts(浙江 6 月)/ zhejiang-january.ts(浙江 1 月首考)
│  │                        #   national.ts(山东、广东、全国卷等)
│  └─ catalog.ts            #   多省份 × 场次(1月/6月)× 年份的试卷目录(状态如实)
├─ lib/practice.ts          # 做题状态层:记录/收藏/掌握/练习队列(localStorage)
├─ components/              # UI Layer(React 只做渲染,不做物理计算)
│  ├─ nav/  bank/  exam/    #   顶部导航、题库(侧栏+列表)、模拟考试
│  ├─ topics/  progress/    #   知识点总览、专项训练、学习进度
│  ├─ practice/             #   做题页、答题输入与判分、动画抽屉、错题本、收藏
│  ├─ scene/                #   SVG 场景渲染器(简笔画风格)
│  ├─ player/               #   播放器(播放/暂停/单步/倍速/时间轴/事件标记)
│  ├─ charts/               #   x-t/v-t/a-t 图 + 能量柱状图(与动画同源同步)
│  └─ question/             #   解析步骤/公式/物理量面板(与动画双向同步)
└─ app/                     # 页面:/ /bank /topics /training /wrongbook
                            #       /favorites /exam /progress /question/[id] /admin

关键原则:

  • 确定性物理:解析解优先;数值场景(单摆、圆轨道)用固定步长(1/1200 s), 绝不用浏览器帧率当物理步长。rAF 只驱动"显示时间"。
  • 单一状态源:动画、公式、物理量、图表、能量条全部读取同一份预计算 SimResult
  • 解析↔动画同步:每个解析步骤绑定阶段(bindPhase)或事件(bindEvent), 点击步骤跳转动画,播放时自动高亮当前步骤与图表区间。
  • 配置化加题:新题 = 内容文件(题面/答案/解析/绑定)+ builder 参数,不改页面代码。
  • 诚实状态:发布门槛(原题已核对+答案已验证+解析已审校+动画已验证+模拟与答案一致+授权允许) 由 deriveStatus 强制推导;验证失败会在页面显著提示且无法标记"已完成"。

当前内容状态(如实)

  • 10 个自研教学案例:完整闭环,自动验证全部通过(斜面、刹车、平抛、单摆、弹性碰撞、 传送带、圆轨道脱轨、波叠加、折射/全反射、带电粒子入磁场)。
  • 题库按题型分区展示(单选/多选/计算/实验/组合),支持省份、场次(1月/6月)、年份等筛选。
  • 浙江 6 月选考(2021–2025 候选题 73 张卡片):
    • zj-2021-06-19 机动车礼让行人、zj-2022-06-19 物流滑轨 —— 完整实现(带参考答案的公开转录 PDF,经独立验算)
    • zj-2024-06-03 水流导光 —— 完整实现;zj-2024-06-18 弹射游戏装置 —— 原题待校对、动画待制作
    • 其余 —— 原题待录入(占位卡片,不伪装完成)
  • 浙江 1 月首考(2023–2025):5 道详细题(逐字转录自公开文字版,答案经独立验算), 其中平抛入桶、旋转测折射率 2 题配动画;其余候选题占位待录入。
  • 山东 / 广东 / 全国乙卷(2023):
    • 山东第 6 题(公交车三点问题,配动画)、第 15 题(电磁炮,斜抛求解器待制作)
    • 广东第 10 题(窗帘滑块碰撞)、第 15 题(药品传送系统,传送带阶段配动画)
    • 全国乙卷第 34 题(机械波,图像数值待原卷复核)及 2 道待录入锚点
  • 真题题面均转录自公开文字版/试卷 PDF 文本层并注明来源,建议获取官方原卷后二次人工复核; 校对状态由 deriveStatus 如实展示。

已知边界 / 下一步

  • 原卷模式(PDF 区域截图)未接入,题面目前只有"高清重排"模式。
  • 实验题作答(仪器选择/连线/描点)未实现。
  • 后台的 PDF 框选、OCR、审校工作流为规划中,后台当前提供状态总览与验证报告。
  • 弹簧、电磁感应、热学、电路已有求解器与单元测试,对应动画场景待制作。

About

物理动起来:确定性物理内核 + 交互式教学案例 + 浙江高考真题可视化

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages