ArrowVectorField

完全限定名: manim.mobject.vector\_field.ArrowVectorField

class ArrowVectorField(func, color=None, color_scheme=None, min_color_scheme_value=0, max_color_scheme_value=2, colors=[ManimColor('#236B8E'), ManimColor('#83C167'), ManimColor('#FFFF00'), ManimColor('#FC6255')], x_range=None, y_range=None, z_range=None, three_dimensions=False, length_func=<function ArrowVectorField.<lambda>>, opacity=1.0, vector_config=None, **kwargs)[源代码]

基类: VectorField

一个由一组变化向量表示的VectorField

矢量场始终基于一个函数,该函数定义了每个位置的Vector。该函数的值以向量网格的形式显示。默认情况下,每个向量的颜色由其大小决定。但是,也可以使用其他配色方案。

参数:
  • func (Callable[[np.ndarray], np.ndarray]) – 定义矢量场中每个位置变化率的函数。

  • color (ParsableManimColor | None) – 矢量场的颜色。如果设置,则禁用位置特定着色。

  • color_scheme (Callable[[np.ndarray], float] | None) – 将向量映射到单个值的函数。此值表示使用min_color_scheme_valuemax_color_scheme_valuecolors定义的颜色渐变中的位置。

  • min_color_scheme_value (*float*) – 要映射到 colors 中第一个颜色的 color_scheme 函数的值。较低的值也会导致渐变显示第一个颜色。

  • max_color_scheme_value (*float*) – 要映射到 colors 中最后一个颜色的 color_scheme 函数的值。较高的值也会导致渐变显示最后一个颜色。

  • colors (Sequence[ParsableManimColor]) – 定义矢量场颜色渐变的颜色。

  • x_range (Sequence[float]) – x_min、x_max、delta_x 的序列

  • y_range (Sequence[float]) – y_min、y_max、delta_y 的序列

  • z_range (Sequence[float]) – z_min、z_max、delta_z 的序列

  • three_dimensions (bool) – 启用三维。默认为 False,如果 z_range 不为 None,则自动变为 True。

  • length_func (Callable[[float], float]) – 决定向量显示大小的函数。传递向量的实际大小,返回的值将用作向量的显示大小。默认情况下,此函数用于限制向量的显示大小以减少混乱。

  • opacity (float) – 箭头的透明度。

  • vector_config (dict | None) – 传递给Vector构造函数的额外参数。

  • kwargs – 传递给VGroup构造函数的额外参数。

示例

示例:基本用法

../_images/BasicUsage-1.png
from manim import *

class BasicUsage(Scene):
    def construct(self):
        func = lambda pos: ((pos[0] * UR + pos[1] * LEFT) - pos) / 3
        self.add(ArrowVectorField(func))
class BasicUsage(Scene):
    def construct(self):
        func = lambda pos: ((pos[0] * UR + pos[1] * LEFT) - pos) / 3
        self.add(ArrowVectorField(func))

示例:大小和间距

from manim import *

class SizingAndSpacing(Scene):
    def construct(self):
        func = lambda pos: np.sin(pos[0] / 2) * UR + np.cos(pos[1] / 2) * LEFT
        vf = ArrowVectorField(func, x_range=[-7, 7, 1])
        self.add(vf)
        self.wait()

        length_func = lambda x: x / 3
        vf2 = ArrowVectorField(func, x_range=[-7, 7, 1], length_func=length_func)
        self.play(vf.animate.become(vf2))
        self.wait()
class SizingAndSpacing(Scene):
    def construct(self):
        func = lambda pos: np.sin(pos[0] / 2) * UR + np.cos(pos[1] / 2) * LEFT
        vf = ArrowVectorField(func, x_range=[-7, 7, 1])
        self.add(vf)
        self.wait()

        length_func = lambda x: x / 3
        vf2 = ArrowVectorField(func, x_range=[-7, 7, 1], length_func=length_func)
        self.play(vf.animate.become(vf2))
        self.wait()

示例:着色

../_images/Coloring-1.png
from manim import *

class Coloring(Scene):
    def construct(self):
        func = lambda pos: pos - LEFT * 5
        colors = [RED, YELLOW, BLUE, DARK_GRAY]
        min_radius = Circle(radius=2, color=colors[0]).shift(LEFT * 5)
        max_radius = Circle(radius=10, color=colors[-1]).shift(LEFT * 5)
        vf = ArrowVectorField(
            func, min_color_scheme_value=2, max_color_scheme_value=10, colors=colors
        )
        self.add(vf, min_radius, max_radius)
class Coloring(Scene):
    def construct(self):
        func = lambda pos: pos - LEFT * 5
        colors = [RED, YELLOW, BLUE, DARK_GRAY]
        min_radius = Circle(radius=2, color=colors[0]).shift(LEFT * 5)
        max_radius = Circle(radius=10, color=colors[-1]).shift(LEFT * 5)
        vf = ArrowVectorField(
            func, min_color_scheme_value=2, max_color_scheme_value=10, colors=colors
        )
        self.add(vf, min_radius, max_radius)

方法

get_vector

在矢量场中创建一个向量。

属性

animate (动画)

用于动画化 self 的任何方法的应用。

animation_overrides (动画覆盖)

颜色

depth (深度)

mobject 的深度。

fill_color (填充颜色)

如果存在多种颜色(用于渐变),则返回第一种颜色

height (高度)

mobject 的高度。

n_points_per_curve (每条曲线的点数)

sheen_factor (光泽因子)

stroke_color (描边颜色)

width (宽度)

mobject 的宽度。

_original__init__(func, color=None, color_scheme=None, min_color_scheme_value=0, max_color_scheme_value=2, colors=[ManimColor('#236B8E'), ManimColor('#83C167'), ManimColor('#FFFF00'), ManimColor('#FC6255')], x_range=None, y_range=None, z_range=None, three_dimensions=False, length_func=<function ArrowVectorField.<lambda>>, opacity=1.0, vector_config=None, **kwargs)

初始化自身。有关准确签名,请参阅 help(type(self))。

参数:
  • func (*Callable*[[*np.ndarray*], *np.ndarray*])

  • color (ParsableManimColor | None)

  • color_scheme (*Callable*[[*np.ndarray*], *float*] *|* *None*)

  • min_color_scheme_value (*float*)

  • max_color_scheme_value (*float*)

  • colors (*Sequence*[[ParsableManimColor]])

  • x_range (Sequence[float])

  • y_range (Sequence[float])

  • z_range (Sequence[float])

  • three_dimensions (bool)

  • length_func (Callable[[float], float])

  • opacity (float)

  • vector_config (dict | None)

get_vector(point)[源代码]

在矢量场中创建一个向量。

创建的向量基于矢量场的函数,并以给定点为根。颜色和长度符合该矢量场的规格。

参数:

point (ndarray) – 向量的根点。