同伦

限定名称: manim.animation.movement.Homotopy

Homotopy(mobject=None, *args, use_override=True, **kwargs)[source]

基类: Animation

一个同伦动画。

这是一个根据指定变换函数对mobject点进行变换的动画。参数\(t\)在动画过程中从0到1变化,\((x, y, z)\)描述了mobject点的坐标,传递给homotopy关键字参数的函数应该将元组\((x, y, z, t)\)变换为\((x', y', z')\),即原始点在时间\(t\)时变换到的坐标。

参数:
  • homotopy (Callable[[float, float, float, float], tuple[float, float, float]]) – 一个将\((x, y, z, t)\)映射到\((x', y', z')\)的函数。

  • mobject (Mobject) – 在给定同伦下被变换的mobject。

  • run_time (float) – 动画的运行时间。

  • apply_function_kwargs (dict[str, Any] | None) – 传递给Mobject.apply_function()的关键字参数。

  • kwargs – 传递给父类的其他关键字参数。

示例

示例: HomotopyExample

from manim import *

class HomotopyExample(Scene):
    def construct(self):
        square = Square()

        def homotopy(x, y, z, t):
            if t <= 0.25:
                progress = t / 0.25
                return (x, y + progress * 0.2 * np.sin(x), z)
            else:
                wave_progress = (t - 0.25) / 0.75
                return (x, y + 0.2 * np.sin(x + 10 * wave_progress), z)

        self.play(Homotopy(homotopy, square, rate_func= linear, run_time=2))
class HomotopyExample(Scene):
    def construct(self):
        square = Square()

        def homotopy(x, y, z, t):
            if t <= 0.25:
                progress = t / 0.25
                return (x, y + progress * 0.2 * np.sin(x), z)
            else:
                wave_progress = (t - 0.25) / 0.75
                return (x, y + 0.2 * np.sin(x + 10 * wave_progress), z)

        self.play(Homotopy(homotopy, square, rate_func= linear, run_time=2))

方法

function_at_time_t

interpolate_submobject

属性

run_time

_original__init__(homotopy, mobject, run_time=3, apply_function_kwargs=None, **kwargs)

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

参数:
  • homotopy (Callable[[float, float, float, float], tuple[float, float, float]])

  • mobject (Mobject)

  • run_time (float)

  • apply_function_kwargs (dict[str, Any] | None)

返回类型: