如何在Manim中画出一条直线

Manim中如何修改直线的长短呢,大家都知道,在Manim中,默认的直线其实是过两个点的一条线段,在做课件的过程中,我们需要一条直线,或者是直线样式,这就需要我们把一条做好的线段修改为直线。该如何做的,来看下面的教程。先来看代码

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

class BasicCoordinateSystemOne(Scene):
def construct(self):
# 创建坐标系
axes = Axes(
x_range=[-4, 4, 1], # x轴范围:从-5到5,刻度间隔1
y_range=[-3, 3, 1], # y轴范围:从-4到4,刻度间隔1
axis_config={"color": BLUE},
x_length=8,
y_length=6,
)
line_one = Line(np.array([-2,0,0]),np.array([0,2,0]))
# 添加坐标轴标签
x_label = axes.get_x_axis_label("x")
y_label = axes.get_y_axis_label("y")

# 动画演示
self.play(Create(axes), Write(x_label), Write(y_label))
self.wait(0.5)

在这里,我们构造了一个漂亮的坐标系,并保证了坐标系的长度是均衡的,来看演示代码

然后我们通过Line方式添加一条直线,然后生成这条直线,

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

class BasicCoordinateSystemTwo(Scene):
def construct(self):
# 创建坐标系
axes = Axes(
x_range=[-4, 4, 1], # x轴范围:从-5到5,刻度间隔1
y_range=[-3, 3, 1], # y轴范围:从-4到4,刻度间隔1
axis_config={"color": BLUE},
x_length=8,
y_length=6,
)
# 构造一条直线
line_one = Line(np.array([-2,0,0]),np.array([0,2,0]))
# 添加坐标轴标签
x_label = axes.get_x_axis_label("x")
y_label = axes.get_y_axis_label("y")

# 动画演示
self.play(Create(axes), Write(x_label), Write(y_label))
self.wait(2)
self.play(Create(line_one))
self.wait(2)

看下面的演示,不难发现,生成的直线,其实就是一条线段

这个时候,我们就需要把这条线段修改为一条直线,该如何做呢,我们使用 scale 来调整线段的长度,让他看起来像一条直线。来看代码

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

class BasicCoordinateSystemTwo(Scene):
def construct(self):
# 创建坐标系
axes = Axes(
x_range=[-4, 4, 1], # x轴范围:从-5到5,刻度间隔1
y_range=[-3, 3, 1], # y轴范围:从-4到4,刻度间隔1
axis_config={"color": BLUE},
x_length=8,
y_length=6,
)
# 构造一条直线
line_one = Line(np.array([-2,0,0]),np.array([0,2,0]))
# 调整直线的长短
line_one.scale(2)
# 添加坐标轴标签
x_label = axes.get_x_axis_label("x")
y_label = axes.get_y_axis_label("y")

# 动画演示
self.play(Create(axes), Write(x_label), Write(y_label))
self.wait(2)
self.play(Create(line_one))
self.wait(2)

我们在直线的下方调整了直线的一个属性代码,来看演示的效果

Manim中,scale 是用于调整对象尺寸的缩放变换方法。它可以让对象按比例放大或缩小,是创建动画时非常常用的函数。属性值为整数表示变大,属性值为小数表示变小,属性值为1保持不变。

1
Mobject.scale(属性值)

属性值含义

  • scale(2) = 变为原来的2倍
  • scale(0.5) = 变为原来的一半
  • scale(1) = 保持不变

好了,今天的学习就到这里,这两天忙活网站的一些小细节,没有学习Manim,感觉有点儿手生了,配图修改为一个漂亮的壁纸,希望大家能够喜欢,谢谢大家。