Files
manim/old_projects/clacks/solution2/block_collision_scenes.py
2019-05-02 20:36:14 -07:00

77 lines
2.0 KiB
Python

from manimlib.imports import *
from old_projects.clacks.question import BlocksAndWallExample
class PreviousTwoVideos(BlocksAndWallExample):
CONFIG = {
"sliding_blocks_config": {
"block1_config": {
"mass": 1e2,
"velocity": -2,
"width": 4,
"distance": 8,
},
"block2_config": {
"width": 4,
"distance": 3,
},
},
"floor_y": -3,
"wait_time": 15,
}
def setup(self):
super().setup()
blocks = self.blocks
videos = Group(
ImageMobject("ClacksSolution1Thumbnail"),
ImageMobject("ClacksQuestionThumbnail"),
)
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)
title = TextMobject("Part {}".format(n))
title.scale(1.5)
title.next_to(video, UP, MED_SMALL_BUFF)
video.add(title)
def update_videos(videos):
for video, block in zip(videos, blocks):
video.move_to(block, DOWN)
video.shift(0.04 * UP)
videos.add_updater(update_videos)
self.add(videos)
if self.show_flash_animations:
self.add(self.clack_flashes.mobject)
self.videos = videos
class IntroducePreviousTwoVideos(PreviousTwoVideos):
CONFIG = {
"show_flash_animations": False,
"include_sound": False,
}
def construct(self):
blocks = self.blocks
videos = self.videos
self.remove(blocks)
videos.clear_updaters()
self.remove(videos)
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()