def construct(self): title = TextMobject("Hypotéza kontinua").to_edge(UP) question = TextMobject( "Je $|\mathbb R|$ nejmenší nespočetná mohutnost?") question.shift(DOWN) self.add(title) cardinalities = TexMobject("0, 1, 2, \ldots", "\\aleph_0", "\\aleph_1", "=", "|\\mathbb R|", "?") cardinalities.set_color(GREEN) cardinalities[1].next_to(cardinalities[0], coor_mask=X_MASK, buff=1) VGroup(cardinalities[2:]).next_to(cardinalities[1], coor_mask=X_MASK, buff=0.5) cardinalities.next_to(title, DOWN) count_brace = BraceText(VGroup(cardinalities[:2]), "spočetné") self.play( count_brace.creation_anim(), *map(FadeIn, [cardinalities[0], cardinalities[1], cardinalities[4]])) self.play(Write(question)) arrow_end = (cardinalities[1].get_center() + cardinalities[4].get_center()) / 2 arrow = Arrow(arrow_end + DOWN, arrow_end) why_not_answer = TextMobject("Proč by tu mělo\\\\ cokoli být?", alignment="\\raggedright") why_not_answer.next_to(arrow, DOWN, aligned_edge=LEFT) why_not_answer.shift(0.5 * LEFT) self.wait_to(22) self.play(ShowCreation(arrow), FadeIn(why_not_answer)) self.wait_to(30.5) self.play(FadeOut(VGroup(arrow, why_not_answer))) # 31.5 why_answer = VGroup(cardinalities[3], cardinalities[5]) why_answer.set_color(WHITE) self.play(Write(cardinalities[2])) # omega1 self.play(Write(why_answer)) omega1 = Omega1() make_half_ordinal(omega1[1]) reals = NumberLine(x_min=-4, x_max=4) reals.set_color(WHITE) reals.to_edge(DOWN) omega1.next_to(reals, UP, buff=2) self.wait_to(50) self.play(FadeOut(question)) self.play(FadeIn(reals), FadeIn(omega1)) positions_num = 50 positions = np.expand_dims(np.linspace(-4, 4, positions_num), 1) * RIGHT positions_real = positions + reals.get_edge_center(UP) + UP * 0.1 positions_omega1 = positions + omega1.get_edge_center( DOWN) + DOWN * 0.1 positions_omega1 = list(positions_omega1) random.shuffle(positions_omega1) matching = VGroup([ Line(start, end) for start, end in zip(positions_omega1, positions_real) ]) matching.set_color(BLUE) self.play(ShowCreation( matching, submobject_mode="all_at_once", )) self.wait_to(60 + 1) self.play(FadeOut(matching)) self.wait_to(60 + 10.5)