线性变换场景

全限定名称:manim.scene.vector\_space\_scene.LinearTransformationScene

class LinearTransformationScene(include_background_plane=True, include_foreground_plane=True, background_plane_kwargs=None, foreground_plane_kwargs=None, show_coordinates=False, show_basis_vectors=True, basis_vector_stroke_width=6, i_hat_color=ManimColor('#83C167'), j_hat_color=ManimColor('#FC6255'), leave_ghost_vectors=False, **kwargs)[source]

基类:VectorScene

此场景包含特殊方法,使其特别适合演示线性变换。

参数:
  • **include_background_plane** (*bool*) – 是否在场景中包含背景平面。

  • **include_foreground_plane** (*bool*) – 是否在场景中包含前景平面。

  • **background_plane_kwargs** (*dict* | *None*) – 传递给 NumberPlane 以调整背景平面的参数。

  • **foreground_plane_kwargs** (*dict* | *None*) – 传递给 NumberPlane 以调整前景平面的参数。

  • **show_coordinates** (*bool*) – 是否包含背景平面的坐标。

  • **show_basis_vectors** (*bool*) – 是否显示基向量 x 轴 -> i_hat 和 y 轴 -> j_hat

  • **basis_vector_stroke_width** (*float*) – 基向量的 stroke_width

  • **i_hat_color** (ParsableManimColor) – i_hat 向量的颜色。

  • **j_hat_color** (ParsableManimColor) – j_hat 向量的颜色。

  • **leave_ghost_vectors** (*bool*) – 指示变换后基向量的先前位置。

示例

示例:LinearTransformationSceneExample

from manim import *

class LinearTransformationSceneExample(LinearTransformationScene):
    def __init__(self, **kwargs):
        LinearTransformationScene.__init__(
            self,
            show_coordinates=True,
            leave_ghost_vectors=True,
            **kwargs
        )

    def construct(self):
        matrix = [[1, 1], [0, 1]]
        self.apply_matrix(matrix)
        self.wait()
class LinearTransformationSceneExample(LinearTransformationScene):
    def __init__(self, **kwargs):
        LinearTransformationScene.__init__(
            self,
            show_coordinates=True,
            leave_ghost_vectors=True,
            **kwargs
        )

    def construct(self):
        matrix = [[1, 1], [0, 1]]
        self.apply_matrix(matrix)
        self.wait()

方法

add_background_mobject

将 mobject 添加到特殊列表 self.background_mobjects。

add_foreground_mobject

将 mobject 添加到特殊列表 self.foreground_mobjects。

add_moving_mobject

将 mobject 添加到特殊列表 self.moving_mobject,并为 mobject 添加一个名为 mobject.target 的属性,该属性用于跟踪 mobject 将移动到何处或将变成什么等。

add_special_mobjects

将 mobject 添加到一个单独的可跟踪列表,如果这些 mobject 具有额外的重要性。

add_title

添加标题,先进行缩放,然后添加背景矩形,将其移动到顶部并添加到 foreground_mobjects,同时将其作为 self 的局部变量。

add_transformable_label

用于创建和动画化向量可变换标签添加的方法。

add_transformable_mobject

将 mobject 添加到特殊列表 self.transformable_mobjects。

add_unit_square

通过 self.get_unit_square 向场景添加一个单位正方形。

add_vector

向场景添加一个向量,并将其放入特殊列表 self.moving_vectors 中。

应用函数

将给定函数应用于 self.transformable_mobjects 中的每个 mobject,并播放显示此操作的动画。

apply_inverse

此方法将传递矩阵的逆所表示的线性变换应用于数值平面及其上的每个向量/类似 mobject。

apply_inverse_transpose

将给定转置矩阵所表示的变换的逆应用于数值平面及其上的每个向量/类似 mobject。

apply_matrix

将给定矩阵所表示的变换应用于数值平面及其上的每个向量/类似 mobject。

apply_nonlinear_transformation

将给定函数所表示的非线性变换应用于数值平面及其上的每个向量/类似 mobject。

apply_transposed_matrix

将给定转置矩阵所表示的变换应用于数值平面及其上的每个向量/类似 mobject。

get_ghost_vectors

返回所有添加到 self 的“幽灵”向量。

get_matrix_transformation

返回与所传递矩阵表示的线性变换相对应的函数。

get_moving_mobject_movement

此方法返回一个动画,将“self.moving_mobjects”中的 mobject 移动到其对应的 .target 值。

get_piece_movement

此方法返回一个动画,将“pieces”中的任意 mobject 移动到其对应的 .target 值。

get_transformable_label_movement

