使用 Manim 创建一个二维坐标平面【NumberPlane】

NumberPlane 是 Manim 中用于创建一个二维坐标平面的类。它可以帮助用户在场景中可视化坐标轴、网格线以及其他数学概念。具体来说,它的功能包括:

  1. 坐标轴NumberPlane 提供了 x 轴和 y 轴,通常是中心对称的,允许用户清楚地看到坐标系的划分。

  2. 网格线 :默认情况下,NumberPlane 会显示背景网格,这对于展示数学函数、几何形状等非常有帮助。

  3. 自定义范围:用户可以定义坐标平面的范围,比如 x 和 y 值的最小和最大值。

  4. 坐标标签:可以为坐标轴添加标签,以便更好地标识坐标系中的具体值。

  5. 与其他对象的交互 :可以将其他形状、函数或动画放置在 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 类的构造函数允许你创建一个二维坐标平面。以下是参数的详细说明:

参数详解

  1. x_range (tuple):

    • 用于定义 x 轴的范围。
    • 格式为 (min, max, step),其中 min 是最小值,max 是最大值,step 是每个网格线之间的间距。
    • 示例:(-7, 7, 1) 表示 x 轴从 -7 到 7,网格线间隔为 1。
  2. y_range (tuple):

    • 用于定义 y 轴的范围,格式与 x_range 相同。
    • 示例:(-4, 4, 1) 表示 y 轴从 -4 到 4,网格线间隔为 1。
  3. x_length (floatNone):

    • 可选参数,定义 x 轴的长度(像素或单位长度)。
    • 如果设置为 None,则会根据 x_range 自动计算。
  4. y_length (floatNone):

    • 可选参数,定义 y 轴的长度(像素或单位长度)。
    • 如果设置为 None,则会根据 y_range 自动计算。
  5. background_line_style (dictNone):

    • 用于定义背景网格线的样式,如颜色、透明度等。
    • 示例:{'stroke_color': BLUE, 'stroke_width': 2}
  6. faded_line_style (dictNone):

    • 定义淡化网格线的样式。这些线条通常用于绘制更淡的背景线。
    • 示例:{'stroke_color': GRAY, 'stroke_opacity': 0.3}
  7. faded_line_ratio (float):

    • 定义淡化线条与标准线条的比例。
    • 默认值是 1,表示淡化线和背景线会有相同的长度比率。
  8. make_smooth_after_applying_functions (bool):

    • 如果设置为 True,在应用变换函数后会对图形进行平滑处理。
  9. 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)

运行结果:

相关推荐
jc_hook1 小时前
Python 接入DeepSeek
python·大模型·deepseek
chicpopoo1 小时前
Python打卡DAY25
开发语言·python
crazyme_62 小时前
深入掌握 Python 切片操作:解锁数据处理的高效密码
开发语言·python
Code_流苏3 小时前
《Python星球日记》 第69天:生成式模型(GPT 系列)
python·gpt·深度学习·机器学习·自然语言处理·transformer·生成式模型
于壮士hoho4 小时前
Python | Dashboard制作
开发语言·python
掘金-我是哪吒4 小时前
分布式微服务系统架构第131集:fastapi-python
分布式·python·微服务·系统架构·fastapi
小猪快跑爱摄影4 小时前
【Folium】使用离线地图
python
keke104 小时前
Java【10_1】用户注册登录(面向过程与面向对象)
java·python·intellij-idea
微刻时光5 小时前
影刀RPA网页自动化总结
运维·人工智能·python·低代码·自动化·rpa·影刀rpa
WenGyyyL5 小时前
研读论文——《用于3D工业异常检测的自监督特征自适应》
人工智能·python·深度学习·机器学习·计算机视觉·3d