沙漏模拟器开发需求详解

核心目标

开发一个物理精确的沙漏模拟程序,要求在用户设定的时间内精确完成沙子流动,并实现准确的计时功能。

基本功能规格

用户交互

  • 输入方式:命令行或简单GUI输入倒计时时间(秒)。
  • 时间控制:程序根据输入时间自动计算并控制沙子流速。
  • 完成精度:沙子必须在指定时间内精确流完。

初始状态配置

  • 沙漏上部容器初始填充4/5容量的沙子。
  • 根据设定时间自动计算颈部通道宽度。
  • 示例:1200粒沙子,10分钟 → 每秒2粒;8分钟 → 每秒2.5粒。

物理模拟技术要求

沙子流动物理

  • 重力驱动:遵循标准重力加速度9.81 m/s²。
  • 流体力学:使用托里切利定律 Q = Cd × A × √(2gh) 计算流量。
  • 流速变化:模拟真实流速变化(开始快 → 结束慢)。
  • 阻力效应:考虑空气阻力和沙子颗粒间摩擦。

沙子堆积行为

  • 安息角特性:下部沙堆形成30-35度自然圆锥形。
  • 随机微运动:模拟真实沙子的不稳定特性。
  • 表面效果:实现适当的纹理和阴影视觉效果。

碰撞物理

  • 粒子碰撞:下落的沙子与堆积沙子发生弹性碰撞。
  • 动量守恒:使用冲量-动量定理。
  • 坡面滑动:碰撞后沙子沿坡面滑动到稳定位置。
  • 摩擦效应:考虑静摩擦和动摩擦系数。

可视化要求

渲染技术

  • 实时动画:使用适合的Python库(Matplotlib/Pygame/PyBullet)。
  • 粒子系统:至少数百个粒子保证视觉效果。
  • 帧率要求:60FPS流畅动画。

视觉区分

  • 颜色编码

    • 上部静止沙子:金色
    • 流出中的沙子:黄色
    • 下落中的沙子:红色
    • 下部静止沙子:橙色
  • 容器轮廓:清晰显示上下锥形容器和颈部连接。
  • 实时信息:显示剩余时间、粒子统计等。

技术实现要点

核心算法

  • 离散元素法(DEM):用于颗粒物质模拟。
  • 碰撞检测系统:高效的粒子间相互作用处理。
  • 流量控制算法:基于时间的智能颈部宽度计算。

性能优化

  • 粒子数量:1200个沙粒。
  • 碰撞优化:只检测运动粒子的高效算法。
  • 内存管理:优化的粒子数据存储。

参数可调性

  • 沙子粘度、颗粒大小、安息角等物理参数。
  • 重力系数、摩擦系数等模拟参数。
  • 可视化参数和性能设置。

平台要求

  • 操作系统:macOS完美兼容。
  • 运行环境:标准Python环境。
  • 依赖库:跨平台兼容的Python库。

代码质量要求

  • 详细注释:特别是物理模拟算法部分。
  • 模块化设计:便于后续维护和扩展。
  • 错误处理:健壮的用户输入验证。

标签: none

评论已关闭