VectorField

VectorField

class manimlib.mobject.vector_field.VectorField(func, **kwargs)

向量场

传入的 func 为自变量为一个点,返回值也为一个点的函数

  • delta_x, delta_y : 向量场每两个起点之间x/y轴的间隔(默认均为0.5)

  • x_min, x_max, y_min, y_max : 向量场的范围(默认为全屏)

  • min_magnitude, max_magnitude : 用于梯度颜色的最小和最大长度

  • colors : 需要的颜色梯度范围,默认为 [BLUE_E, GREEN, YELLOW, RED]

  • length_func : 映射向量长度的函数,可改为 linear 表示原长

  • vector_config : 每个向量的属性设置

初始化之后为一系列向量

StreamLines

class manimlib.mobject.vector_field.StreamLines(func, **kwargs)

流线

传入的 func 为自变量为一个点,返回值也为一个点的函数

随机生成一系列起点,并且根据func流动形成图形

  • x_min, x_max, y_min, y_max : 流线起点的范围

  • delta_x, delta_y : 每两个流线起点x/y的变化量

  • n_repeats : 起点重复多少次

  • dt : 每次流动的时间(默认为0.05)

  • virtual_time : 总共流动的时间(默认3) virtual_time/dt 为流动的次数

  • color_by_arc_length : 根据弧长上色(默认为True)

    • min_arc_length, max_arc_length : 最小最大的弧长

  • color_by_magnitude : 根据距离上色

    • min_magnitude, max_magnitude : 最小最大距离

  • colors : 颜色梯度的范围,默认为 [BLUE_E, GREEN, YELLOW, RED]

  • cutoff_norm : 运行每条流线的最大长度

ShowPassingFlashWithThinningStrokeWidth

class manimlib.mobject.vector_field.ShowPassingFlashWithThinningStrokeWidth(vmobject, **kwargs)

通过改变线条宽度来实现流动效果

传入的 vmobject 表示需要显示流动效果的物体(一般是 StreamLines

ShowPassingFlashWithThinningStrokeWidthExample
class ShowPassingFlashWithThinningStrokeWidthExample(Scene):
    def construct(self):
        sl = StreamLines(
            lambda p: rotate_vector(p / 3, 90 * DEGREES)
        )
        self.add(sl)
        self.wait()
        self.play(ShowPassingFlashWithThinningStrokeWidth(sl))
        self.wait()

AnimatedStreamLines

class manimlib.mobject.vector_field.AnimatedStreamLines(stream_lines, **kwargs)

自动实现流动效果的物体(利用 StreamLines 和转化为 updater 的动画)

传入的 stream_lines 为一个 StreamLines 实例

  • lag_range : 延迟的范围

  • line_anim_class : 对每条线执行的动画,默认为 ShowPassingFlash

  • line_anim_config : 对每条线执行动画的属性设置