3b1b-manim/manimlib/animation/growing.py

54 lines
1.4 KiB
Python

from manimlib.mobject.types.vectorized_mobject import VectorizedPoint
from manimlib.animation.transform import Transform
# from manimlib.utils.paths import counterclockwise_path
from manimlib.constants import PI
class GrowFromPoint(Transform):
CONFIG = {
"point_color": None,
}
def __init__(self, mobject, point, **kwargs):
self.point = point
super().__init__(mobject, **kwargs)
def create_target(self):
return self.mobject
def create_starting_mobject(self):
start = super().create_starting_mobject()
start.scale(0)
start.move_to(self.point)
if self.point_color:
start.set_color(self.point_color)
return start
class GrowFromCenter(GrowFromPoint):
def __init__(self, mobject, **kwargs):
point = mobject.get_center()
super().__init__(mobject, point, **kwargs)
class GrowFromEdge(GrowFromPoint):
def __init__(self, mobject, edge, **kwargs):
point = mobject.get_critical_point(edge)
super().__init__(mobject, point, **kwargs)
class GrowArrow(GrowFromPoint):
def __init__(self, arrow, **kwargs):
point = arrow.get_start()
super().__init__(arrow, point, **kwargs)
class SpinInFromNothing(GrowFromCenter):
CONFIG = {
"path_arc": PI,
}
class ShrinkToCenter(Transform):
def create_target(self):
return VectorizedPoint(self.mobject.get_center())