实例介绍
【实例简介】使用python库,开发的一个自动旋转3D彩球
【实例截图】
【核心代码】
【实例截图】

【核心代码】
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.animation import FuncAnimation
import matplotlib.cm as cm
# 创建图形和3D坐标轴
fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(111, projection='3d')
# 设置坐标轴范围
ax.set_xlim(-1.5, 1.5)
ax.set_ylim(-1.5, 1.5)
ax.set_zlim(-1.5, 1.5)
ax.set_box_aspect([1, 1, 1]) # 保持球体比例
ax.set_title("3D 球体 - 自动旋转 变色", fontsize=16)
# 生成球体参数
u = np.linspace(0, 2 * np.pi, 30) # 经度
v = np.linspace(0, np.pi, 30) # 纬度
x = np.outer(np.cos(u), np.sin(v))
y = np.outer(np.sin(u), np.sin(v))
z = np.outer(np.ones(np.size(u)), np.cos(v))
# 初始颜色(使用极角 v 作为颜色映射)
color_values = np.outer(np.ones(np.size(u)), v) # 按纬度着色
# 绘制球面
surf = ax.plot_surface(x, y, z, facecolors=cm.viridis(color_values), rstride=1, cstride=1, alpha=0.9)
# 移除坐标轴标签
ax.set_axis_off()
# 动画更新函数
angle = [0] # 使用列表以便在闭包中修改
def update(frame):
global angle
ax.clear()
ax.set_xlim(-1.5, 1.5)
ax.set_ylim(-1.5, 1.5)
ax.set_zlim(-1.5, 1.5)
ax.set_box_aspect([1, 1, 1])
ax.set_title("3D 球体 - 自动旋转 变色", fontsize=16)
ax.set_axis_off()
# 旋转:绕 z 轴旋转
theta = np.radians(angle[0])
x_rot = x * np.cos(theta) - y * np.sin(theta)
y_rot = x * np.sin(theta) y * np.cos(theta)
z_rot = z
# 动态颜色:随帧数变化(使用 colormap)
color_shift = (color_values frame * 0.1) % 2
surf = ax.plot_surface(x_rot, y_rot, z_rot, facecolors=cm.plasma(color_shift),
rstride=1, cstride=1, alpha=0.9, shade=True)
angle[0] = 2 # 每帧旋转2度
return surf,
# 创建动画
ani = FuncAnimation(fig, update, frames=200, interval=50, blit=False, repeat=True)
plt.tight_layout()
plt.show()
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论