mirror of
https://github.com/3b1b/manim.git
synced 2025-07-31 05:52:34 +08:00
added animation steps for brick wall
This commit is contained in:
@ -1,19 +1,21 @@
|
|||||||
|
|
||||||
from big_ol_pile_of_manim_imports import *
|
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
|
||||||
|
|
||||||
|
class EntireBrickWall(BrickRowScene):
|
||||||
class EntireBrickWall(Scene):
|
|
||||||
|
|
||||||
def construct(self):
|
def construct(self):
|
||||||
|
|
||||||
|
self.remove(self.get_primary_pi_creature())
|
||||||
|
|
||||||
row_height = 0.3
|
row_height = 0.3
|
||||||
nb_rows = 20
|
nb_rows = 20
|
||||||
start_point = 3 * UP + 1 * LEFT
|
start_point = 3 * UP + 1 * LEFT
|
||||||
|
|
||||||
rows = VMobject()
|
rows = VMobject()
|
||||||
rows.add(BrickRow(0, height = row_height))
|
rows.add(BrickRow(0, height = row_height))
|
||||||
rows[0].move_to(start_point)
|
rows.move_to(start_point)
|
||||||
self.add(rows)
|
self.add(rows)
|
||||||
|
|
||||||
zero_counter = Integer(0).next_to(start_point + 0.5 * rows[0].width * RIGHT)
|
zero_counter = Integer(0).next_to(start_point + 0.5 * rows[0].width * RIGHT)
|
||||||
@ -22,8 +24,7 @@ class EntireBrickWall(Scene):
|
|||||||
self.add(zero_counter, nb_flips_text)
|
self.add(zero_counter, nb_flips_text)
|
||||||
|
|
||||||
for i in range(1, nb_rows + 1):
|
for i in range(1, nb_rows + 1):
|
||||||
rows.add(BrickRow(i, height = row_height))
|
rows.add(rows[-1].copy())
|
||||||
rows[-1].move_to(start_point + (i - 1) * row_height * DOWN)
|
|
||||||
self.bring_to_back(rows[-1])
|
self.bring_to_back(rows[-1])
|
||||||
anims = [
|
anims = [
|
||||||
rows[-1].shift, row_height * DOWN,
|
rows[-1].shift, row_height * DOWN,
|
||||||
@ -37,6 +38,12 @@ class EntireBrickWall(Scene):
|
|||||||
|
|
||||||
self.play(*anims)
|
self.play(*anims)
|
||||||
|
|
||||||
|
self.play(SplitRectsInBrickWall(rows[-1]))
|
||||||
|
rows.submobjects[-1] = self.merge_rects_by_subdiv(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):
|
||||||
@ -62,6 +69,12 @@ class EntireBrickWall(Scene):
|
|||||||
FadeIn(nb_tails_text)
|
FadeIn(nb_tails_text)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# remove any hidden brick rows
|
||||||
|
hidden_brick_rows = VGroup(*[mob for mob in self.mobjects
|
||||||
|
if isinstance(mob, BrickRow) and not mob in rows
|
||||||
|
])
|
||||||
|
self.remove(hidden_brick_rows)
|
||||||
|
|
||||||
special_brick_copy = rows[-1].rects[13].copy()
|
special_brick_copy = rows[-1].rects[13].copy()
|
||||||
self.play(
|
self.play(
|
||||||
rows.fade, 0.9,
|
rows.fade, 0.9,
|
||||||
|
@ -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.02
|
||||||
)
|
)
|
||||||
subdivs.add(subdiv)
|
subdivs.add(subdiv)
|
||||||
anims.append(ShowCreation(subdiv))
|
anims.append(ShowCreation(subdiv))
|
||||||
|
Reference in New Issue
Block a user