同伦¶
限定名称: 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