movement¶
- class janim.anims.movement.Homotopy(item: Item, homotopy: Callable[[float, float, float, float], Vect], *, duration: float = 3.0, root_only: bool = False, **kwargs)¶
基类:
DataUpdater一个从
(x, y, z, t)到(x', y', z')的函数t的取值范围是[0, 1],表示动画进度HomotopyExample ¶
from janim.imports import * class HomotopyExample(Timeline): def construct(self): def homotopy_func(x, y, z, t): return [x * t, y * t, z] square = Square() self.play(Homotopy(square, homotopy_func)) self.forward(0.3)
- class janim.anims.movement.ComplexHomotopy(item: Item, complex_homotopy: Callable[[complex, float], complex], **kwargs)¶
基类:
Homotopy与
Homotopy类似,区别是用复数描述坐标ComplexHomotopyExample ¶
from janim.imports import * class ComplexHomotopyExample(Timeline): def construct(self): def complex_func(z: complex, t: float) -> complex: return interpolate(z, z**3, t) group = Group( Text('Text'), Square(side_length=1), ) group.points.arrange(RIGHT, buff=2) self.play( *[ComplexHomotopy( item, complex_func ) for item in group] ) self.forward(0.3)
- class janim.anims.movement.MoveAlongPath(item: Item, path: VItem, *, root_only: bool = False, **kwargs)¶
基类:
DataUpdaterMoveAlongPathExample ¶
from janim.imports import * class MoveAlongPathExample(Timeline): def construct(self): line = Line(ORIGIN, RIGHT * Config.get.frame_width, buff=1) dot1 = Dot(color=YELLOW) curve = ParametricCurve( lambda t: [math.cos(t) * t * 0.2, math.sin(t) * t * 0.2, 0], (0, 10, 0.1) ) dot2 = Dot(color=YELLOW) group = Group(line, curve).show() group.points.arrange(DOWN) self.play( MoveAlongPath(dot1, line), MoveAlongPath(dot2, curve), duration=2 ) self.forward(0.3)
- class janim.anims.movement.Follow(item: Points, other: Item, direction: Vect = array([1., 0., 0.]), buff: float = 0.25, aligned_edge: Vect = array([0., 0., 0.]), coor_mask: Iterable = (1, 1, 1), item_root_only: bool = False, **kwargs)¶
基类:
GroupUpdater[Points]FollowExample ¶
from janim.imports import * class FollowExample(Timeline): def construct(self): dot = Dot(RIGHT * 2).show() txt = Text('dot').show() txt.points.next_to(dot, DOWN) self.forward() self.play( Succession( Rotate(dot, PI * 3 / 2, about_point=ORIGIN), dot.anim.points.shift(UP * 4), duration=3 ), Follow(txt, dot, DOWN, duration=3), ) self.forward()