此方法返回一个动画,将“self.transformable_labels”中的所有标签移动到其对应的 .target。

get_transposed_matrix_transformation

返回与所传递转置矩阵表示的线性变换相对应的函数。

get_unit_square

为当前 NumberPlane 返回一个单位正方形。

get_vector_movement

此方法返回一个动画,将“self.moving_vectors”中的 mobject 移动到其对应的 .target 值。

setup

此方法旨在由通常被子类化且在调用 construct 方法之前涉及一些通用设置的任何场景实现。

update_default_configs

write_vector_coordinates

将向量坐标写入屏幕后,将其添加到特殊列表 self.foreground_mobjects,并返回表示向量坐标的列矩阵。

属性

相机

时间

自场景开始以来的时间。

add_background_mobject(*mobjects)[source]

将 mobject 添加到特殊列表 self.background_mobjects。

参数:

**mobjects** (Mobject) – 要添加到列表中的 mobject。

add_foreground_mobject(*mobjects)[source]

将 mobject 添加到特殊列表 self.foreground_mobjects。

参数:

**mobjects** (Mobject) – 要添加到列表中的 mobject。

add_moving_mobject(mobject, target_mobject=None)[source]

将 mobject 添加到特殊列表 self.moving_mobject,并为 mobject 添加一个名为 mobject.target 的属性,该属性用于跟踪 mobject 将移动到何处或将变成什么等。

参数:
  • **mobject** (Mobject) – 要添加到列表中的 mobject。

  • **target_mobject** (Mobject | *None*) – 移动中的 mobject 的目标,等等。

add_special_mobjects(mob_list, *mobs_to_add)[source]

将 mobject 添加到一个单独的可跟踪列表,如果这些 mobject 具有额外的重要性。

参数:
  • **mob_list** (*list*) – 你想添加这些 mobject 的特殊列表。

  • **mobs_to_add** (Mobject) – 要添加的 mobject。

add_title(title, scale_factor=1.5, animate=False)[source]

添加标题,先进行缩放,然后添加背景矩形,将其移动到顶部并添加到 foreground_mobjects,同时将其作为 self 的局部变量。返回场景。

参数:
  • **title** (*str* | MathTex | Tex) – 标题内容。

  • **scale_factor** (*float*) – 标题的缩放比例。

  • **animate** (*bool*) – 是否动画化添加过程。

返回:

已添加标题的场景。

返回类型:

线性变换场景

add_transformable_label(vector, label, transformation_name='L', new_label=None, **kwargs)[source]

用于创建和动画化向量可变换标签添加的方法。

参数:
  • **vector** (Vector) – 必须添加标签的向量。

  • **label** (MathTex | *str*) – 标签的 MathTex/字符串。

  • **transformation_name** (*str* | MathTex) – 作为标签的变换名称。

  • **new_label** (*str* | MathTex | *None*) – 线性变换后标签应显示的内容。

  • **kwargs** – get_vector_label 的任何有效关键字参数。

返回:

标签的 MathTex。

返回类型:

数学Tex

add_transformable_mobject(*mobjects)[source]

将 mobject 添加到特殊列表 self.transformable_mobjects。

参数:

**mobjects** (Mobject) – 要添加到列表中的 mobject。

add_unit_square(animate=False, **kwargs)[source]

通过 self.get_unit_square 向场景添加一个单位正方形。

参数:
  • **animate** (*bool*) – 是否动画化添加过程(使用 DrawBorderThenFill)。

  • **kwargs** – self.get_unit_square() 的任何有效关键字参数。

返回:

单位正方形。

返回类型:

正方形

add_vector(vector, color=ManimColor('#FFFF00'), **kwargs)[source]

向场景添加一个向量,并将其放入特殊列表 self.moving_vectors 中。

参数:
  • **vector** (Arrow | *list* | *tuple* | *ndarray*) – 可以是预制的图形向量,也可以是其坐标。

  • **color** (*str*) – 向量的十六进制颜色字符串。仅当“vector”不是 Arrow 时才考虑此参数。默认为黄色。

  • **kwargs** – VectorScene.add_vector 的任何有效关键字参数。

返回:

表示向量的箭头。

返回类型:

箭头

apply_function(function, added_anims=[], **kwargs)[source]

将给定函数应用于 self.transformable_mobjects 中的每个 mobject,并播放显示此操作的动画。

参数:
  • **function** (*Callable*[[*ndarray*], *ndarray*]) – 影响 self.transformable_mobjects 中每个 mobject 各点的函数。

  • **added_anims** (*list*) – 需要与此同时播放的任何其他动画。

  • **kwargs** – self.play() 调用的任何有效关键字参数。

