manim边做边学--立方体和棱柱体

本篇介绍Manim中创建三维立体的两个常用对象:CubePrism

Cube在制作动画时,可以用于展示立体几何中的立方体概念,或者通过旋转、缩放等动画效果来帮助理解三维空间中的几何变换。

Prism是长方体,继承自Cube,与Cube相比,它可以更进一步设置不同的边长。

1. 主要参数

Cube的主要参数有:

参数名称 类型 说明
side_length float 立方体的边长
fill_opacity float 立方体的透明度
fill_color Color 立方体的颜色
stroke_width float 设置立方体边框的宽度

PrismCube的区别在于它没有side_length参数,取而代之是dimensions参数。

参数名称 类型 说明
dimensions tuple[float, float, float] 长方体的长,宽和高

Prismdimensions参数长宽高 定义为同样的值时,就是Cube

2. 主要方法

CubePrism的没有特有的方法,对于通用的方法都支持,

比如shift(平移),rotate(旋转)和scale(缩放)等。

3. 使用示例

这个对象的使用比较简单,下面的示例演示其基本的使用和操作。

3.1. 默认显示

这个示例展示了如何在Manim中创建并显示一个立方体(Cube)和一个长方体(Prism)。

python 复制代码
# 创建一个立方体
cube = Cube()
# 创建一个棱柱
prism = Prism()

3.2. 变换颜色

在这个示例中,首先创建了一个红色的立方体和一个蓝色的长方体。

接着,立方体逐渐变化为绿色,而长方体逐渐变化为黄色。

实际动画中,通过颜色的变换可以更好地演示形状属性的动态变化。

python 复制代码
# 创建一个立方体
cube = Cube()
cube2 = Cube(fill_color=RED)

# 创建一个棱柱
prism = Prism()
prism2 = Prism(fill_color=GREEN)

3.3. 移动和旋转

此示例首先展示了一个立方体和一个长方体。

接下来,让立方体向右移动,而长方体向左移动,然后立方体顺时针旋转45度,而长方体则逆时针旋转45度。

这种移动和旋转的效果可以生动地展示三维空间中的几何变换。

python 复制代码
# 创建一个立方体
cube = Cube(fill_color=RED)
# 创建一个棱柱
prism = Prism(fill_color=GREEN)

# 移动
self.play(
    cube.animate.shift(RIGHT),
    prism.animate.shift(LEFT),
)
# 旋转
self.play(
    cube.animate.rotate(PI / 4),
    prism.animate.rotate(-PI / 4),
)

3.4. 组合使用

在这个示例中,同样先创建一个立方体和一个长方体。

然后将这两个形状组合成一个整体,再整体向上移动,并旋转一个小角度。

这种组合使用的方式可以展示如何在Manim中处理和组织多个形状,以及如何对它们进行整体的动画效果。

python 复制代码
# 创建一个立方体
cube = Cube(fill_color=RED)
# 创建一个棱柱
prism = Prism(fill_color=GREEN)
# 将立方体放在棱柱的右边
cube.next_to(prism, RIGHT)

# 组合使用
vg = VGroup(cube, prism)

# 整体移动组合
self.play(vg.animate.shift(UP))
# 整体旋转组合
self.play(vg.animate.rotate(PI / 2, axis=UP))

4. 附件

文中的代码只是关键部分的截取,完整的代码共享在网盘中(cube_prism.py),

下载地址: 完整代码 (访问密码: 6872)

相关推荐
Eiceblue2 分钟前
Python读取PDF:文本、图片与文档属性
数据库·python·pdf
weixin_5275504015 分钟前
初级程序员入门指南
javascript·python·算法
程序员的世界你不懂35 分钟前
Appium+python自动化(十)- 元素定位
python·appium·自动化
CryptoPP1 小时前
使用WebSocket实时获取印度股票数据源(无调用次数限制)实战
后端·python·websocket·网络协议·区块链
树叶@1 小时前
Python数据分析7
开发语言·python
老胖闲聊2 小时前
Python Rio 【图像处理】库简介
开发语言·图像处理·python
码界奇点3 小时前
Python Flask文件处理与异常处理实战指南
开发语言·python·自然语言处理·flask·python3.11
浠寒AI3 小时前
智能体模式篇(上)- 深入 ReAct:LangGraph构建能自主思考与行动的 AI
人工智能·python
行云流水剑4 小时前
【学习记录】如何使用 Python 提取 PDF 文件中的内容
python·学习·pdf
心扬5 小时前
python生成器
开发语言·python