mirror of
https://github.com/3b1b/manim.git
synced 2025-08-05 16:49:03 +00:00
Finished MathematicalWebOfConnections scene
This commit is contained in:
parent
60a47d0e2e
commit
a302a6bf04
1 changed files with 107 additions and 10 deletions
|
@ -245,9 +245,8 @@ class ThinkAboutPondScene(PiCreatureScene):
|
||||||
self.wait(2)
|
self.wait(2)
|
||||||
|
|
||||||
class IntroScene(PiCreatureScene):
|
class IntroScene(PiCreatureScene):
|
||||||
|
|
||||||
CONFIG = {
|
CONFIG = {
|
||||||
"rect_height" : 0.1,
|
"rect_height" : 0.075,
|
||||||
"duration" : 1.0,
|
"duration" : 1.0,
|
||||||
"eq_spacing" : 3 * MED_LARGE_BUFF,
|
"eq_spacing" : 3 * MED_LARGE_BUFF,
|
||||||
"n_rects_to_show" : 30,
|
"n_rects_to_show" : 30,
|
||||||
|
@ -338,7 +337,7 @@ class IntroScene(PiCreatureScene):
|
||||||
max_width = 0.7*rect.get_width()
|
max_width = 0.7*rect.get_width()
|
||||||
if rect_label.get_width() > max_width:
|
if rect_label.get_width() > max_width:
|
||||||
rect_label.scale_to_fit_width(max_width)
|
rect_label.scale_to_fit_width(max_width)
|
||||||
rect_label.next_to(rect, UP, MED_SMALL_BUFF/(i+1))
|
rect_label.next_to(rect, UP, buff = MED_LARGE_BUFF/(i+1))
|
||||||
|
|
||||||
term_mobject = term_mobjects[i-1]
|
term_mobject = term_mobjects[i-1]
|
||||||
rect_anim = GrowFromPoint(rect, term_mobject.get_center())
|
rect_anim = GrowFromPoint(rect, term_mobject.get_center())
|
||||||
|
@ -746,14 +745,115 @@ class MathematicalWebOfConnections(PiCreatureScene):
|
||||||
self.play(
|
self.play(
|
||||||
MoveToTarget(to_shift_down),
|
MoveToTarget(to_shift_down),
|
||||||
basel_sum.scale, 1.5,
|
basel_sum.scale, 1.5,
|
||||||
basel_sum.move_to, 2*DOWN,
|
basel_sum.move_to, 1.5*DOWN,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self.basel_sum = basel_sum
|
||||||
|
|
||||||
def show_web_of_connections(self):
|
def show_web_of_connections(self):
|
||||||
pass
|
self.remove(self.pi_creatures)
|
||||||
|
title = TextMobject("Interconnected web of mathematics")
|
||||||
|
title.to_edge(UP)
|
||||||
|
basel_sum = self.basel_sum
|
||||||
|
|
||||||
|
dots = VGroup(*[
|
||||||
|
Dot(radius = 0.1).move_to(
|
||||||
|
(j - 0.5*(i%2))*RIGHT + \
|
||||||
|
(np.sqrt(3)/2.0)* i*DOWN + \
|
||||||
|
0.5*(random.random()*RIGHT + random.random()*UP),
|
||||||
|
)
|
||||||
|
for i in range(4)
|
||||||
|
for j in range(7+(i%2))
|
||||||
|
])
|
||||||
|
dots.scale_to_fit_height(3)
|
||||||
|
dots.next_to(title, DOWN, MED_LARGE_BUFF)
|
||||||
|
edges = VGroup()
|
||||||
|
for x in range(100):
|
||||||
|
d1, d2 = random.sample(dots, 2)
|
||||||
|
edge = Line(d1.get_center(), d2.get_center())
|
||||||
|
edge.set_stroke(YELLOW, 0.5)
|
||||||
|
edges.add(edge)
|
||||||
|
|
||||||
|
## Choose special path
|
||||||
|
path_dots = VGroup(
|
||||||
|
dots[-7],
|
||||||
|
dots[-14],
|
||||||
|
dots[9],
|
||||||
|
dots[19],
|
||||||
|
dots[14],
|
||||||
|
)
|
||||||
|
path_edges = VGroup(*[
|
||||||
|
Line(
|
||||||
|
d1.get_center(), d2.get_center(),
|
||||||
|
color = RED
|
||||||
|
)
|
||||||
|
for d1, d2 in zip(path_dots, path_dots[1:])
|
||||||
|
])
|
||||||
|
|
||||||
|
circle = Circle(color = YELLOW, radius = 1)
|
||||||
|
radius = Line(circle.get_center(), circle.get_right())
|
||||||
|
radius.highlight(BLUE)
|
||||||
|
VGroup(circle, radius).next_to(path_dots[-1], RIGHT)
|
||||||
|
|
||||||
|
self.play(
|
||||||
|
Write(title),
|
||||||
|
LaggedStart(ShowCreation, edges, run_time = 3),
|
||||||
|
LaggedStart(GrowFromCenter, dots, run_time = 3)
|
||||||
|
)
|
||||||
|
self.play(path_dots[0].highlight, RED)
|
||||||
|
for dot, edge in zip(path_dots[1:], path_edges):
|
||||||
|
self.play(
|
||||||
|
ShowCreation(edge),
|
||||||
|
dot.highlight, RED
|
||||||
|
)
|
||||||
|
self.play(ShowCreation(radius))
|
||||||
|
radius.set_points_as_corners(radius.get_anchors())
|
||||||
|
self.play(
|
||||||
|
ShowCreation(circle),
|
||||||
|
Rotate(radius, angle = 0.999*TAU, about_point = radius.get_start()),
|
||||||
|
run_time = 2
|
||||||
|
)
|
||||||
|
self.wait()
|
||||||
|
|
||||||
|
graph = VGroup(dots, edges, path_edges, title)
|
||||||
|
circle.add(radius)
|
||||||
|
basel_sum.generate_target()
|
||||||
|
basel_sum.target.to_edge(UP)
|
||||||
|
|
||||||
|
arrow = Arrow(
|
||||||
|
UP, DOWN,
|
||||||
|
rectangular_stem_width = 0.1,
|
||||||
|
tip_length = 0.45,
|
||||||
|
color = RED,
|
||||||
|
)
|
||||||
|
arrow.next_to(basel_sum.target, DOWN, buff = MED_LARGE_BUFF)
|
||||||
|
|
||||||
|
self.play(
|
||||||
|
MoveToTarget(basel_sum),
|
||||||
|
graph.next_to, basel_sum.target, UP, LARGE_BUFF,
|
||||||
|
circle.next_to, arrow, DOWN, MED_LARGE_BUFF,
|
||||||
|
)
|
||||||
|
self.play(GrowArrow(arrow))
|
||||||
|
self.wait()
|
||||||
|
|
||||||
|
self.arrow = arrow
|
||||||
|
self.circle = circle
|
||||||
|
|
||||||
def show_light(self):
|
def show_light(self):
|
||||||
pass
|
light = AmbientLight(
|
||||||
|
num_levels = 500, radius = 13,
|
||||||
|
opacity_function = lambda r : 1.0/(r+1),
|
||||||
|
)
|
||||||
|
pi = self.basel_sum[-1][0]
|
||||||
|
pi.set_stroke(BLACK, 0.5)
|
||||||
|
light.move_to(pi)
|
||||||
|
self.play(
|
||||||
|
SwitchOn(light, run_time = 3),
|
||||||
|
Animation(self.arrow),
|
||||||
|
Animation(self.circle),
|
||||||
|
Animation(self.basel_sum),
|
||||||
|
)
|
||||||
|
self.wait()
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|
||||||
|
@ -766,9 +866,6 @@ class MathematicalWebOfConnections(PiCreatureScene):
|
||||||
return VGroup(jerk, randy)
|
return VGroup(jerk, randy)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class FirstLighthouseScene(PiCreatureScene):
|
class FirstLighthouseScene(PiCreatureScene):
|
||||||
|
|
||||||
def construct(self):
|
def construct(self):
|
||||||
|
|
Loading…
Add table
Reference in a new issue