mirror of
https://github.com/3b1b/manim.git
synced 2025-07-31 05:52:34 +08:00
zoom in on BrickRowScene
This commit is contained in:
@ -3,7 +3,12 @@ from big_ol_pile_of_manim_imports import *
|
|||||||
from active_projects.eop.reusable_imports import *
|
from active_projects.eop.reusable_imports import *
|
||||||
from active_projects.eop.chapter1.brick_row_scene import BrickRowScene
|
from active_projects.eop.chapter1.brick_row_scene import BrickRowScene
|
||||||
|
|
||||||
class EntireBrickWall(BrickRowScene):
|
class EntireBrickWall(BrickRowScene, MovingCameraScene):
|
||||||
|
|
||||||
|
def setup(self):
|
||||||
|
super(BrickRowScene, self).setup()
|
||||||
|
super(PiCreatureScene, self).setup()
|
||||||
|
|
||||||
|
|
||||||
def construct(self):
|
def construct(self):
|
||||||
|
|
||||||
@ -45,7 +50,6 @@ class EntireBrickWall(BrickRowScene):
|
|||||||
rows.submobjects[-1] = self.merge_rects_by_coloring(rows[-1])
|
rows.submobjects[-1] = self.merge_rects_by_coloring(rows[-1])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# draw indices under the last row for the number of tails
|
# draw indices under the last row for the number of tails
|
||||||
tails_counters = VGroup()
|
tails_counters = VGroup()
|
||||||
for (i, rect) in enumerate(rows[-1].rects):
|
for (i, rect) in enumerate(rows[-1].rects):
|
||||||
@ -83,6 +87,7 @@ class EntireBrickWall(BrickRowScene):
|
|||||||
last_row_rect = SurroundingRectangle(rows[-1], buff = 0)
|
last_row_rect = SurroundingRectangle(rows[-1], buff = 0)
|
||||||
last_row_rect.set_stroke(color = YELLOW, width = 6)
|
last_row_rect.set_stroke(color = YELLOW, width = 6)
|
||||||
|
|
||||||
|
rows.save_state()
|
||||||
self.play(
|
self.play(
|
||||||
rows.fade, 0.9,
|
rows.fade, 0.9,
|
||||||
ShowCreation(last_row_rect)
|
ShowCreation(last_row_rect)
|
||||||
@ -102,24 +107,40 @@ class EntireBrickWall(BrickRowScene):
|
|||||||
highlighted_brick(row = 20, nb_tails = i)
|
highlighted_brick(row = 20, nb_tails = i)
|
||||||
for i in range(20)
|
for i in range(20)
|
||||||
]
|
]
|
||||||
|
self.wait()
|
||||||
self.play(
|
self.play(
|
||||||
FadeIn(highlighted_bricks[10])
|
FadeIn(highlighted_bricks[10])
|
||||||
)
|
)
|
||||||
|
self.wait()
|
||||||
self.play(
|
self.play(
|
||||||
FadeOut(highlighted_bricks[10]),
|
FadeOut(highlighted_bricks[10]),
|
||||||
FadeIn(highlighted_bricks[9]),
|
FadeIn(highlighted_bricks[9]),
|
||||||
FadeIn(highlighted_bricks[11]),
|
FadeIn(highlighted_bricks[11]),
|
||||||
)
|
)
|
||||||
|
self.wait()
|
||||||
self.play(
|
self.play(
|
||||||
FadeOut(highlighted_bricks[9]),
|
FadeOut(highlighted_bricks[9]),
|
||||||
FadeOut(highlighted_bricks[11]),
|
FadeOut(highlighted_bricks[11]),
|
||||||
FadeIn(highlighted_bricks[8]),
|
FadeIn(highlighted_bricks[8]),
|
||||||
FadeIn(highlighted_bricks[12]),
|
FadeIn(highlighted_bricks[12]),
|
||||||
)
|
)
|
||||||
|
self.wait()
|
||||||
|
self.play(
|
||||||
|
FadeOut(highlighted_bricks[8]),
|
||||||
|
FadeOut(highlighted_bricks[12]),
|
||||||
|
FadeOut(last_row_rect),
|
||||||
|
rows.restore,
|
||||||
|
)
|
||||||
|
self.wait()
|
||||||
|
new_frame = self.camera_frame.copy()
|
||||||
|
new_frame.scale(0.0001).move_to(rows.get_corner(DR))
|
||||||
|
|
||||||
|
self.play(
|
||||||
|
Transform(self.camera_frame, new_frame,
|
||||||
|
run_time = 9,
|
||||||
|
rate_func = exponential_decay
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -184,6 +184,7 @@ class SplitRectsInBrickWall(AnimationGroup):
|
|||||||
|
|
||||||
def __init__(self, mobject, **kwargs):
|
def __init__(self, mobject, **kwargs):
|
||||||
|
|
||||||
|
#print mobject.height, mobject.get_height()
|
||||||
r = self.subdiv_level = mobject.subdiv_level + 1
|
r = self.subdiv_level = mobject.subdiv_level + 1
|
||||||
|
|
||||||
subdivs = VGroup()
|
subdivs = VGroup()
|
||||||
@ -196,6 +197,7 @@ class SplitRectsInBrickWall(AnimationGroup):
|
|||||||
subdiv = DashedLine(
|
subdiv = DashedLine(
|
||||||
mobject.get_top() + x * RIGHT,
|
mobject.get_top() + x * RIGHT,
|
||||||
mobject.get_bottom() + x * RIGHT,
|
mobject.get_bottom() + x * RIGHT,
|
||||||
|
dashed_segment_length = 0.05
|
||||||
)
|
)
|
||||||
subdivs.add(subdiv)
|
subdivs.add(subdiv)
|
||||||
anims.append(ShowCreation(subdiv))
|
anims.append(ShowCreation(subdiv))
|
||||||
|
@ -82,3 +82,24 @@ def squish_rate_func(func, a=0.4, b=0.6):
|
|||||||
|
|
||||||
def lingering(t):
|
def lingering(t):
|
||||||
return squish_rate_func(lambda t: t, 0, 0.8)(t)
|
return squish_rate_func(lambda t: t, 0, 0.8)(t)
|
||||||
|
|
||||||
|
def exponential_decay(t, half_life = 0.1):
|
||||||
|
# The half-life should be rather small to minimize the cut-off error at the end
|
||||||
|
return 1 - np.exp(-t/half_life)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user