apply_inverse(matrix, **kwargs)[source]

此方法将传递矩阵的逆所表示的线性变换应用于数值平面及其上的每个向量/类似 mobject。

参数:
  • **matrix** (*ndarray* | *list* | *tuple*) – 要应用其逆的矩阵。

  • **kwargs** – self.apply_matrix() 的任何有效关键字参数。

apply_inverse_transpose(t_matrix, **kwargs)[source]

将给定转置矩阵所表示的变换的逆应用于数值平面及其上的每个向量/类似 mobject。

参数:
  • **t_matrix** (*ndarray* | *list* | *tuple*) – 矩阵。

  • **kwargs** – self.apply_transposed_matrix() 的任何有效关键字参数。

apply_matrix(matrix, **kwargs)[source]

将给定矩阵所表示的变换应用于数值平面及其上的每个向量/类似 mobject。

参数:
  • **matrix** (*ndarray* | *list* | *tuple*) – 矩阵。

  • **kwargs** – self.apply_transposed_matrix() 的任何有效关键字参数。

apply_nonlinear_transformation(function, **kwargs)[source]

将给定函数所表示的非线性变换应用于数值平面及其上的每个向量/类似 mobject。

参数:
  • **function** (*Callable*[[*ndarray*], *ndarray*]) – 函数。

  • **kwargs** – self.apply_function() 的任何有效关键字参数。

apply_transposed_matrix(transposed_matrix, **kwargs)[source]

将给定转置矩阵所表示的变换应用于数值平面及其上的每个向量/类似 mobject。

参数:
  • **transposed_matrix** (*ndarray* | *list* | *tuple*) – 矩阵。

  • **kwargs** – self.apply_function() 的任何有效关键字参数。

get_ghost_vectors()[source]

返回所有添加到 self 的“幽灵”向量。每个元素都是包含两个“幽灵”向量的 VGroup

返回类型:

V组

get_matrix_transformation(matrix)[source]

返回与所传递矩阵表示的线性变换相对应的函数。

参数:

**matrix** (*ndarray* | *list* | *tuple*) – 矩阵。

get_moving_mobject_movement(func)[source]

此方法返回一个动画,将“self.moving_mobjects”中的 mobject 移动到其对应的 .target 值。func 是一个确定 .target 位置的函数。

参数:

**func** (*Callable*[[*ndarray*], *ndarray*]) – 确定移动中 mobject 的 .target 位置的函数。

返回:

移动的动画。

返回类型:

动画

get_piece_movement(pieces)[source]

此方法返回一个动画,将“pieces”中的任意 mobject 移动到其对应的 .target 值。如果 self.leave_ghost_vectors 为 True,则原始位置/mobject 的“幽灵”会留在屏幕上。

参数:

**pieces** (*list* | *tuple* | *ndarray*) – 必须显示其移动的片段。

返回:

移动的动画。

返回类型:

动画

get_transformable_label_movement()[source]

此方法返回一个动画,将“self.transformable_labels”中的所有标签移动到其对应的 .target。

返回:

移动的动画。

返回类型:

动画

get_transposed_matrix_transformation(transposed_matrix)[source]

返回与所传递转置矩阵表示的线性变换相对应的函数。

参数:

**transposed_matrix** (*ndarray* | *list* | *tuple*) – 矩阵。

get_unit_square(color=ManimColor('#FFFF00'), opacity=0.3, stroke_width=3)[source]

为当前 NumberPlane 返回一个单位正方形。

参数:
  • **color** (*str*) – 所需颜色的十六进制颜色代码字符串。

  • **opacity** (*float*) – 正方形的不透明度。

  • **stroke_width** (*float*) – 正方形边框的像素笔画宽度。

返回类型:

正方形

get_vector_movement(func)[source]

此方法返回一个动画,将“self.moving_vectors”中的 mobject 移动到其对应的 .target 值。func 是一个确定 .target 位置的函数。

参数:

**func** (*Callable*[[*ndarray*], *ndarray*]) – 确定移动中 mobject 的 .target 位置的函数。

返回:

移动的动画。

返回类型:

动画

setup()[source]

此方法旨在由通常被子类化且在调用 construct 方法之前涉及一些通用设置的任何场景实现。

write_vector_coordinates(vector, **kwargs)[source]

将向量坐标写入屏幕后,将其添加到特殊列表 self.foreground_mobjects,并返回表示向量坐标的列矩阵。

参数:
  • **vector** (Arrow) – 表示向量的箭头。

  • **kwargs** – VectorScene.write_vector_coordinates 的任何有效关键字参数。

返回:

表示向量的列矩阵。

返回类型:

矩阵