mirror of
https://github.com/3b1b/manim.git
synced 2025-08-05 16:49:03 +00:00
putting things together in the intro scene
This commit is contained in:
parent
75c0ed84c8
commit
426f59b9f9
1 changed files with 69 additions and 80 deletions
|
@ -378,36 +378,6 @@ class CoinFlipTree(VGroup):
|
|||
|
||||
|
||||
|
||||
class TestScene(Scene):
|
||||
|
||||
def construct(self):
|
||||
|
||||
#seq = CoinSequence(["H", "T", "T", "H"]).move_to(2 * LEFT)
|
||||
#self.add(seq)
|
||||
|
||||
#stack = TallyStack(4,7, coin_thickness = COIN_THICKNESS)
|
||||
#self.add(stack)
|
||||
|
||||
tree = CoinFlipTree(nb_levels = 7, sort_until_level = 0)
|
||||
tree.move_to(ORIGIN)
|
||||
self.add(tree)
|
||||
|
||||
for i in range(1, 8):
|
||||
new_tree = CoinFlipTree(nb_levels = 7, sort_until_level = i)
|
||||
new_tree.move_to(ORIGIN)
|
||||
self.play(Transform(tree, new_tree))
|
||||
self.wait()
|
||||
|
||||
self.wait()
|
||||
|
||||
|
||||
class CoinFlipBranchToAreaScene(Scene):
|
||||
|
||||
def construct(self):
|
||||
|
||||
pass
|
||||
|
||||
|
||||
|
||||
class Chapter1OpeningQuote(OpeningQuote):
|
||||
CONFIG = {
|
||||
|
@ -441,6 +411,7 @@ class Introduction(TeacherStudentsScene):
|
|||
|
||||
def construct(self):
|
||||
self.show_series()
|
||||
self.show_area_model1()
|
||||
|
||||
def show_series(self):
|
||||
series = VideoSeries()
|
||||
|
@ -491,28 +462,28 @@ class Introduction(TeacherStudentsScene):
|
|||
Animation(self.teacher.bubble.content),
|
||||
])
|
||||
|
||||
essence_words = words.get_part_by_tex("Essence").copy()
|
||||
self.play(
|
||||
FadeOut(self.teacher.bubble),
|
||||
FadeOut(self.teacher.bubble.content),
|
||||
essence_words.next_to, series, DOWN,
|
||||
*[
|
||||
ApplyMethod(pi.change_mode, "pondering")
|
||||
for pi in self.get_pi_creatures()
|
||||
]
|
||||
)
|
||||
self.wait(3)
|
||||
self.wait()
|
||||
|
||||
self.series = series
|
||||
self.essence_words = essence_words
|
||||
|
||||
class IllustrateAreaModel1(Scene):
|
||||
# # # # # # # # # # # # # # # # # #
|
||||
# show examples of the area model #
|
||||
# # # # # # # # # # # # # # # # # #
|
||||
|
||||
def construct(self):
|
||||
|
||||
def show_area_model1(self):
|
||||
|
||||
# show independent events
|
||||
|
||||
sample_space_width = sample_space_height = 3.0
|
||||
sample_space_width = sample_space_height = 2.5
|
||||
p_of_A = 0.7
|
||||
p_of_not_A = 1 - p_of_A
|
||||
p_of_B = 0.8
|
||||
|
@ -525,7 +496,8 @@ class IllustrateAreaModel1(Scene):
|
|||
stroke_width = 0,
|
||||
fill_color = BLUE,
|
||||
fill_opacity = 1.0
|
||||
)
|
||||
).move_to(2 * RIGHT + 1.5 * UP)
|
||||
|
||||
rect_not_A = Rectangle(
|
||||
width = p_of_not_A * sample_space_width,
|
||||
height = 1 * sample_space_height,
|
||||
|
@ -539,18 +511,13 @@ class IllustrateAreaModel1(Scene):
|
|||
brace_not_A = Brace(rect_not_A, DOWN)
|
||||
label_not_A = TexMobject("P(\\text{not }A)").next_to(brace_not_A, DOWN).scale(0.7)
|
||||
|
||||
self.play(
|
||||
LaggedStart(FadeIn, VGroup(rect_A, rect_not_A), lag_factor = 0.5)
|
||||
)
|
||||
self.play(
|
||||
ShowCreation(brace_A),
|
||||
Write(label_A),
|
||||
)
|
||||
# self.play(
|
||||
# ShowCreation(brace_not_A),
|
||||
# Write(label_not_A),
|
||||
# LaggedStart(FadeIn, VGroup(rect_A, rect_not_A), lag_factor = 0.5)
|
||||
# )
|
||||
# self.play(
|
||||
# ShowCreation(brace_A),
|
||||
# Write(label_A),
|
||||
# )
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -576,16 +543,12 @@ class IllustrateAreaModel1(Scene):
|
|||
brace_not_B = Brace(rect_not_B, LEFT)
|
||||
label_not_B = TexMobject("P(\\text{not }B)").next_to(brace_not_B, LEFT).scale(0.7)
|
||||
|
||||
self.play(
|
||||
LaggedStart(FadeIn, VGroup(rect_B, rect_not_B), lag_factor = 0.5)
|
||||
)
|
||||
self.play(
|
||||
ShowCreation(brace_B),
|
||||
Write(label_B),
|
||||
)
|
||||
# self.play(
|
||||
# ShowCreation(brace_not_B),
|
||||
# Write(label_not_B),
|
||||
# LaggedStart(FadeIn, VGroup(rect_B, rect_not_B), lag_factor = 0.5)
|
||||
# )
|
||||
# self.play(
|
||||
# ShowCreation(brace_B),
|
||||
# Write(label_B),
|
||||
# )
|
||||
|
||||
rect_A_and_B = Rectangle(
|
||||
|
@ -597,11 +560,9 @@ class IllustrateAreaModel1(Scene):
|
|||
label_A_and_B = TexMobject("P(A\\text{ and }B)").scale(0.7)
|
||||
label_A_and_B.move_to(rect_A_and_B)
|
||||
|
||||
self.play(
|
||||
ShowCreation(rect_A_and_B)
|
||||
)
|
||||
self.play(FadeIn(label_A_and_B))
|
||||
self.add_foreground_mobject(label_A_and_B)
|
||||
# self.play(
|
||||
# ShowCreation(rect_A_and_B)
|
||||
# )
|
||||
|
||||
indep_formula = TexMobject("P(A\\text{ and }B)", "=", "P(A)", "\cdot", "P(B)")
|
||||
indep_formula = indep_formula.scale(0.7).next_to(rect_not_B, UP, buff = MED_LARGE_BUFF)
|
||||
|
@ -609,16 +570,19 @@ class IllustrateAreaModel1(Scene):
|
|||
label_A_and_B_copy = label_A_and_B.copy()
|
||||
label_A_copy = label_A.copy()
|
||||
label_B_copy = label_B.copy()
|
||||
self.add(label_A_and_B_copy, label_A_copy, label_B_copy)
|
||||
# self.add(label_A_and_B_copy, label_A_copy, label_B_copy)
|
||||
|
||||
self.play(Transform(label_A_and_B_copy, indep_formula[0]))
|
||||
self.play(FadeIn(indep_formula[1]))
|
||||
self.play(Transform(label_A_copy, indep_formula[2]))
|
||||
self.play(FadeIn(indep_formula[3]))
|
||||
self.play(Transform(label_B_copy, indep_formula[4]))
|
||||
# self.play(Transform(label_A_and_B_copy, indep_formula[0]))
|
||||
# self.play(FadeIn(indep_formula[1]))
|
||||
# self.play(Transform(label_A_copy, indep_formula[2]))
|
||||
# self.play(FadeIn(indep_formula[3]))
|
||||
# self.play(Transform(label_B_copy, indep_formula[4]))
|
||||
|
||||
self.wait()
|
||||
#self.wait()
|
||||
|
||||
label_A_and_B_copy = indep_formula[0]
|
||||
label_A_copy = indep_formula[2]
|
||||
label_B_copy = indep_formula[4]
|
||||
|
||||
# show conditional prob
|
||||
|
||||
|
@ -647,11 +611,22 @@ class IllustrateAreaModel1(Scene):
|
|||
fill_opacity = 0.5
|
||||
).next_to(rect_not_A_and_B, UP, buff = 0)
|
||||
|
||||
self.remove(rect_B, rect_not_B)
|
||||
self.add(rect_A_and_not_B, rect_not_A_and_B, rect_not_A_and_not_B)
|
||||
|
||||
indep_formula.next_to(rect_not_A, LEFT, buff = 4)
|
||||
indep_formula.shift(UP)
|
||||
|
||||
self.play(Write(indep_formula))
|
||||
|
||||
self.play(
|
||||
FadeIn(VGroup(
|
||||
rect_A, rect_not_A, brace_A, label_A, brace_B, label_B,
|
||||
rect_A_and_not_B, rect_not_A_and_B, rect_not_A_and_not_B,
|
||||
rect_A_and_B,
|
||||
label_A_and_B,
|
||||
))
|
||||
)
|
||||
|
||||
self.wait()
|
||||
|
||||
|
||||
p_of_B_knowing_A = 0.6
|
||||
|
@ -684,7 +659,7 @@ class IllustrateAreaModel1(Scene):
|
|||
)
|
||||
label_B_knowing_A = label_B
|
||||
|
||||
self.play(FadeOut(label_B_copy))
|
||||
#self.play(FadeOut(label_B_copy))
|
||||
self.remove(indep_formula.get_part_by_tex("P(B)"))
|
||||
label_B_knowing_A_copy = label_B_knowing_A.copy()
|
||||
self.add(label_B_knowing_A_copy)
|
||||
|
@ -700,6 +675,7 @@ class IllustrateAreaModel1(Scene):
|
|||
|
||||
self.wait()
|
||||
|
||||
|
||||
self.play(
|
||||
# in some places get_part_by_tex does not find the correct part
|
||||
# so I picked out fitting indices
|
||||
|
@ -707,7 +683,17 @@ class IllustrateAreaModel1(Scene):
|
|||
label_A_copy.move_to, rearranged_formula[-1][10],
|
||||
label_A_and_B_copy.move_to, rearranged_formula[-1][3],
|
||||
indep_formula.get_part_by_tex("=").move_to, rearranged_formula.get_part_by_tex("="),
|
||||
Transform(indep_formula.get_part_by_tex("\cdot"), rearranged_formula[-1][8]),
|
||||
Transform(indep_formula.get_part_by_tex("\cdot"), rearranged_formula[2][6]),
|
||||
)
|
||||
|
||||
|
||||
self.play(
|
||||
FadeOut(VGroup(
|
||||
indep_formula, rect_A, rect_B, rect_not_A, rect_not_B,
|
||||
rect_A_and_B, rect_A_and_not_B, rect_not_A_and_B, rect_not_A_and_not_B,
|
||||
brace_A, brace_B, label_A, label_B_knowing_A, label_A_and_B,
|
||||
label_B_knowing_A_copy
|
||||
))
|
||||
)
|
||||
|
||||
|
||||
|
@ -792,8 +778,8 @@ class IllustrateAreaModel1(Scene):
|
|||
|
||||
class IllustrateAreaModel2(GraphScene):
|
||||
CONFIG = {
|
||||
"x_min" : -5,
|
||||
"x_max" : 5,
|
||||
"x_min" : -3.5,
|
||||
"x_max" : 3.5,
|
||||
"y_min" : -0,
|
||||
"y_max" : 0.6,
|
||||
"graph_origin": 3*DOWN,
|
||||
|
@ -801,7 +787,10 @@ class IllustrateAreaModel2(GraphScene):
|
|||
"y_axis_label" : "",
|
||||
"x_axis_label" : "",
|
||||
"variable_point_label" : "x",
|
||||
"y_axis_height" : 4
|
||||
"y_axis_height" : 4,
|
||||
"graph_origin": 2.5 * DOWN + 3 * LEFT,
|
||||
"x_axis_width": 5,
|
||||
"y_axis_height": 3
|
||||
}
|
||||
|
||||
def construct(self):
|
||||
|
@ -809,7 +798,7 @@ class IllustrateAreaModel2(GraphScene):
|
|||
x_max_1 = 0
|
||||
x_min_1 = -x_max_1
|
||||
|
||||
x_max_2 = 5
|
||||
x_max_2 = 3.5
|
||||
x_min_2 = -x_max_2
|
||||
|
||||
|
||||
|
@ -818,10 +807,10 @@ class IllustrateAreaModel2(GraphScene):
|
|||
|
||||
self.add(graph)
|
||||
|
||||
|
||||
cdf_formula = TexMobject("P(|X-\mu| < x) = \int_{-x}^x {\exp(-{1\over 2}({t\over \sigma})^2) \over \sigma\sqrt{2\pi}} dt")
|
||||
|
||||
cdf_formula.set_color_by_tex("x", YELLOW)
|
||||
cdf_formula.next_to(graph, LEFT, buff = 1)
|
||||
cdf_formula.next_to(graph, RIGHT, buff = -1)
|
||||
self.add(cdf_formula)
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue