Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def show_border_and_reflines(self):
self.set_camera_orientation(*DIAG_POS)
self.wait()
init_ct = self.cts[0]
border = init_ct.get_border()
reflines = Reflines(init_ct)
self.play(ShowCreation(border))
self.wait(3)
self.play(
Write(reflines, rate_func = smooth, submobject_mode = "lagged_start"),
Animation(border),
run_time = 3,
)
self.play(
Indicate(VGroup(border, reflines), scale_factor = 1.05),
run_time = 2,
)
self.wait()
self.border = border
self.reflines = reflines
def show_reflines(self):
reflines = VGroup(*[rhombus.get_refline() for rhombus in self.rhombi])
eqtri_text = self.bg_texts[1]
self.play(
Write(eqtri_text),
ShowCreation(reflines),
Animation(self.rhombi),
run_time = 3
)
self.play(
Indicate(VGroup(self.rhombi, reflines), scale_factor = 1.05),
run_time = 2,
)
self.wait()
self.reflines = reflines
import numpy as np
from manimlib.animation.animation import Animation
from manimlib.mobject.mobject import Group
from manimlib.utils.bezier import integer_interpolate
from manimlib.utils.bezier import interpolate
from manimlib.utils.config_ops import digest_config
from manimlib.utils.iterables import remove_list_redundancies
from manimlib.utils.rate_functions import linear
DEFAULT_LAGGED_START_LAG_RATIO = 0.05
class AnimationGroup(Animation):
CONFIG = {
# If None, this defaults to the sum of all
# internal animations
"run_time": None,
"rate_func": linear,
# If 0, all animations are played at once.
# If 1, all are played successively.
# If >0 and <1, they start at lagged times
# from one and other.
"lag_ratio": 0,
"group": None,
}
def __init__(self, *animations, **kwargs):
digest_config(self, kwargs)
self.animations = animations
import numpy as np
from manimlib.animation.animation import Animation
from manimlib.constants import DEFAULT_POINTWISE_FUNCTION_RUN_TIME
from manimlib.constants import OUT
from manimlib.constants import DEGREES
from manimlib.mobject.mobject import Group
from manimlib.mobject.mobject import Mobject
from manimlib.utils.config_ops import digest_config
from manimlib.utils.paths import path_along_arc
from manimlib.utils.paths import straight_path
from manimlib.utils.rate_functions import smooth
from manimlib.utils.rate_functions import squish_rate_func
class Transform(Animation):
CONFIG = {
"path_arc": 0,
"path_arc_axis": OUT,
"path_func": None,
"replace_mobject_with_target_in_scene": False,
}
def __init__(self, mobject, target_mobject=None, **kwargs):
super().__init__(mobject, **kwargs)
self.target_mobject = target_mobject
self.init_path_func()
def init_path_func(self):
if self.path_func is not None:
return
elif self.path_arc == 0:
"about_point": clock.get_center()
}
hour_radians = -self.hours_passed * 2 * np.pi / 12
self.hour_rotation = Rotating(
clock.hour_hand,
radians=hour_radians,
**rot_kwargs
)
self.hour_rotation.begin()
self.minute_rotation = Rotating(
clock.minute_hand,
radians=12 * hour_radians,
**rot_kwargs
)
self.minute_rotation.begin()
Animation.__init__(self, clock, **kwargs)
def apply_function(self, function, added_anims=[], **kwargs):
if "run_time" not in kwargs:
kwargs["run_time"] = 3
anims = [
ApplyPointwiseFunction(function, t_mob)
for t_mob in self.transformable_mobjects
] + [
self.get_vector_movement(function),
self.get_transformable_label_movement(),
self.get_moving_mobject_movement(function),
] + [
Animation(f_mob)
for f_mob in self.foreground_mobjects
] + added_anims
self.play(*anims, **kwargs)
def __init__(self, mobject, **kwargs):
super().__init__(
ShowCreation(mobject),
FadeOut(mobject),
**kwargs
)
class AnimationOnSurroundingRectangle(AnimationGroup):
CONFIG = {
"surrounding_rectangle_config": {},
# Function which takes in a rectangle, and spits
# out some animation. Could be some animation class,
# could be something more
"rect_animation": Animation
}
def __init__(self, mobject, **kwargs):
digest_config(self, kwargs)
if "surrounding_rectangle_config" in kwargs:
kwargs.pop("surrounding_rectangle_config")
self.mobject_to_surround = mobject
rect = self.get_rect()
rect.add_updater(lambda r: r.move_to(mobject))
super().__init__(
self.rect_animation(rect, **kwargs),
)
def get_rect(self):
def __init__(self, text_mobject, **kwargs):
digest_config(self, kwargs)
tpc = self.time_per_char
anims = it.chain(*[
[
ShowIncreasingSubsets(word, run_time=tpc * len(word)),
Animation(word, run_time=0.005 * len(word)**1.5),
]
for word in text_mobject
])
super().__init__(*anims, **kwargs)
from manimlib.animation.animation import Animation
from manimlib.constants import *
from manimlib.utils.config_ops import digest_config
class UpdateFromFunc(Animation):
"""
update_function of the form func(mobject), presumably
to be used when the state of one mobject is dependent
on another simultaneously animated mobject
"""
def __init__(self, mobject, update_function, **kwargs):
digest_config(self, kwargs, locals())
Animation.__init__(self, mobject, **kwargs)
def update_mobject(self, alpha):
self.update_function(self.mobject)
class UpdateFromAlphaFunc(UpdateFromFunc):
def update_mobject(self, alpha):
CONFIG = {
"scale_factor": 2,
}
def __init__(self, mobject, scale_factor=2, **kwargs):
if scale_factor is not None:
self.scale_factor = scale_factor
super().__init__(mobject, **kwargs)
def create_starting_mobject(self):
start = super().create_starting_mobject()
start.scale(self.scale_factor)
return start
class VFadeIn(Animation):
"""
VFadeIn and VFadeOut only work for VMobjects,
"""
CONFIG = {
"suspend_mobject_updating": False,
}
def interpolate_submobject(self, submob, start, alpha):
submob.set_stroke(
opacity=interpolate(0, start.get_stroke_opacity(), alpha)
)
submob.set_fill(
opacity=interpolate(0, start.get_fill_opacity(), alpha)
)