mirror of
https://github.com/3b1b/manim.git
synced 2025-07-29 04:53:34 +08:00
119 lines
3.7 KiB
Python
119 lines
3.7 KiB
Python
from manimlib.imports import *
|
|
|
|
|
|
class OnAnsweringTwice(TeacherStudentsScene):
|
|
def construct(self):
|
|
question = TextMobject("Why $\\pi$?")
|
|
question.move_to(self.screen)
|
|
question.to_edge(UP)
|
|
other_questions = VGroup(
|
|
TextMobject("Frequency of collisions?"),
|
|
TextMobject("Efficient simulation?"),
|
|
TextMobject("Time until last collision?"),
|
|
)
|
|
for mob in other_questions:
|
|
mob.move_to(self.hold_up_spot, DOWN)
|
|
|
|
self.add(question)
|
|
|
|
self.student_says(
|
|
"But we already \\\\ solved it",
|
|
bubble_kwargs={"direction": LEFT},
|
|
target_mode="raise_left_hand",
|
|
added_anims=[self.teacher.change, "thinking"]
|
|
)
|
|
self.change_student_modes("sassy", "angry")
|
|
self.wait()
|
|
self.play(
|
|
RemovePiCreatureBubble(self.students[2]),
|
|
self.get_student_changes("erm", "erm"),
|
|
ApplyMethod(
|
|
question.move_to, self.hold_up_spot, DOWN,
|
|
path_arc=-90 * DEGREES,
|
|
),
|
|
self.teacher.change, "raise_right_hand",
|
|
)
|
|
shown_questions = VGroup(question)
|
|
for oq in other_questions:
|
|
self.play(
|
|
shown_questions.shift, 0.85 * UP,
|
|
FadeInFromDown(oq),
|
|
self.get_student_changes(
|
|
*["pondering"] * 3,
|
|
look_at_arg=oq
|
|
)
|
|
)
|
|
shown_questions.add(oq)
|
|
self.wait(3)
|
|
|
|
|
|
class AskAboutEqualMassMomentumTransfer(TeacherStudentsScene):
|
|
def construct(self):
|
|
self.student_says("Why?")
|
|
self.change_student_modes("confused", "confused")
|
|
self.wait()
|
|
self.play(
|
|
RemovePiCreatureBubble(self.students[2]),
|
|
self.teacher.change, "raise_right_hand"
|
|
)
|
|
self.change_all_student_modes("pondering")
|
|
self.look_at(self.hold_up_spot + 2 * UP)
|
|
self.wait(5)
|
|
|
|
|
|
class ComplainAboutRelevanceOfAnalogy(TeacherStudentsScene):
|
|
def construct(self):
|
|
self.student_says(
|
|
"Why would \\\\ you care",
|
|
target_mode="maybe"
|
|
)
|
|
self.change_student_modes(
|
|
"angry", "sassy", "maybe",
|
|
added_anims=[self.teacher.change, "guilty"]
|
|
)
|
|
self.wait(2)
|
|
self.play(
|
|
self.teacher.change, "raise_right_hand",
|
|
self.get_student_changes(
|
|
"pondering", "erm", "pondering",
|
|
look_at_arg=self.hold_up_spot,
|
|
),
|
|
RemovePiCreatureBubble(self.students[2])
|
|
)
|
|
self.play(
|
|
self.students[2].change, "thinking",
|
|
self.hold_up_spot + UP,
|
|
)
|
|
self.wait(3)
|
|
|
|
|
|
class ReplaceOneTrickySceneWithAnother(TeacherStudentsScene):
|
|
def construct(self):
|
|
self.student_says(
|
|
"This replaces one tricky\\\\problem with another",
|
|
student_index=1,
|
|
target_mode="sassy",
|
|
added_anims=[self.teacher.change, "happy"],
|
|
)
|
|
self.change_student_modes("erm", "sassy", "angry")
|
|
self.wait(4)
|
|
self.play(
|
|
RemovePiCreatureBubble(self.students[1]),
|
|
self.teacher.change, "raise_right_hand",
|
|
self.get_student_changes(*3 * ["pondering"])
|
|
)
|
|
self.look_at(self.hold_up_spot + 2 * UP)
|
|
self.wait(5)
|
|
|
|
|
|
class NowForTheGoodPart(TeacherStudentsScene):
|
|
def construct(self):
|
|
self.teacher_says(
|
|
r"Now for the \\ good part!",
|
|
target_mode="hooray",
|
|
added_anims=[self.get_student_changes(
|
|
"hooray", "surprised", "happy"
|
|
)],
|
|
)
|
|
self.wait(2)
|