More Fourier progress

This commit is contained in:
Grant Sanderson 2018-01-20 13:19:43 -08:00
parent 37d051c6b1
commit 9be177f478

View file

@ -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