项目概述
这是一个基于物理引擎的可翻转沙漏模拟器,使用 Python + PyGame + Pymunk 开发。每个沙粒都有独立的物理属性,模拟真实的堆积、流动和碰撞效果。
沙漏模拟器不仅是一个计时工具,更是一个精美的物理模拟演示。支持 180 度翻转动画,计时精度可控制在±1% 以内。采用 PI 流量控制器,确保沙子流速均匀稳定。
↑ 实际运行效果演示(9000 粒子 + 180 度翻转)
核心功能
物理模拟
- 9000 个独立沙粒的实时物理计算
- 真实的堆积、流动、碰撞效果
- 可调节的摩擦力、弹性、重力参数
- 粒子状态管理(4 种状态)
翻转动画
- 180 度平滑翻转动画
- 翻转过程中保持物理模拟
- 粒子位置和速度的精确转换
- 支持手动和自动翻转
精确计时
- 10-1800 秒可调计时范围
- PI 控制器精确控制流量
- 实时进度显示和剩余时间
- 计时精度 ±1%
交互控制
- 键盘/鼠标双重控制
- 开始、暂停、重置功能
- 响应式 UI 和视觉特效
- 玻璃质感和粒子高光
技术实现
架构设计
- MVC 架构:模型 - 视图 - 控制器分离
- 粒子状态机:UPPER / FLOWING / FALLING / LOWER 四种状态
- PI 流量控制器:KP=0.5, KI=0.05,精确控制沙子流速
- 对象池技术:优化内存管理
物理引擎
- Pymunk:专业 2D 物理引擎,基于 Chipmunk
- 刚体模拟:每个沙粒都是独立的刚体
- 碰撞检测:精确的粒子 - 墙壁、粒子 - 粒子碰撞
- 摩擦力/弹性:可调节的物理参数
技术栈
Python 3.9+
PyGame 2.5+
Pymunk 6.0+
物理模拟
2D 图形渲染
项目亮点
- 真实物理效果:每个沙粒独立模拟,展现真实的堆积和流动效果
- 精确计时算法:PI 控制器确保计时精度在±1% 以内
- 精美视觉效果:玻璃质感、沙粒高光、流畅动画
- 高性能优化:9000 粒子稳定 60FPS
- 完整交互体验:键盘/鼠标双重控制,操作流畅
运行方法
环境要求
- Python 3.9 或更高版本
- PyGame 2.5+
- Pymunk 6.0+
安装依赖
pip install pygame pymunk
运行程序
python bestShaLou.py