Skip to content

Commit bdccbf4

Browse files
committed
Added many changes to the oral presentation, may be brroken
1 parent 3d0a627 commit bdccbf4

4 files changed

Lines changed: 108 additions & 36 deletions

File tree

presentation/WHITE.cfg

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[CLI]
2+
background_color = WHITE

presentation/bronquio.png

1.62 MB
Loading

presentation/main.py

Lines changed: 106 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,40 @@ def construct(self):
5353
self.play(FadeOut(Group(*self.mobjects)))
5454

5555
# self.camera.frame.save_state()
56+
title2 = Tex(r"2. Objetivos").to_edge(UP + LEFT)
57+
58+
text = Tex(r"""
59+
\begin{enumerate}
60+
\item Explorar matemáticamente 3 técnicas de formación fractal:
61+
\subitem - Sistemas de Lindenmayer
62+
\subitem - Sistemas de funciones iteradas
63+
\subitem - Sistemas dinámicos
64+
65+
\item Analizar las consecuencias reales de las propiedades estudiadas:
66+
\subitem - Biología
67+
\subitem - Ingeniería
68+
\subitem - Metereología
69+
\subitem - Medicina
70+
\subitem - ...
71+
72+
\end{enumerate}
73+
""", font_size=28, tex_environment="flushleft").next_to(title2, DOWN*2, aligned_edge=LEFT)
74+
75+
self.play(Write(title2))
76+
self.play(Write(text))
77+
78+
self.next_slide()
79+
80+
self.play(FadeOut(Group(title2, text)))
5681

5782
title = Tex(r"1. ¿Qué es un fractal?").to_edge(UP + LEFT)
5883
text1 = Tex(r"En la \textbf{naturaleza} observamos estructuras que podríamos denominar \textit{fractales}.", font_size=28, ).next_to(title, DOWN*2, aligned_edge=LEFT)
5984
text2 = Tex(r"""Constarían de algunas propiedades que los caracterizan, destacando su \textit{autosimilaridad}.""", font_size=28, tex_environment="flushleft").next_to(text1, DOWN, aligned_edge=LEFT)
6085

6186
image = Group(
62-
ImageMobject("copo-nieve.png").scale(0.5),
63-
ImageMobject("rayo.png").scale(0.5),
64-
ImageMobject("helecho.png").scale(0.5),
87+
ImageMobject("copo-nieve.png").scale(0.5),
88+
ImageMobject("rayo.png").scale(0.5),
89+
ImageMobject("helecho.png").scale(0.5),
6590
).arrange(RIGHT).to_corner(DOWN)
6691

6792
self.play(Write(title), Write(text1))
@@ -70,7 +95,6 @@ def construct(self):
7095

7196
self.play(Write(text2))
7297

73-
7498
self.next_slide()
7599

76100
self.play(FadeIn(image))
@@ -84,28 +108,7 @@ def construct(self):
84108

85109
self.next_slide()
86110

87-
title2 = Tex(r"2. Objetivos").to_edge(UP + LEFT)
88-
89-
text = Tex(r"""
90-
\begin{enumerate}
91-
\item Explorar matemáticamente 3 técnicas de formación fractal:
92-
\subitem - Sistemas de Lindenmayer
93-
\subitem - Sistemas de funciones iteradas
94-
\subitem - Sistemas dinámicos
95-
96-
\item Analizar las consecuencias reales de las propiedades estudiadas:
97-
\subitem - Biología
98-
\subitem - Ingeniería
99-
\subitem - Metereología
100-
\subitem - Medicina
101-
\subitem - ...
102-
103-
\end{enumerate}
104-
""", font_size=28, tex_environment="flushleft").next_to(title, DOWN*2, aligned_edge=LEFT)
105-
106-
# self.play(Restore(self.camera.frame))
107-
self.play(FadeOut(Group(text1, text2, image)), Transform(title, title2))
108-
self.play(Write(text))
111+
self.play(FadeOut(Group(title, text1, text2, image)))
109112

110113
###
111114
### Slide 3
@@ -142,16 +145,19 @@ def construct(self):
142145
self.play(Transform(kc, kc2))
143146
""" self.play(Transform(b1, b2), Transform(b1text, b2text)) """
144147

145-
self.next_slide()
146148
self.play(Transform(kc, kc3))
147149

148-
self.next_slide()
149150
self.play(Transform(kc, kc4))
150151
self.play(Transform(kc, kc5))
151152
self.play(Transform(kc, kc6))
152153
self.play(Transform(kc, kc7))
153154
self.play(Transform(kc, kc8))
154155

156+
self.next_slide()
157+
158+
expression = Tex(r"S = \left( \Sigma, P, \omega \right)").next_to(kc, UP)
159+
self.play(Write(expression))
160+
155161
# PENDIENTE: Conseguir poner los Braces en su sitio
156162

