mirror of
https://github.com/3b1b/manim.git
synced 2025-09-01 00:48:45 +00:00
More Fourier progress
This commit is contained in:
parent
37d051c6b1
commit
9be177f478
1 changed files with 61 additions and 11 deletions
|
@ -539,7 +539,7 @@ class UnmixMixedPaint(Scene):
|
||||||
def construct(self):
|
def construct(self):
|
||||||
angles = np.arange(4)*np.pi/2
|
angles = np.arange(4)*np.pi/2
|
||||||
quadrants = VGroup(*[
|
quadrants = VGroup(*[
|
||||||
Quadrant().rotate(angle).highlight(color)
|
Quadrant().rotate(angle, about_point = ORIGIN).highlight(color)
|
||||||
for color, angle in zip(self.colors, angles)
|
for color, angle in zip(self.colors, angles)
|
||||||
])
|
])
|
||||||
quadrants.add(*it.chain(*[
|
quadrants.add(*it.chain(*[
|
||||||
|
@ -1120,9 +1120,9 @@ class DrawFrequencyPlot(WrapCosineGraphAroundCircle, PiCreatureScene):
|
||||||
self.change_to_various_frequencies()
|
self.change_to_various_frequencies()
|
||||||
self.introduce_frequency_plot()
|
self.introduce_frequency_plot()
|
||||||
self.draw_full_frequency_plot()
|
self.draw_full_frequency_plot()
|
||||||
self.recap_objects_on_screen()
|
# self.recap_objects_on_screen()
|
||||||
self.lower_graph()
|
# self.lower_graph()
|
||||||
self.label_as_almost_fourier()
|
# self.label_as_almost_fourier()
|
||||||
|
|
||||||
def setup_graph(self):
|
def setup_graph(self):
|
||||||
self.add(self.get_time_axes())
|
self.add(self.get_time_axes())
|
||||||
|
@ -1261,6 +1261,15 @@ class DrawFrequencyPlot(WrapCosineGraphAroundCircle, PiCreatureScene):
|
||||||
stroke_width = 6,
|
stroke_width = 6,
|
||||||
color = fourier_graph.get_color()
|
color = fourier_graph.get_color()
|
||||||
)
|
)
|
||||||
|
fourier_graph_copy = fourier_graph.copy()
|
||||||
|
max_freq = self.frequency_axes.x_max
|
||||||
|
def update_fourier_graph(fg):
|
||||||
|
freq = self.graph.polarized_mobject.frequency
|
||||||
|
fg.pointwise_become_partial(
|
||||||
|
fourier_graph_copy,
|
||||||
|
0, freq/max_freq
|
||||||
|
)
|
||||||
|
return fg
|
||||||
|
|
||||||
self.change_frequency(0.0)
|
self.change_frequency(0.0)
|
||||||
self.generate_fourier_dot_transform(fourier_graph)
|
self.generate_fourier_dot_transform(fourier_graph)
|
||||||
|
@ -1275,13 +1284,8 @@ class DrawFrequencyPlot(WrapCosineGraphAroundCircle, PiCreatureScene):
|
||||||
fourier_graph.restore()
|
fourier_graph.restore()
|
||||||
self.change_frequency(
|
self.change_frequency(
|
||||||
freq,
|
freq,
|
||||||
added_anims = [ShowCreation(
|
added_anims = [UpdateFromFunc(
|
||||||
fourier_graph,
|
fourier_graph, update_fourier_graph
|
||||||
rate_func = lambda t : interpolate(
|
|
||||||
(freq-1.)/f_max,
|
|
||||||
float(freq)/f_max,
|
|
||||||
smooth(t)
|
|
||||||
),
|
|
||||||
)],
|
)],
|
||||||
run_time = 5,
|
run_time = 5,
|
||||||
)
|
)
|
||||||
|
@ -1444,10 +1448,56 @@ class StudentsHorrifiedAtScene(TeacherStudentsScene):
|
||||||
|
|
||||||
|
|
||||||
class ShowLinearity(DrawFrequencyPlot):
|
class ShowLinearity(DrawFrequencyPlot):
|
||||||
|
CONFIG = {
|
||||||
|
"lower_signal_frequency" : 2.0,
|
||||||
|
"lower_signal_color" : PINK,
|
||||||
|
}
|
||||||
def construct(self):
|
def construct(self):
|
||||||
|
self.setup_all_axes()
|
||||||
self.show_lower_frequency_signal()
|
self.show_lower_frequency_signal()
|
||||||
self.play_with_lower_frequency_signal()
|
self.play_with_lower_frequency_signal()
|
||||||
self.point_out_fourier_spike()
|
self.point_out_fourier_spike()
|
||||||
|
self.show_sum_of_signals()
|
||||||
|
self.play_with_sum_signal()
|
||||||
|
self.point_out_two_spikes()
|
||||||
|
|
||||||
|
def setup_all_axes(self):
|
||||||
|
self.add(self.get_time_axes())
|
||||||
|
self.add(self.get_circle_plane())
|
||||||
|
self.add(self.get_frequency_axes())
|
||||||
|
self.remove(self.pi_creature)
|
||||||
|
|
||||||
|
def show_lower_frequency_signal(self):
|
||||||
|
axes = self.time_axes
|
||||||
|
start_graph = self.get_cosine_wave(freq = self.signal_frequency)
|
||||||
|
graph = self.get_cosine_wave(freq = self.lower_signal_frequency)
|
||||||
|
graph.highlight(self.lower_signal_color)
|
||||||
|
start_graph.generate_target()
|
||||||
|
start_graph.target.stretch(
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
self.add(start_graph)
|
||||||
|
self.play(ReplacementTransform(
|
||||||
|
start_graph, graph, run_time = 3
|
||||||
|
))
|
||||||
|
self.wait()
|
||||||
|
|
||||||
|
def play_with_lower_frequency_signal(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def point_out_fourier_spike(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def show_sum_of_signals(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def play_with_sum_signal(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def point_out_two_spikes(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue