NumberPlane
是 Manim 中用于创建一个二维坐标平面的类。它可以帮助用户在场景中可视化坐标轴、网格线以及其他数学概念。具体来说,它的功能包括:
-
坐标轴 :
NumberPlane
提供了 x 轴和 y 轴,通常是中心对称的,允许用户清楚地看到坐标系的划分。 -
网格线 :默认情况下,
NumberPlane
会显示背景网格,这对于展示数学函数、几何形状等非常有帮助。 -
自定义范围:用户可以定义坐标平面的范围,比如 x 和 y 值的最小和最大值。
-
坐标标签:可以为坐标轴添加标签,以便更好地标识坐标系中的具体值。
-
与其他对象的交互 :可以将其他形状、函数或动画放置在
NumberPlane
上,从而在动画中展示数学概念。
接下来我看看一下构造函数:
构造函数
class NumberPlane(x_range=(-7.111111111111111, 7.111111111111111, 1), y_range=(-4.0, 4.0,
1), x_length=None, y_length=None, background_line_style=None, faded_line_style=None,
faded_line_ratio=1, make_smooth_after_applying_functions=True, **kwargs)
NumberPlane
类的构造函数允许你创建一个二维坐标平面。以下是参数的详细说明:
参数详解
-
x_range (
tuple
):- 用于定义 x 轴的范围。
- 格式为
(min, max, step)
,其中min
是最小值,max
是最大值,step
是每个网格线之间的间距。 - 示例:
(-7, 7, 1)
表示 x 轴从 -7 到 7,网格线间隔为 1。
-
y_range (
tuple
):- 用于定义 y 轴的范围,格式与
x_range
相同。 - 示例:
(-4, 4, 1)
表示 y 轴从 -4 到 4,网格线间隔为 1。
- 用于定义 y 轴的范围,格式与
-
x_length (
float
或None
):- 可选参数,定义 x 轴的长度(像素或单位长度)。
- 如果设置为
None
,则会根据x_range
自动计算。
-
y_length (
float
或None
):- 可选参数,定义 y 轴的长度(像素或单位长度)。
- 如果设置为
None
,则会根据y_range
自动计算。
-
background_line_style (
dict
或None
):- 用于定义背景网格线的样式,如颜色、透明度等。
- 示例:
{'stroke_color': BLUE, 'stroke_width': 2}
。
-
faded_line_style (
dict
或None
):- 定义淡化网格线的样式。这些线条通常用于绘制更淡的背景线。
- 示例:
{'stroke_color': GRAY, 'stroke_opacity': 0.3}
。
-
faded_line_ratio (
float
):- 定义淡化线条与标准线条的比例。
- 默认值是
1
,表示淡化线和背景线会有相同的长度比率。
-
make_smooth_after_applying_functions (
bool
):- 如果设置为
True
,在应用变换函数后会对图形进行平滑处理。
- 如果设置为
-
kwargs:
- 其他参数,可用于进一步的自定义。
示例1:
python
from manim import *
class NumberPlaneExample01(Scene):
def construct(self):
number_plane = NumberPlane(
x_range=(-7, 7, 1), # x轴范围
y_range=(-4, 4, 1), # y轴范围
x_length=10, # x轴长度
y_length=6, # y轴长度
background_line_style={
"stroke_color": TEAL,
"stroke_width": 4,
"stroke_opacity": 0.6
},
faded_line_style={
"stroke_color": GRAY,
"stroke_opacity": 0.3
},
faded_line_ratio=0.8, # 淡化线与背景线的比例
make_smooth_after_applying_functions=True # 启用平滑处理
)
# 添加 NumberPlane 到场景
self.add(number_plane)
# 展示一些文字
title = Text("Number Plane Example").to_edge(UP)
self.add(title)
# 稍等一会儿,以便观看结果
self.wait(2)
参数说明
- x_range: 设置 x 轴的范围为 -7 到 7,步长为 1。
- y_range: 设置 y 轴的范围为 -4 到 4,步长为 1。
- x_length: 设置 x 轴的长度为 10(单位像素)。
- y_length: 设置 y 轴的长度为 6(单位像素)。
- background_line_style: 设置背景线的样式,包含颜色、宽度和透明度。
- faded_line_style: 设置淡化线的样式,通常用于更淡的背景线。
- faded_line_ratio: 比例设置为 0.8,表示淡化线条与标准线条长度的关系。
- make_smooth_after_applying_functions: 启用对应用函数后的平滑处理。
运行结果:
示例2:
python
from manim import *
class NumberPlaneExample(Scene):
def construct(self):
number_plane = NumberPlane(
background_line_style={
"stroke_color": TEAL,
"stroke_width": 4,
"stroke_opacity": 0.6
}
)
self.add(number_plane)
运行结果:
示例3:
python
class NumberPlaneScaled(Scene):
def construct(self):
number_plane = NumberPlane(
x_range=(-4, 11, 1),
y_range=(-3, 13, 1),
x_length=5,
y_length=5,
).move_to(LEFT*3)
number_plane_scaled_y = NumberPlane(
x_range=(-4, 11, 1),
x_length=5,
y_length=4,
).move_to(RIGHT*3)
self.add(number_plane)
self.add(number_plane_scaled_y)
运行结果: