manim边做边学--多面体
在Manim
中,关于多面体,有一系列封装好的类能够直接运用。
运用它们,能够便利快速的构建正多面体:
Polyhedron
:经过极点和面的参数构建恣意多面体Tetrahedron
:四面体Octahedron
:八面体Dodecahedron
:十二面体Icosahedron
:二十面体
这些类使得在动画中直观地展现多面体成为可能,有助于了解多面体的几许形状和它们的特点。
特别是在数学和科学教育中,运用这些类制造的动画能够增强教育效果,使学生更简单了解笼统的几许概念。
1. 首要参数
Tetrahedron
,Octahedron
,Dodecahedron
和Icosahedron
都是正多面体,
所以参数比较简单,只要一个edge_length
,表明多面体的边长。
Polyhedron
作为不定面数的多面体,参数略微多一些:
参数称号 | 类型 | 阐明 |
---|---|---|
vertex_coords | [[float]] / np.ndarray | 界说多面体一切极点的坐标 |
faces_list | [[int]] | 界说多面体的各个面 |
faces_config | dict | 为多面体的面供给额定的装备信息 |
graph_config | dict | 装备多面体的图结构 |
参数faces_list
中界说的是面的极点索引(也便是参数vertex_coords
中极点的索引),能够确认多面体的各个面的形状和方位。
参数faces_config
为多面体的面设置色彩、透明度、原料等特点,然后增强动画的视觉效果。
参数graph_config
用于调整多面体图的连通性、边的权重等特点,这在某些特定的数学动画或物理模仿中能够发挥作用。
2. 首要办法
这些多面体的类没有什么自己特有的办法,通用的设置款式和动画(比方平移,旋转和缩放等)的办法都支撑。
3. 运用示例
下面经过几个示例来演示各个多面体在动画中的运用。
3.1. 自界说多面体
此示例展现了怎么运用Polyhedron
类创立自界说多面体。
经过界说极点坐标和面列表,能够创立恣意形状的多面体。
# 界说极点坐标
vertex_coords = [
[1, 1, -1],
[1, -1, 1],
[-1, -1, 1],
[-1, 1, -1],
[0, 0, 2],
]
# 界说面(由极点索引组成)
faces_list = [
[0, 1, 2],
[0, 2, 3],
[0, 3, 1],
[1, 2, 3, 4],
]
# 创立Polyhedron目标
p = Polyhedron(vertex_coords, faces_list)
p.faces[0].set_color(GREEN)
p.faces[1].set_color(YELLOW)
p.faces[2].set_color(RED)
p.faces[3].set_color(BLUE)
self.play(Create(p))
3.2. 十二面体
此示例展现了Dodecahedron
类的运用,该类是Polyhedron
的一个特例,用于创立规范的十二面体。
无需手动界说极点和面,只需实例化目标并设置色彩等特点。
# 创立十二面体目标
d = Dodecahedron()
d.faces.set_color(GREEN)
self.play(Create(d))
self.play(d.animate.scale(0.5))
3.3. 二十面体
此示例展现了Icosahedron
类的运用,该类用于创立规范的二十面体。
经过设置fill_opacity
特点,能够操控多面体的填充透明度,
此外,经过旋转多面体,能够展现其不同的视角。
# 创立二十面体目标
i = Icosahedron()
i.faces.set_color(RED)
i.faces.set_opacity(0.6)
self.play(Create(i))
# 旋转多面体以展现其形状
self.play(i.animate.rotate(PI / 4, axis=OUT))
3.4. 八面体与四面体
此示例一起展现了Octahedron
和Tetrahedron
类的运用,这两个类别离用于创立规范的八面体和四面体。
经过将它们移动到场景的不同方位,能够明晰地展现这两个多面体的形状和巨细差异。
# 创立八面体目标
o = Octahedron()
o.faces.set_color(YELLOW)
# 创立四面体目标
t = Tetrahedron()
t.faces.set_color(PURPLE)
self.play(Create(o), Create(t))
self.play(
o.animate.move_to(LEFT),
t.animate.move_to(RIGHT),
)
4. 附件
文中的代码仅仅要害部分的截取,完好的代码同享在网盘中(polyhedron.py
),
下载地址: 完好代码 (拜访暗码: 6872)