# 物理电场模拟 **Repository Path**: LiamB/physical-monomer-simulation ## Basic Information - **Project Name**: 物理电场模拟 - **Description**: 这是一个基于Pygame和Pymunk开发的物理单体模拟系统,主要用于模拟电场和带电粒子在电场中的运动轨迹。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-13 - **Last Updated**: 2025-10-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 物理电场模拟系统 一个基于Python的交互式电场模拟系统,用于可视化电场分布和带电粒子运动。该系统支持实时电场线绘制、多电荷源管理、粒子轨迹追踪等高级功能。 ## ✨ 主要功能 ### 🔋 电场源管理 - **多电荷源支持**:创建、移动、删除正负电荷源 - **实时参数调整**:动态修改电荷量、位置坐标 - **可视化标识**:正负电荷用不同图标显示 - **爆炸动画**:删除电荷源时的粒子爆炸效果 ### ⚡ 电场线可视化 - **物理准确**:基于库仑定律的精确电场计算 - **曲线绘制**:真实的曲线电场线,非直线近似 - **方向指示**:箭头显示电场方向 - **密度映射**:电场线密度反映电场强度 - **一键切换**:支持显示/隐藏电场线 ### 🎯 粒子运动模拟 - **实时轨迹**:平滑的粒子运动轨迹绘制 - **参数显示**:实时显示粒子位置、速度、电荷量 - **边界处理**:粒子出界自动重置 - **力场计算**:基于叠加原理的电场力计算 ### 🎮 交互界面 - **直观操作**:点击、双击、拖拽操作 - **信息面板**:详细的电场源参数显示 - **动画效果**:流畅的界面动画和过渡 - **中文支持**:完整的中文界面 ## 🛠️ 技术栈 - **Python 3.8+** - 核心开发语言 - **Pygame** - 2D图形渲染和用户界面 - **Pymunk** - 物理引擎,粒子运动模拟 - **pygame_gui** - 高级UI组件库 - **NumPy** - 数值计算支持 ## 📦 安装指南 ### 环境要求 - Python 3.8 或更高版本 - pip 包管理工具 ### 快速开始 1. **克隆项目** ```bash git clone cd Physics ``` 2. **安装依赖** ```bash pip install -r requirments.txt ``` 3. **运行程序** ```bash python main.py ``` ## 🎯 使用说明 ### 基本操作 | 操作 | 说明 | |------|------| | **单击电荷源** | 显示详细信息面板 | | **双击电荷源** | 进入拖拽模式,可移动电荷源 | | **再次双击** | 确认新位置 | | **右键** | 显示创建电荷源菜单 | | **点击"电场线"按钮** | 切换电场线显示/隐藏 | ### 参数调整 - **位置修改**:在信息面板输入框中输入坐标 `(x,y)` - **电荷量调整**:使用滑块调整电荷大小 - **复制电荷源**:点击"复制"按钮 - **删除电荷源**:点击"删除"按钮 ### 观察模式 - **粒子轨迹**:程序自动绘制粒子运动轨迹 - **电场线**:点击按钮显示/隐藏电场线 - **参数监控**:实时显示粒子位置和速度 ## 📁 项目结构 ``` Physics/ ├── main.py # 主程序文件 ├── config.py # 配置文件 ├── requirments.txt # 项目依赖 ├── theme.json # UI主题配置 ├── img/ # 图片资源 │ ├── Pcharge.png # 正电荷图标 │ ├── Ncharge.png # 负电荷图标 │ ├── left.png # 左箭头图标 │ ├── left_blue.png # 左箭头蓝色版本 │ ├── right.png # 右箭头图标 │ └── right_blue.png # 右箭头蓝色版本 └── font/ # 字体资源 └── font.ttf # 中文字体文件 ``` ## ⚙️ 配置说明 ### config.py 参数 ```python # 静电力常量 k = 8.987551e9 # 初始电荷源配置 [x坐标, y坐标, 电荷量] SourcePosArr = [ [470, 40, 10], # 正电荷 [470, 240, 10], # 正电荷 [470, 440, 10], # 正电荷 [270, 40, 10], # 正电荷 [270, 240, 10], # 正电荷 [270, 440, 10], # 正电荷 [70, 40, -10], # 负电荷 [70, 240, -10], # 负电荷 [70, 440, -10], # 负电荷 [200, 300, -30] # 大负电荷 ] ``` ## 🔬 物理原理 ### 电场计算 - **库仑定律**:E = kQ/r² - **叠加原理**:多电荷系统的电场为各电荷电场的矢量和 - **数值积分**:使用数值方法追踪电场线 ### 粒子运动 - **洛伦兹力**:F = qE - **牛顿第二定律**:F = ma - **实时积分**:使用物理引擎计算粒子轨迹 ## 🎨 视觉效果 - **电场线**:青色曲线,带方向箭头 - **正电荷**:红色图标,向外发散的电场线 - **负电荷**:蓝色图标,向内汇聚的电场线 - **粒子轨迹**:红色轨迹线 - **动画效果**:电荷源周围的电子旋转动画 ## 🚀 高级功能 ### 电场线算法 - **数值积分追踪**:沿电场方向逐步移动 - **自适应步长**:根据电场强度调整计算精度 - **边界处理**:智能处理屏幕边界和电荷源附近 - **性能优化**:定期重新计算,避免卡顿 ### 物理引擎集成 - **Pymunk物理引擎**:精确的力学模拟 - **碰撞检测**:边界碰撞处理 - **力场应用**:实时电场力计算 - **轨迹记录**:平滑轨迹绘制 ## 🐛 故障排除 ### 常见问题 1. **程序无法启动** - 检查Python版本(需要3.8+) - 确认所有依赖已安装:`pip install pygame pymunk pygame_gui` 2. **字体显示异常** - 确保`font/font.ttf`文件存在 - 检查字体文件是否损坏 3. **电场线不显示** - 点击右下角"电场线"按钮 - 检查电荷源是否正确创建 4. **性能问题** - 减少电场线密度 - 关闭不必要的视觉效果 ## 📈 性能优化 - **智能计算**:电场线定期重新计算(1秒间隔) - **步长优化**:平衡精度和性能 - **边界检测**:避免无效计算 - **内存管理**:轨迹点队列限制 ## 🤝 贡献指南 欢迎提交Issue和Pull Request! ### 开发环境设置 ```bash # 安装开发依赖 pip install -r requirments.txt # 运行测试 python test_.py ``` ## 📄 许可证 MIT License - 详见 [LICENSE](LICENSE) 文件 ## 👨‍💻 作者 **Liam Wu** - 项目创建者和主要开发者 ## 📅 项目时间线 - **开始日期**:2025年9月30日 - **当前版本**:v2.0(支持电场线可视化) - **最后更新**:2025年10月21日 ## 🙏 致谢 感谢以下开源项目: - [Pygame](https://www.pygame.org/) - 2D游戏开发库 - [Pymunk](http://www.pymunk.org/) - 2D物理引擎 - [pygame_gui](https://github.com/MyreMylar/pygame_gui) - GUI组件库 --- **享受物理模拟的乐趣!** 🎉