157163
###
@@ -160,6 +166,8 @@ def construct(self):
160166

161167
self.next_slide()
162168

169+
self.play(Unwrite(expression))
170+
163171
subtitle = Tex(r"\textbf{Instrucciones}", font_size=36)
164172
text1 = Tex(r"F $\rightarrow$ Mover 1 paso", font_size=36).next_to(subtitle, DOWN, aligned_edge=LEFT)
165173
text2 = Tex(r"+ $\rightarrow$ Girar $\frac{\pi}{3}$", font_size=36).next_to(text1, DOWN, aligned_edge=LEFT)
@@ -207,7 +215,7 @@ def construct(self):
207215
lambda m: m.move_to(kc10.point_from_proportion(tracker.get_value()))
208216
)
209217

210-
STOPS = [.25, .5, .75, 1.0]
218+
STOPS = [1.0]
211219

212220
self.play(Transform(kc, kc10), Transform(iteration, iteration1))
213221

@@ -231,9 +239,14 @@ def construct(self):
231239

232240
title3 = Tex(r"3. Sistemas Lindenmayer: Consecuencias").to_edge(UP + LEFT)
233241

234-
island = KochCurve(7, stroke_width=1, length=5).next_to(title, DOWN*2 + RIGHT * 5)
235-
island1 = KochCurve(7, stroke_width=1, length=5).next_to(title, DOWN*2 + RIGHT * 5).rotate(240*DEGREES, about_point=island.get_start()).shift(RIGHT * 5)
236-
island2 = KochCurve(7, stroke_width=1, length=5).next_to(title, DOWN*2 + RIGHT * 5).rotate(-240*DEGREES, about_point=island.get_end()).shift(LEFT * 5)
242+
island = KochCurve(0, stroke_width=1, length=5).next_to(title, DOWN*2 + RIGHT * 5)
243+
island1 = KochCurve(0, stroke_width=1, length=5).next_to(title, DOWN*2 + RIGHT * 5).rotate(240*DEGREES, about_point=island.get_start()).shift(RIGHT * 5)
244+
island2 = KochCurve(0, stroke_width=1, length=5).next_to(title, DOWN*2 + RIGHT * 5).rotate(-240*DEGREES, about_point=island.get_end()).shift(LEFT * 5)
245+
246+
island3 = KochCurve(1, stroke_width=1, length=5).next_to(title, DOWN*2 + RIGHT * 5)
247+
island4 = KochCurve(1, stroke_width=1, length=5).next_to(title, DOWN*2 + RIGHT * 5).rotate(240*DEGREES, about_point=island.get_start()).shift(RIGHT * 5)
248+
island5 = KochCurve(1, stroke_width=1, length=5).next_to(title, DOWN*2 + RIGHT * 5).rotate(-240*DEGREES, about_point=island.get_end()).shift(LEFT * 5)
249+
237250

238251
text = Tex(r"\[A = \lim_{n\rightarrow\infty} \frac{\sqrt{3}}{20} \left(8-3\left(\frac{4}{9}\right)^n\right) = \frac{8\sqrt{3}}{20} = \boxed{\frac{2\sqrt{3}}{5}}\]", font_size=28).next_to(title, DOWN*2, aligned_edge=LEFT)
239252
text1 = Tex(r"\[P = \lim_{n\rightarrow\infty} 3 \cdot\left( \frac{4}{3} \right)^n = \boxed{\infty}\]", font_size=28).next_to(text, DOWN, aligned_edge=LEFT)
@@ -244,21 +257,65 @@ def construct(self):
244257

245258
self.next_slide()
246259

