Python 3D 爱心与玫瑰动画代码保存及运行指南
### 步骤说明 要将这段代码保存到记事本并打开运行,你可以按照以下步骤操作: #### 1. 保存代码到记事本 打开一个文本编辑器(如 Windows 自带的记事本),将以下修正后的代码复制粘贴进去: ```python import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import matplotlib.animation as animation # 生成爱心的坐标 def heart_coords(t): # 原代码此处有错误,应为 ** 3 x = 16 * np.sin(t) ** 3 y = 13 * np.cos(t) - 5 * np.cos(2 * t) - 2 * np.cos(3 * t) - np.cos(4 * t) z = np.random.randn(len(t)) * 0.1 # 添加一些随机的z坐标,让爱心有立体感 return x, y, z # 生成玫瑰的坐标 def rose_coords(t): a = 1 k = 5 r = a * np.cos(k * t) x = r * np.cos(t) y = r * np.sin(t) z = np.random.randn(len(t)) * 0.1 # 添加一些随机的z坐标,让玫瑰有立体感 return x, y, z # 初始化图形 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 生成时间参数 t = np.linspace(0, 2 * np.pi, 1000) x, y, z = heart_coords(t) # 绘制初始的爱心 scat = ax.scatter(x, y, z, c='blue', s=5) # 设置坐标轴范围 ax.set_xlim([-20, 20]) ax.set_ylim([-20, 20]) ax.set_zlim([-5, 5]) # 动画更新函数 def update(frame): if frame < 100: # 前100帧从爱心变成玫瑰 alpha = frame / 100 x_heart, y_heart, z_heart = heart_coords(t) x_rose, y_rose, z_rose = rose_coords(t) x = (1 - alpha) * x_heart + alpha * x_rose y = (1 - alpha) * y_heart + alpha * y_rose z = (1 - alpha) * z_heart + alpha * z_rose elif frame < 200: # 中间100帧保持玫瑰形态 x, y, z = rose_coords(t) else: # 后100帧从玫瑰变回爱心 alpha = (frame - 200) / 100 x_heart, y_heart, z_heart = heart_coords(t) x_rose, y_rose, z_rose = rose_coords(t) x = alpha * x_heart + (1 - alpha) * x_rose y = alpha * y_heart + (1 - alpha) * y_rose z = alpha * z_heart + (1 - alpha) * z_rose scat._offsets3d = (x, y, z) ax.view_init(elev=10, azim=frame) # 转动视角 return scat, # 创建动画 ani = animation.FuncAnimation(fig, update, frames=300, interval=20, blit=True) # 显示动画 plt.show() ``` 然后将文件保存为 `.py` 后缀的文件,例如 `heart_rose_animation.py`。 #### 2. 运行代码 打开命令提示符(Windows)或终端(Linux、macOS),进入保存文件的目录,然后运行以下命令: ```bash python heart_rose_animation.py ``` ### 开发建议 - **代码注释**:虽然代码中已经有部分注释,但可以进一步详细解释每个函数和关键步骤的作用,提高代码的可读性。 - **错误处理**:可以添加异常处理机制,例如在导入库失败或生成坐标时出现错误的情况。 - **性能优化**:如果需要处理更复杂的图形或更长的动画,可以考虑优化算法或使用更高效的库。 ### 相关学习资源 - **NumPy 官方文档**:https://numpy.org/doc/ - **Matplotlib 官方文档**:https://matplotlib.org/stable/contents.html ######[AI写代码神器 | 1066点数解答 | 2026-04-19 10:27:51]
- Python 绘制炫彩玫瑰代码实现及开发建议(字节豆包 | 777点数解答 | 2026-04-11 19:06:09)16
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)478
- C语言:利用函数实现输入三个整数并从大到小排序输出(字节豆包 | 246点数解答 | 2024-10-22 22:06:20)301
- C语言:输入三个整数并从大到小排序输出的实现代码(字节豆包 | 305点数解答 | 2024-10-22 22:07:27)361
- C语言:输入三个整数并从大到小排序输出的实现(字节豆包 | 259点数解答 | 2024-10-25 00:53:10)249
- Python实现多个整数相乘的计算及开发建议(字节豆包 | 427点数解答 | 2026-02-25 19:25:10)38
- 编程求解 1 到 N 的阶乘和:Python 与 C++ 实现(字节豆包 | 650点数解答 | 2026-03-01 20:05:48)21
- C++实现自定义函数计算 f(a)+f(b)+f(c)(字节豆包 | 610点数解答 | 2026-04-11 20:22:28)15
- C++实现找出指定范围内完全数的方法及开发建议(字节豆包 | 692点数解答 | 2026-04-11 20:23:34)18
- C++ 计算 1 到 n 中数字 1 的出现次数的实现与解析(字节豆包 | 849点数解答 | 2026-04-11 20:24:18)15
- Python在Linux下用openpyxl库实现Excel数据跨文件转移及异常处理(字节豆包 | 429点数解答 | 2025-01-07 19:22:42)180
- Python 在 Linux 下用 openpyxl 实现 Excel 单元格值转移及错误处理(字节豆包 | 240点数解答 | 2025-01-09 17:09:26)194