用Manim创建一个带有顶点标签的矩形

我们今天用manim来创建一个正方形,同时给创建的正方形添加对应的定点标签,先来看下面的Manim代码创建过程

1.创建矩形ABCD

来分析下面的代码,主要是用来创建矩形ABCD,没有添加顶点的标签

1
2
3
4
5
6
7
8
9
from manim import *

class RectangleABCD(Scene):
def construct(self):
# 创建矩形
rect = Rectangle(width=5, height=3, color=BLUE)
rect.set_fill(BLUE, opacity=0.5)
self.play(Create(rect))
self.wait(0.5)

下面是代码产生的视频效果

我们来分析看里面的代码是如何编写的

1
rect = Rectangle(width=5, height=3, color=BLUE)
1
Mobject = Rectangle(属性1,属性2,……属性)

期中,RectangleManim中用于绘制矩形的多边形类,继承自Polygon。常用构造参数如下:

1
width 矩形的宽度,浮点数,场景单位
1
height 矩形的高度,浮点数,场景单位
1
color 矩形的颜色
1
grid_xstep 用于设置矩形网格划分时的列间距
1
grid_ystep 用于设置矩形网格划分时的行间距
1
stroke_color 边框颜色
1
stroke_width  边框厚度
1
stroke_opacity  透明度
1
fill_color 内部的颜色
1
fill_opacity 透明度

当然还有其他的一些属性,日后我们在逐渐的填充进来。在Manim中set_fill方法用于设置几何图形的填充颜色及不透明度,常用的代码结构

1
set_fill(color, opacity)

color:填充颜色,支持多种颜色名称(如PINKBLUE)或RGB值

opacity:填充不透明度,取值范围为0到1,0完全透明,1完全不透明。

大家可以更改里面的代码设置,进而得到不同需求的矩形图形。下面我们给矩形填上四个顶点的标签字母,代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from manim import *

class RectangleABCD(Scene):
def construct(self):
# 创建矩形
rect = Rectangle(width=5, height=3, color=BLUE)
rect.set_fill(BLUE, opacity=0.5)
self.play(Create(rect))
self.wait(0.5)

# 创建顶点标签
A = MathTex("A").next_to(rect.get_corner(DOWN + LEFT), DOWN + LEFT, buff=0.2)
B = MathTex("B").next_to(rect.get_corner(DOWN + RIGHT), DOWN + RIGHT, buff=0.2)
C = MathTex("C").next_to(rect.get_corner(UP + RIGHT), UP + RIGHT, buff=0.2)
D = MathTex("D").next_to(rect.get_corner(UP + LEFT), UP + LEFT, buff=0.2)

# 显示顶点标签
self.play(
Write(VGroup(A, B, C, D)),
run_time=1.5
)

self.wait(2)

展示的效果如下面的视频

对于Rectangle,以及SquareRoundedRectangle 等矩形类,调用 get_corner(direction) 会返回该矩形在指定方向上的角点坐标,一个 numpy 数组,形如 [x, y, 0],在to_edge函数中,DIRECTION参数用于指定边界方向,如UP、LEFT、RIGHT、DOWN等,结合buff参数控制图形与边缘的距离。这样一来

1
A = MathTex("A").next_to(rect.get_corner(DOWN + LEFT), DOWN + LEFT, buff=0.2)

让标签A在矩形rect的左下边角,浮动距离为0.2。好了,今天的学习就到这里,这篇文章容做日后更新心得体会。