260+
self.play(Transform(island, island3), Transform(island1, island4), Transform(island2, island5))
261+
262+
263+
island3 = KochCurve(2, stroke_width=1, length=5).to_edge(RIGHT).shift(UP * 2, LEFT)
264+
island4 = KochCurve(2, stroke_width=1, length=5).to_edge(RIGHT).shift(UP * 2, LEFT).rotate(240*DEGREES, about_point=island3.get_start()).shift(RIGHT * 5)
265+
island5 = KochCurve(2, stroke_width=1, length=5).to_edge(RIGHT).shift(UP * 2, LEFT).rotate(-240*DEGREES, about_point=island3.get_end()).shift(LEFT * 5)
266+
267+
self.play(Transform(island, island3), Transform(island1, island4), Transform(island2, island5))
268+
269+
island3 = KochCurve(3, stroke_width=1, length=5).to_edge(RIGHT).shift(UP * 2, LEFT)
270+
island4 = KochCurve(3, stroke_width=1, length=5).to_edge(RIGHT).shift(UP * 2, LEFT).rotate(240*DEGREES, about_point=island3.get_start()).shift(RIGHT * 5)
271+
island5 = KochCurve(3, stroke_width=1, length=5).to_edge(RIGHT).shift(UP * 2, LEFT).rotate(-240*DEGREES, about_point=island3.get_end()).shift(LEFT * 5)
272+
273+
self.play(Transform(island, island3), Transform(island1, island4), Transform(island2, island5))
274+
275+
island3 = KochCurve(4, stroke_width=1, length=5).to_edge(RIGHT).shift(UP * 2, LEFT)
276+
island4 = KochCurve(4, stroke_width=1, length=5).to_edge(RIGHT).shift(UP * 2, LEFT).rotate(240*DEGREES, about_point=island3.get_start()).shift(RIGHT * 5)
277+
island5 = KochCurve(4, stroke_width=1, length=5).to_edge(RIGHT).shift(UP * 2, LEFT).rotate(-240*DEGREES, about_point=island3.get_end()).shift(LEFT * 5)
278+
279+
self.play(Transform(island, island3), Transform(island1, island4), Transform(island2, island5))
280+
281+
island3 = KochCurve(7, stroke_width=1, length=5).to_edge(RIGHT).shift(UP * 2, LEFT)
282+
island4 = KochCurve(7, stroke_width=1, length=5).to_edge(RIGHT).shift(UP * 2, LEFT).rotate(240*DEGREES, about_point=island3.get_start()).shift(RIGHT * 5)
283+
island5 = KochCurve(7, stroke_width=1, length=5).to_edge(RIGHT).shift(UP * 2, LEFT).rotate(-240*DEGREES, about_point=island3.get_end()).shift(LEFT * 5)
284+
285+
self.play(Transform(island, island3), Transform(island1, island4), Transform(island2, island5))
286+
287+
self.next_slide()
288+
247289
self.play(Write(text))
248290

249291
self.next_slide()
250292

251293
self.play(Write(text1))
252294
self.play(Write(text2))
253295

296+
##
297+
## Slide 9: Bronquio
298+
##
299+
300+
self.next_slide()
301+
302+
image = ImageMobject("bronquio.png").scale(1.5).to_edge(DOWN)
303+
304+
self.play(FadeOut(Group(island, island1, island2, text, text1, text2)))
305+
self.play(FadeIn(image))
306+
307+
self.next_slide()
308+
309+
self.play(FadeOut(image))
310+
254311
##
255312
## Slide 6: IFS
256313
##
257314

258315
self.next_slide()
259316

260-
title4 = Tex(r"4. Sistemas de funciones iteradas").to_edge(UP + LEFT)
261-
self.play(FadeOut(Group(island, island1, island2, text, text1, text2)), Transform(title, title4))
317+
title4 = Tex(r"2. Sistemas de funciones iteradas").to_edge(UP + LEFT)
318+
self.play(Transform(title, title4))
262319

263320
square_length = 4
264321
border = VGroup(Square(stroke_color=WHITE, stroke_width = 1, side_length=square_length))
@@ -549,7 +606,7 @@ def update_graph(graph):
549606
).scale(0.75)
550607
).arrange(DOWN, buff=DEFAULT_MOBJECT_TO_MOBJECT_BUFFER * 2.5)
551608

552-
labels = body[1].get_axis_labels(x_label="r", y_label="x")
609+
labels = body[1].get_axis_labels(x_label="C", y_label="x")
553610

554611
def logistic_map(r, x):
555612
return r * x * (1 - x)
@@ -561,7 +618,7 @@ def bifurcation_diagram(r_values, iterations, last):
561618
if i >= (iterations - last):
562619
yield r_values, x
563620

564-
r_values = np.linspace(0.7, 4.0, 15000)
621+
r_values = np.linspace(0.7, 4.0, 30000)
565622
points = VGroup()
566623

567624
for r, x in bifurcation_diagram(r_values, 1000, 100):
@@ -572,15 +629,28 @@ def bifurcation_diagram(r_values, iterations, last):
572629

573630
self.play(FadeIn(points, lag_ratio=0.01), run_time=2)
574631

632+
633+
# Slide with GIF
575634
self.next_slide()
576635

577636
self.play(FadeOut(body), FadeOut(points), FadeOut(title), FadeOut(labels))
578637

638+
gif = ImageMobject("./mandelbrot.gif").scale(1.5).to_edge(DOWN)
639+
640+
self.play(FadeIn(gif))
641+
642+
self.next_slide()
643+
644+
self.play(FadeOut(gif))
645+
646+
579647
body = Group(Tex(r"¡Gracias por su atención!"),
580648
ImageMobject("qr-code.png")).arrange(DOWN)
581649

582650
self.play(FadeIn(body))
583651

652+
self.next_slide()
653+
584654
self.play(FadeOut(body))
585655

586656
colab = VGroup(

presentation/mandelbrot.gif

18.1 MB
Loading

0 commit comments

Comments
 (0)