Skip to content

Commit

Permalink
docs: movement
Browse files Browse the repository at this point in the history
  • Loading branch information
jkjkil4 committed May 27, 2024
1 parent cc25699 commit 6a4529d
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 12 deletions.
Binary file not shown.
Binary file added doc/source/_static/videos/HomotopyExample.mp4
Binary file not shown.
Binary file not shown.
75 changes: 71 additions & 4 deletions doc/source/janim/anims/movement.rst
Original file line number Diff line number Diff line change
@@ -1,8 +1,75 @@
movement
========

.. automodule:: janim.anims.movement
:members:
:undoc-members:
:show-inheritance:
.. autoclass:: janim.anims.movement.Homotopy
:show-inheritance:

.. janim-example:: HomotopyExample
:media: ../../_static/videos/HomotopyExample.mp4

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)

.. autoclass:: janim.anims.movement.ComplexHomotopy
:show-inheritance:

.. janim-example:: ComplexHomotopyExample
:media: ../../_static/videos/ComplexHomotopyExample.mp4

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)
.. autoclass:: janim.anims.movement.MoveAlongPath
:show-inheritance:

.. janim-example:: MoveAlongPathExample
:media: ../../_static/videos/MoveAlongPathExample.mp4

from janim.imports import *

class MoveAlongPathExample(Timeline):
def construct(self) -> None:
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)
16 changes: 8 additions & 8 deletions janim/anims/movement.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@


class Homotopy(DataUpdater):
'''
一个从 (x, y, z, t) 到 (x’, y’, z’) 的函数
t 的取值范围是 [0, 1],表示动画进度
'''
def __init__(
self,
item: Item,
Expand All @@ -21,11 +26,6 @@ def __init__(
root_only: bool = False,
**kwargs
):
'''
一个从 (x, y, z, t) 到 (x’, y’, z’) 的函数
t 的取值范围是 [0, 1],表示动画进度
'''
self.homotopy = homotopy
super().__init__(
item,
Expand All @@ -47,15 +47,15 @@ def fn(point: np.ndarray) -> Vect:


class ComplexHomotopy(Homotopy):
'''
与 Homotopy 类似,区别是用复数描述坐标
'''
def __init__(
self,
item: Item,
complex_homotopy: Callable[[complex, float], complex],
**kwargs
):
'''
与 Homotopy 类似,区别是用复数描述坐标
'''
def homotopy(x, y, z, t):
c = complex_homotopy(complex(x, y), t)
return (c.real, c.imag, z)
Expand Down

0 comments on commit 6a4529d

Please sign in to comment.