Skip to content

Commit 4d368e8

Browse files
authored
Logo (3b1b#537)
Add the graph created by @Elteoremadebeethoven as a logo
1 parent 46336a2 commit 4d368e8

File tree

6 files changed

+178
-1
lines changed

6 files changed

+178
-1
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
# Manim - Mathematical Animation Engine
1+
<img src="logo/cropped.png"/>
2+
23
[![Documentation Status](https://readthedocs.org/projects/manim/badge/?version=latest)](https://manim.readthedocs.io/en/latest/?badge=latest)
34
[![Build Status](https://travis-ci.org/3b1b/manim.svg?branch=master)](https://travis-ci.org/3b1b/manim)
45
[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](http://choosealicense.com/licenses/mit/)

logo/cropped.png

151 KB
Loading

logo/graph.png

114 KB
Loading

logo/logo.py

Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
from manimlib.imports import *
2+
3+
NEW_BLUE = "#68a8e1"
4+
5+
class Thumbnail(GraphScene):
6+
CONFIG = {
7+
"y_max": 8,
8+
"y_axis_height": 5,
9+
}
10+
11+
def construct(self):
12+
self.show_function_graph()
13+
14+
def show_function_graph(self):
15+
self.setup_axes(animate=False)
16+
def func(x):
17+
return 0.1 * (x + 3-5) * (x - 3-5) * (x-5) + 5
18+
19+
def rect(x):
20+
return 2.775*(x-1.5)+3.862
21+
recta = self.get_graph(rect,x_min=-1,x_max=5)
22+
graph = self.get_graph(func,x_min=0.2,x_max=9)
23+
graph.set_color(NEW_BLUE)
24+
input_tracker_p1 = ValueTracker(1.5)
25+
input_tracker_p2 = ValueTracker(3.5)
26+
27+
def get_x_value(input_tracker):
28+
return input_tracker.get_value()
29+
30+
def get_y_value(input_tracker):
31+
return graph.underlying_function(get_x_value(input_tracker))
32+
33+
def get_x_point(input_tracker):
34+
return self.coords_to_point(get_x_value(input_tracker), 0)
35+
36+
def get_y_point(input_tracker):
37+
return self.coords_to_point(0, get_y_value(input_tracker))
38+
39+
def get_graph_point(input_tracker):
40+
return self.coords_to_point(get_x_value(input_tracker), get_y_value(input_tracker))
41+
42+
def get_v_line(input_tracker):
43+
return DashedLine(get_x_point(input_tracker), get_graph_point(input_tracker), stroke_width=2)
44+
45+
def get_h_line(input_tracker):
46+
return DashedLine(get_graph_point(input_tracker), get_y_point(input_tracker), stroke_width=2)
47+
#
48+
input_triangle_p1 = RegularPolygon(n=3, start_angle=TAU / 4)
49+
output_triangle_p1 = RegularPolygon(n=3, start_angle=0)
50+
for triangle in input_triangle_p1, output_triangle_p1:
51+
triangle.set_fill(WHITE, 1)
52+
triangle.set_stroke(width=0)
53+
triangle.scale(0.1)
54+
#
55+
input_triangle_p2 = RegularPolygon(n=3, start_angle=TAU / 4)
56+
output_triangle_p2 = RegularPolygon(n=3, start_angle=0)
57+
for triangle in input_triangle_p2, output_triangle_p2:
58+
triangle.set_fill(WHITE, 1)
59+
triangle.set_stroke(width=0)
60+
triangle.scale(0.1)
61+
62+
#
63+
x_label_p1 = TexMobject("a")
64+
output_label_p1 = TexMobject("f(a)")
65+
x_label_p2 = TexMobject("b")
66+
output_label_p2 = TexMobject("f(b)")
67+
v_line_p1 = get_v_line(input_tracker_p1)
68+
v_line_p2 = get_v_line(input_tracker_p2)
69+
h_line_p1 = get_h_line(input_tracker_p1)
70+
h_line_p2 = get_h_line(input_tracker_p2)
71+
graph_dot_p1 = Dot(color=WHITE)
72+
graph_dot_p2 = Dot(color=WHITE)
73+
74+
# reposition mobjects
75+
x_label_p1.next_to(v_line_p1, DOWN)
76+
x_label_p2.next_to(v_line_p2, DOWN)
77+
output_label_p1.next_to(h_line_p1, LEFT)
78+
output_label_p2.next_to(h_line_p2, LEFT)
79+
input_triangle_p1.next_to(v_line_p1, DOWN, buff=0)
80+
input_triangle_p2.next_to(v_line_p2, DOWN, buff=0)
81+
output_triangle_p1.next_to(h_line_p1, LEFT, buff=0)
82+
output_triangle_p2.next_to(h_line_p2, LEFT, buff=0)
83+
graph_dot_p1.move_to(get_graph_point(input_tracker_p1))
84+
graph_dot_p2.move_to(get_graph_point(input_tracker_p2))
85+
86+
87+
#
88+
self.play(
89+
ShowCreation(graph),
90+
)
91+
# Animacion del punto a
92+
self.add_foreground_mobject(graph_dot_p1)
93+
self.add_foreground_mobject(graph_dot_p2)
94+
self.play(
95+
DrawBorderThenFill(input_triangle_p1),
96+
Write(x_label_p1),
97+
ShowCreation(v_line_p1),
98+
GrowFromCenter(graph_dot_p1),
99+
ShowCreation(h_line_p1),
100+
Write(output_label_p1),
101+
DrawBorderThenFill(output_triangle_p1),
102+
DrawBorderThenFill(input_triangle_p2),
103+
Write(x_label_p2),
104+
ShowCreation(v_line_p2),
105+
GrowFromCenter(graph_dot_p2),
106+
ShowCreation(h_line_p2),
107+
Write(output_label_p2),
108+
DrawBorderThenFill(output_triangle_p2),
109+
run_time=0.5
110+
)
111+
self.add(
112+
input_triangle_p2,
113+
x_label_p2,
114+
graph_dot_p2,
115+
v_line_p2,
116+
h_line_p2,
117+
output_triangle_p2,
118+
output_label_p2,
119+
)
120+
###################
121+
pendiente_recta = self.get_secant_slope_group(
122+
1.9, recta, dx = 1.4,
123+
df_label = None,
124+
dx_label = None,
125+
dx_line_color = PURPLE,
126+
df_line_color= ORANGE,
127+
)
128+
grupo_secante = self.get_secant_slope_group(
129+
1.5, graph, dx = 2,
130+
df_label = None,
131+
dx_label = None,
132+
dx_line_color = "#942357",
133+
df_line_color= "#3f7d5c",
134+
secant_line_color = RED,
135+
)
136+
137+
138+
self.add(
139+
input_triangle_p2,
140+
graph_dot_p2,
141+
v_line_p2,
142+
h_line_p2,
143+
output_triangle_p2,
144+
)
145+
self.play(FadeIn(grupo_secante))
146+
147+
kwargs = {
148+
"x_min" : 4,
149+
"x_max" : 9,
150+
"fill_opacity" : 0.75,
151+
"stroke_width" : 0.25,
152+
}
153+
self.graph=graph
154+
iteraciones=6
155+
156+
157+
self.rect_list = self.get_riemann_rectangles_list(
158+
graph, iteraciones,start_color=PURPLE,end_color=ORANGE, **kwargs
159+
)
160+
flat_rects = self.get_riemann_rectangles(
161+
self.get_graph(lambda x : 0), dx = 0.5,start_color=invert_color(PURPLE),end_color=invert_color(ORANGE),**kwargs
162+
)
163+
rects = self.rect_list[0]
164+
self.transform_between_riemann_rects(
165+
flat_rects, rects,
166+
replace_mobject_with_target_in_scene = True,
167+
run_time=0.9
168+
)
169+
170+
# adding manim
171+
picture = Group(*self.mobjects)
172+
picture.scale(0.6).to_edge(LEFT, buff=SMALL_BUFF)
173+
manim = TextMobject("Manim").set_height(1.5) \
174+
.next_to(picture, RIGHT) \
175+
.shift(DOWN * 0.7)
176+
self.add(manim)

logo/with_name.png

109 KB
Loading

logo/with_subtext.png

158 KB
Loading

0 commit comments

Comments
 (0)