沙漏模拟器开发需求详解
沙漏模拟器开发需求详解
核心目标
开发一个物理精确的沙漏模拟程序,要求在用户设定的时间内精确完成沙子流动,并实现准确的计时功能。
基本功能规格
用户交互
- 输入方式:命令行或简单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库。
代码质量要求
- 详细注释:特别是物理模拟算法部分。
- 模块化设计:便于后续维护和扩展。
- 错误处理:健壮的用户输入验证。
评论已关闭