Dimensionality of data

This commit is contained in:
Grant Sanderson 2015-12-16 19:50:32 -08:00
parent f47385d3da
commit 32fe2e9373

View file

@ -1,5 +1,5 @@
from mobject import Mobject, Point
from mobject.tex_mobject import TexMobject, TextMobject
from mobject.tex_mobject import TexMobject, TextMobject, Brace
from mobject.image_mobject import ImageMobject
from scene import Scene
@ -18,6 +18,7 @@ from helpers import *
from hilbert.curves import TransformOverIncreasingOrders, FlowSnake
class AboutSpaceFillingCurves(TransformOverIncreasingOrders):
@staticmethod
def args_to_string():
@ -130,7 +131,8 @@ class ImageToSound(Scene):
def construct(self):
string = VibratingString(color = BLUE_D, run_time = 5)
picture = ImageMobject("lion", invert = False)
picture.scale(0.5)
picture.scale(0.8)
picture_copy = picture.copy()
picture.sort_points(np.linalg.norm)
string.mobject.sort_points(lambda p : -np.linalg.norm(p))
@ -144,6 +146,77 @@ class ImageToSound(Scene):
self.remove(picture)
self.play(string)
for mob in picture_copy, string.mobject:
mob.sort_points(lambda p : np.linalg.norm(p)%1)
self.play(Transform(
string.mobject, picture_copy,
run_time = 5,
alpha_func = rush_from
))
class ImageDataIsTwoDimensional(Scene):
def construct(self):
image = ImageMobject("lion", invert = False)
image.scale(0.5)
image.shift(2*LEFT)
self.add(image)
for vect, num in zip([DOWN, RIGHT], [1, 2]):
brace = Brace(image, vect)
words_mob = TextMobject("Dimension %d"%num)
words_mob.next_to(image, vect, buff = 1)
self.play(
Transform(Point(brace.get_center()), brace),
ShimmerIn(words_mob),
run_time = 2
)
self.dither()
class SoundDataIsOneDimensional(Scene):
def construct(self):
overtones = 5
main_string = VibratingString(color = BLUE_D)
component_strings = [
VibratingString(
num_periods = k+1,
color = color,
center = 2*DOWN + UP*k
)
for k, color in zip(
range(overtones),
Color(BLUE_E).range_to(WHITE, overtones)
)
]
self.play(main_string)
self.remove(main_string.mobject)
self.play(*[
TransformAnimations(
main_string.copy(),
string
)
for string in component_strings
])