From 43a583fc4fe559df11fa60e226de71c59b2130bf Mon Sep 17 00:00:00 2001 From: Grant Sanderson Date: Fri, 25 Jan 2019 11:47:55 -0800 Subject: [PATCH] Beginning clacks_solution2 animations --- .../solution2/block_collision_scenes.py | 63 +++++++++++++++++++ .../clacks/solution2/pi_creature_scenes.py | 6 ++ .../clacks/solution2/simple_scenes.py | 17 +++++ active_projects/clacks_solution2.py | 6 ++ 4 files changed, 92 insertions(+) create mode 100644 active_projects/clacks/solution2/block_collision_scenes.py create mode 100644 active_projects/clacks/solution2/pi_creature_scenes.py create mode 100644 active_projects/clacks/solution2/simple_scenes.py create mode 100644 active_projects/clacks_solution2.py diff --git a/active_projects/clacks/solution2/block_collision_scenes.py b/active_projects/clacks/solution2/block_collision_scenes.py new file mode 100644 index 00000000..3a54fed5 --- /dev/null +++ b/active_projects/clacks/solution2/block_collision_scenes.py @@ -0,0 +1,63 @@ +from big_ol_pile_of_manim_imports import * +from active_projects.clacks.question import BlocksAndWallExample + + +class PreviousTwoVideos(BlocksAndWallExample): + CONFIG = { + "sliding_blocks_config": { + "block1_config": { + "mass": 1e4, + "velocity": -2, + "width": 3, + }, + "block2_config": { + "width": 3, + }, + }, + "wait_time": 15, + } + + def setup(self): + videos = Group( + ImageMobject + ) + + name_mobs = VGroup(*map(TextMobject, names)) + name_mobs.set_stroke(BLACK, 3, background=True) + name_mobs.set_fill(LIGHT_GREY, 1) + name_mobs.set_sheen(3, UL) + name_mobs.scale(2) + configs = [ + self.sliding_blocks_config["block1_config"], + self.sliding_blocks_config["block2_config"], + ] + for name_mob, config in zip(name_mobs, configs): + config["width"] = name_mob.get_width() + self.name_mobs = name_mobs + + super().setup() + + def add_blocks(self): + super().add_blocks() + blocks = self.blocks + name_mobs = self.name_mobs + + blocks.fade(1) + + def update_name_mobs(name_mobs): + for name_mob, block in zip(name_mobs, self.blocks): + name_mob.move_to(block) + target_y = block.get_bottom()[1] + SMALL_BUFF + curr_y = name_mob[0].get_bottom()[1] + name_mob.shift((target_y - curr_y) * UP) + + name_mobs.add_updater(update_name_mobs) + self.add(name_mobs) + + clack_y = self.name_mobs[1].get_center()[1] + for location, time in self.clack_data: + location[1] = clack_y + + for block, name_mob in zip(blocks, name_mobs): + block.label.next_to(name_mob, UP) + block.label.set_fill(YELLOW, opacity=1) diff --git a/active_projects/clacks/solution2/pi_creature_scenes.py b/active_projects/clacks/solution2/pi_creature_scenes.py new file mode 100644 index 00000000..b6c3492e --- /dev/null +++ b/active_projects/clacks/solution2/pi_creature_scenes.py @@ -0,0 +1,6 @@ +from big_ol_pile_of_manim_imports import * + + +class NewSceneName(TeacherStudentsScene): + def construct(self): + pass diff --git a/active_projects/clacks/solution2/simple_scenes.py b/active_projects/clacks/solution2/simple_scenes.py new file mode 100644 index 00000000..955f5503 --- /dev/null +++ b/active_projects/clacks/solution2/simple_scenes.py @@ -0,0 +1,17 @@ +from big_ol_pile_of_manim_imports import * +from active_projects.clacks.question import BlocksAndWallExample + + +class PreviousTwoVideos(BlocksAndWallExample): + CONFIG = { + "sliding_blocks_config": { + "block1_config": { + "mass": 1e0, + "velocity": -2, + } + }, + "wait_time": 15, + } + + def construct(self): + pass diff --git a/active_projects/clacks_solution2.py b/active_projects/clacks_solution2.py new file mode 100644 index 00000000..6840c08d --- /dev/null +++ b/active_projects/clacks_solution2.py @@ -0,0 +1,6 @@ +from active_projects.clacks.solution2 import block_collision_scenes + +OUTPUT_DIRECTORY = "clacks_solution2" +ALL_SCENE_CLASSES = [ + block_collision_scenes.PreviousTwoVideos +]