讲师中心 微信公众号
AI工具推荐 视频效率加速

Matplotlib 原子电子轨道动画:统一实现 8 个方向电子的同步圆周运动

夜雪君_3771

夜雪君_3771

发布时间:2026-02-20 21:46:01

|

582人浏览过

|

来源于php中文网

原创

Matplotlib 原子电子轨道动画:统一实现 8 个方向电子的同步圆周运动

本文详解如何使用 matplotlib.animation.FuncAnimation 实现原子壳层中 N、S、E、W 及四个对角(NE、NW、SE、SW)共 8 个电子的一致、平滑、同速圆周运动,纠正常见坐标变换错误,提供可复用的极坐标→直角坐标映射方案。

本文详解如何使用 `matplotlib.animation.funcanimation` 实现原子壳层中 n、s、e、w 及四个对角(ne、nw、se、sw)共 8 个电子的**一致、平滑、同速圆周运动**,纠正常见坐标变换错误,提供可复用的极坐标→直角坐标映射方案。

在构建原子模型动画时,一个典型误区是为不同方位的电子硬编码独立的坐标更新逻辑(如分别处理 x±r·cos、y±r·sin 等组合),这极易导致对角方向电子轨迹偏离圆形——本质原因是未统一采用标准参数化圆周运动公式:
[ x(\theta) = x_0 + R \cdot \cos(\theta + \phi), \quad y(\theta) = y_0 + R \cdot \sin(\theta + \phi) ]
其中 ( (x_0, y_0) ) 是轨道圆心(此处为原点),( R ) 是轨道半径,( \phi ) 是初始相位角。八个方向对应相位偏移:

  • E(东):( \phi = 0 ) → ( (\cos0, \sin0) = (1, 0) )
  • N(北):( \phi = \pi/2 ) → ( (0, 1) )
  • W(西):( \phi = \pi ) → ( (-1, 0) )
  • S(南):( \phi = 3\pi/2 ) → ( (0, -1) )
  • NE:( \phi = \pi/4 ) → ( (\sqrt{2}/2, \sqrt{2}/2) )
  • NW:( \phi = 3\pi/4 ) → ( (-\sqrt{2}/2, \sqrt{2}/2) )
  • SW:( \phi = 5\pi/4 ) → ( (-\sqrt{2}/2, -\sqrt{2}/2) )
  • SE:( \phi = 7\pi/4 ) → ( (\sqrt{2}/2, -\sqrt{2}/2) )

以下为优化后的完整实现(精简冗余代码,增强可读性与扩展性):

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.animation import FuncAnimation

# 设置画布与轨道参数
fig, ax = plt.subplots(figsize=(6, 6))
ax.set_xlim(-4, 4)
ax.set_ylim(-4, 4)
ax.set_aspect('equal')
ax.axis('off')

R = 3.0  # 轨道半径(简化显示,避免原始代码中过大的 14.5 导致视图溢出)
theta_frames = np.linspace(0, 2*np.pi, 120)  # 动画帧数

# 绘制轨道圆
circle = plt.Circle((0, 0), R, fill=False, color='gray', linewidth=1.2)
ax.add_patch(circle)

# 定义 8 个电子的初始角度(弧度)和颜色
angles_init = np.array([0, np.pi/2, np.pi, 3*np.pi/2,  # E, N, W, S
                        np.pi/4, 3*np.pi/4, 5*np.pi/4, 7*np.pi/4])  # NE, NW, SW, SE
colors = ['red', 'blue', 'green', 'orange', 'purple', 'brown', 'pink', 'cyan']

# 创建 8 个电子散点对象
electrons = []
for i, (angle, color) in enumerate(zip(angles_init, colors)):
    x0 = R * np.cos(angle)
    y0 = R * np.sin(angle)
    point, = ax.plot(x0, y0, marker='o', markersize=6, color=color, zorder=10)
    electrons.append(point)

# 动画更新函数:所有电子同步绕原点旋转
def update(frame):
    # 当前总旋转角度(随帧递增)
    total_angle = frame
    for i, (point, angle_init) in enumerate(zip(electrons, angles_init)):
        # 计算当前时刻位置:圆心(0,0) + 半径R × (cos, sin)含初始相位
        x = R * np.cos(total_angle + angle_init)
        y = R * np.sin(total_angle + angle_init)
        point.set_data(x, y)
    return electrons

# 启动动画
anim = FuncAnimation(fig, update, frames=theta_frames, 
                     interval=50, blit=True, repeat=True)
plt.tight_layout()
plt.show()

✅ 关键改进说明:

  • 统一运动模型:摒弃为每个电子写独立 x_ae/y_ae 表达式的做法,改用标准参数方程,确保所有点严格遵循 (x^2 + y^2 = R^2);
  • 相位解耦设计:将初始方位(angles_init)与动态旋转(total_angle)分离,新增电子只需追加角度与颜色,无需修改 update() 内部逻辑;
  • 视觉优化:使用 plt.Circle 绘制清晰轨道线,blit=True 提升动画性能,zorder=10 确保电子始终显示在轨道上方;
  • 可扩展性强:若需添加更多电子(如 d 轨道的 10 个方向),仅需扩展 angles_init 数组即可。

⚠️ 注意事项:

  • 原始代码中 shell2 = 14.5 导致 set_xlim(-4,4) 无法显示全部内容,务必使绘图范围 ≥ 轨道半径;
  • 避免在 update() 中重复调用 np.cos/np.sin 计算固定值(如 45*0.0174533),应预计算为 np.pi/4;
  • 若需不同转速,可为各电子引入独立角速度系数 omega[i],修改为 x = R * np.cos(omega[i]*frame + angle_init)。

通过此方案,您将获得一个物理意义准确、代码结构清晰、易于维护的原子电子动态模型——所有电子真正“同轨同速”,完美诠释量子壳层的经典可视化表达。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

0

2026.11.06

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

0

2026.11.06

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

0

2026.11.06

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

20

2026.11.05

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

20

2026.11.05

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

20

2026.11.04

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

20

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

20

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

0

2026.11.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn