3b1b-manim/old_projects/clacks/solution2/block_collision_scenes.py

77 lines
2.1 KiB
Python
Raw Normal View History

2019-01-25 11:47:55 -08:00
from big_ol_pile_of_manim_imports import *
2019-02-03 12:16:57 -08:00
from old_projects.clacks.question import BlocksAndWallExample
2019-01-25 11:47:55 -08:00
class PreviousTwoVideos(BlocksAndWallExample):
CONFIG = {
"sliding_blocks_config": {
"block1_config": {
2019-01-28 10:25:15 -08:00
"mass": 1e2,
"velocity": -2,
2019-01-28 10:25:15 -08:00
"width": 4,
"distance": 8,
2019-01-25 11:47:55 -08:00
},
"block2_config": {
2019-01-28 10:25:15 -08:00
"width": 4,
"distance": 3,
2019-01-25 11:47:55 -08:00
},
},
2019-01-28 10:25:15 -08:00
"floor_y": -3,
2019-01-25 11:47:55 -08:00
"wait_time": 15,
}
def setup(self):
2019-01-28 10:25:15 -08:00
super().setup()
blocks = self.blocks
2019-01-25 11:47:55 -08:00
videos = Group(
2019-01-28 10:25:15 -08:00
ImageMobject("ClacksSolution1Thumbnail"),
ImageMobject("ClacksQuestionThumbnail"),
2019-01-25 11:47:55 -08:00
)
2019-01-28 10:25:15 -08:00
for n, video, block in zip([2, 1], videos, blocks):
block.fade(1)
video.add(SurroundingRectangle(
video, buff=0,
color=BLUE,
stroke_width=3,
))
video.replace(block)
2019-01-25 11:47:55 -08:00
2019-01-28 10:25:15 -08:00
title = TextMobject("Part {}".format(n))
title.scale(1.5)
title.next_to(video, UP, MED_SMALL_BUFF)
video.add(title)
2019-01-25 11:47:55 -08:00
2019-01-28 10:25:15 -08:00
def update_videos(videos):
for video, block in zip(videos, blocks):
video.move_to(block, DOWN)
video.shift(0.04 * UP)
2019-01-25 11:47:55 -08:00
2019-01-28 10:25:15 -08:00
videos.add_updater(update_videos)
self.add(videos)
if self.show_flash_animations:
self.add(self.clack_flashes.mobject)
self.videos = videos
2019-01-25 11:47:55 -08:00
2019-01-28 10:25:15 -08:00
class IntroducePreviousTwoVideos(PreviousTwoVideos):
CONFIG = {
"show_flash_animations": False,
"include_sound": False,
}
2019-01-25 11:47:55 -08:00
2019-01-28 10:25:15 -08:00
def construct(self):
blocks = self.blocks
videos = self.videos
2019-01-25 11:47:55 -08:00
2019-01-28 10:25:15 -08:00
self.remove(blocks)
videos.clear_updaters()
self.remove(videos)
2019-01-25 11:47:55 -08:00
2019-01-28 10:25:15 -08:00
self.play(FadeInFromLarge(videos[1]))
self.play(TransformFromCopy(
videos[0].copy().fade(1).shift(2 * RIGHT),
videos[0],
rate_func=lambda t: rush_into(t, 3),
))
# self.wait()