使用 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)

运行结果:

相关推荐
亦枫Leonlew3 分钟前
微积分复习笔记 Calculus Volume 1 - 6.5 Physical Applications
笔记·数学·微积分
幽兰的天空1 小时前
Python 中的模式匹配:深入了解 match 语句
开发语言·python
网易独家音乐人Mike Zhou4 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
安静读书4 小时前
Python解析视频FPS(帧率)、分辨率信息
python·opencv·音视频
小二·6 小时前
java基础面试题笔记(基础篇)
java·笔记·python
小喵要摸鱼7 小时前
Python 神经网络项目常用语法
python
一念之坤9 小时前
零基础学Python之数据结构 -- 01篇
数据结构·python
wxl7812279 小时前
如何使用本地大模型做数据分析
python·数据挖掘·数据分析·代码解释器
NoneCoder9 小时前
Python入门(12)--数据处理
开发语言·python
LKID体10 小时前
Python操作neo4j库py2neo使用(一)
python·oracle·neo4j