用 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)

代码解析:

  1. 定义立方体:
    • vertices:定义立方体的8个顶点坐标,每个顶点用一个三元组表示 (x, y, z)。
    • faces:定义立方体的6个面,每个面用一个4元组表示,包含构成该面的4个顶点的索引。
  2. 初始化参数:
    • position:立方体的初始位置,默认在原点 (0, 0, 0)。
    • scale:立方体的大小,控制立方体在终端中的尺寸。
    • angle:立方体旋转的角度,初始为 0 度。
    • rotation_speed:立方体旋转的速度,控制旋转动画的快慢。
  3. 动画循环:
    • while True:循环执行动画,直到手动终止程序。
    • print("\033c", end=""):清空终端屏幕,确保动画流畅。
    • 旋转操作: 循环遍历每个顶点,根据当前角度 angle 进行绕 Y 轴和 X 轴旋转。
    • 缩放和平移: 对旋转后的顶点进行缩放和平移,得到最终的绘制坐标。
    • 绘制立方体: 遍历每个面,根据其包含的顶点坐标,用 ASCII 字符 (x, y, z) 绘制立方体。
    • 更新角度: 更新 angle,以实现连续旋转。
    • time.sleep(0.02):等待一小段时间,控制动画的播放速度。

运行代码:

将代码保存为 .py 文件,并在终端中运行,即可看到一个动态旋转的立方体动画。你可以尝试调整 scalerotation_speed 的值,改变立方体的大小和旋转速度,打造不同的动画效果。

更多创意:

你可以进一步扩展代码,实现更复杂的动画效果,比如:

  • 加入多个立方体,实现多物体动画。
  • 使用不同的颜色来绘制立方体,增加视觉效果。
  • 添加其他图形元素,例如球体、圆柱体等。
  • 利用声音库,为动画添加音效。

希望这篇教程能够帮助你用 Python 代码实现自己的 3D 动画,开始探索终端动画的乐趣!

Python 自制动画:不用第三方库打造旋转立方体

原文地址: https://www.cveoy.top/t/topic/hJJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录