Python 自制动画:不用第三方库打造旋转立方体
用 Python 代码实现动态旋转立方体(无需第三方库)
想要在 Python 中实现一个立方体动画,但又不想依赖额外的库?没问题!本文将带您使用纯 Python 代码,一步步打造一个在终端中旋转的立方体动画。
代码实现:
import time
import math
# 定义立方体的顶点坐标
vertices = [
(-1, 1, 1), (1, 1, 1), (1, -1, 1), (-1, -1, 1),
(-1, 1, -1), (1, 1, -1), (1, -1, -1), (-1, -1, -1)
]
# 定义立方体的面
faces = [
(0, 1, 2, 3), # 前面
(1, 5, 6, 2), # 右面
(5, 4, 7, 6), # 后面
(4, 0, 3, 7), # 左面
(4, 5, 1, 0), # 上面
(3, 2, 6, 7) # 下面
]
# 定义立方体的初始位置和大小
position = (0, 0, 0)
scale = 100
# 旋转立方体的角度
angle = 0
# 定义旋转速度
rotation_speed = 0.01
# 循环播放动画
while True:
# 清空屏幕
print("\033c", end="")
# 计算旋转后的立方体顶点坐标
rotated_vertices = []
for vertex in vertices:
x, y, z = vertex
# 绕Y轴旋转
x, z = x * math.cos(angle) - z * math.sin(angle), x * math.sin(angle) + z * math.cos(angle)
# 绕X轴旋转
y, z = y * math.cos(angle) - z * math.sin(angle), y * math.sin(angle) + z * math.cos(angle)
# 缩放和平移
x, y, z = x * scale + position[0], y * scale + position[1], z * scale + position[2]
rotated_vertices.append((x, y, z))
# 绘制立方体
for face in faces:
for i in range(len(face)):
x, y, z = rotated_vertices[face[i]]
print(f"({int(x):^3}, {int(y):^3}, {int(z):^3})", end=" ")
print()
# 更新角度
angle += rotation_speed
# 等待一段时间
time.sleep(0.02)
代码解析:
- 定义立方体:
vertices:定义立方体的8个顶点坐标,每个顶点用一个三元组表示 (x, y, z)。faces:定义立方体的6个面,每个面用一个4元组表示,包含构成该面的4个顶点的索引。
- 初始化参数:
position:立方体的初始位置,默认在原点 (0, 0, 0)。scale:立方体的大小,控制立方体在终端中的尺寸。angle:立方体旋转的角度,初始为 0 度。rotation_speed:立方体旋转的速度,控制旋转动画的快慢。
- 动画循环:
while True:循环执行动画,直到手动终止程序。print("\033c", end=""):清空终端屏幕,确保动画流畅。- 旋转操作: 循环遍历每个顶点,根据当前角度
angle进行绕 Y 轴和 X 轴旋转。 - 缩放和平移: 对旋转后的顶点进行缩放和平移,得到最终的绘制坐标。
- 绘制立方体: 遍历每个面,根据其包含的顶点坐标,用 ASCII 字符
(x, y, z)绘制立方体。 - 更新角度: 更新
angle,以实现连续旋转。 time.sleep(0.02):等待一小段时间,控制动画的播放速度。
运行代码:
将代码保存为 .py 文件,并在终端中运行,即可看到一个动态旋转的立方体动画。你可以尝试调整 scale 和 rotation_speed 的值,改变立方体的大小和旋转速度,打造不同的动画效果。
更多创意:
你可以进一步扩展代码,实现更复杂的动画效果,比如:
- 加入多个立方体,实现多物体动画。
- 使用不同的颜色来绘制立方体,增加视觉效果。
- 添加其他图形元素,例如球体、圆柱体等。
- 利用声音库,为动画添加音效。
希望这篇教程能够帮助你用 Python 代码实现自己的 3D 动画,开始探索终端动画的乐趣!
原文地址: https://www.cveoy.top/t/topic/hJJ 著作权归作者所有。请勿转载和采集!