物理沙漏模拟器

基于 Pymunk 物理引擎的 9000 粒子精确计时模拟器

物理模拟 游戏开发 粒子系统 Python PyGame Pymunk
返回应用列表

项目概述

这是一个基于物理引擎的可翻转沙漏模拟器,使用 Python + PyGame + Pymunk 开发。每个沙粒都有独立的物理属性,模拟真实的堆积、流动和碰撞效果。

沙漏模拟器不仅是一个计时工具,更是一个精美的物理模拟演示。支持 180 度翻转动画,计时精度可控制在±1% 以内。采用 PI 流量控制器,确保沙子流速均匀稳定。

沙漏模拟器运行演示

↑ 实际运行效果演示(9000 粒子 + 180 度翻转)

核心功能

物理模拟

  • 9000 个独立沙粒的实时物理计算
  • 真实的堆积、流动、碰撞效果
  • 可调节的摩擦力、弹性、重力参数
  • 粒子状态管理(4 种状态)

翻转动画

  • 180 度平滑翻转动画
  • 翻转过程中保持物理模拟
  • 粒子位置和速度的精确转换
  • 支持手动和自动翻转

精确计时

  • 10-1800 秒可调计时范围
  • PI 控制器精确控制流量
  • 实时进度显示和剩余时间
  • 计时精度 ±1%

交互控制

  • 键盘/鼠标双重控制
  • 开始、暂停、重置功能
  • 响应式 UI 和视觉特效
  • 玻璃质感和粒子高光

控制方式

空格

开始/暂停计时

F

翻转沙漏

R

重置沙漏

鼠标

点击按钮操作

技术实现

架构设计

  • 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 图形渲染

项目亮点

运行方法

环境要求

  • Python 3.9 或更高版本
  • PyGame 2.5+
  • Pymunk 6.0+

安装依赖

pip install pygame pymunk

运行程序

python bestShaLou.py

相关资源