class TransformOverIncreasingOrders(SpaceFillingCurveScene): def setup(self, CurveClass): sample = CurveClass(order = 1) self.curve = Line(3*LEFT, 3*RIGHT) self.curve.gradient_highlight( sample.start_color, sample.end_color ) self.CurveClass = CurveClass self.order = 0 def construct(self, CurveClass, max_order): self.setup(CurveClass) while self.order < max_order: self.increase_order() self.dither() def increase_order(self, *other_anims): self.order += 1 new_curve = self.CurveClass(order = self.order) self.play( Transform(self.curve, new_curve), *other_anims, run_time = 3/np.sqrt(self.order) )
class TransformOverIncreasingOrders(SpaceFillingCurveScene): def setup(self, CurveClass): sample = CurveClass(order = 1) self.curve = Line(3*LEFT, 3*RIGHT) self.curve.gradient_highlight( sample.start_color, sample.end_color ) self.CurveClass = CurveClass self.order = 0 def construct(self, CurveClass, max_order): self.setup(CurveClass) while self.order < max_order: self.increase_order() self.dither() def increase_order(self, *other_anims): self.order += 1 new_curve = self.CurveClass(order = self.order) self.play( Transform(self.curve, new_curve), *other_anims, run_time = 3/np.sqrt(self.order) )
def construct(self, max_order): sample = self.curve_class(order = 1) curve = Line(sample.radius*LEFT, sample.radius*RIGHT) curve.gradient_highlight( sample.start_color, sample.end_color ) for order in range(1, max_order): new_curve = self.curve_class(order = order) self.play( Transform(curve, new_curve), run_time = 3/np.sqrt(order), ) self.dither()
def construct(self): grid = Grid(64, 64) space_region = Region() space_mobject = MobjectFromRegion(space_region, DARK_GREY) curve = PeanoCurve(order = 5).replace(space_mobject) line = Line(5*LEFT, 5*RIGHT) line.gradient_highlight(curve.start_color, curve.end_color) for mob in grid, space_mobject: mob.sort_points(np.linalg.norm) infinitely = TextMobject("Infinitely") detailed = TextMobject("detailed") extending = TextMobject("extending") detailed.next_to(infinitely, RIGHT) extending.next_to(infinitely, RIGHT) Mobject(extending, infinitely, detailed).center() arrows = Mobject(*[ Arrow(2*p, 4*p) for theta in np.arange(np.pi/6, 2*np.pi, np.pi/3) for p in [rotate_vector(RIGHT, theta)] ]) self.add(grid) self.wait() self.play(Transform(grid, space_mobject, run_time = 5)) self.remove(grid) self.highlight_region(space_region, DARK_GREY) self.wait() self.add(infinitely, detailed) self.wait() self.play(DelayByOrder(Transform(detailed, extending))) self.play(ShowCreation(arrows)) self.wait() self.clear() self.highlight_region(space_region, DARK_GREY) self.play(ShowCreation(line)) self.play(Transform(line, curve, run_time = 5))
def construct(self): grid = Grid(64, 64) space_region = Region() space_mobject = MobjectFromRegion(space_region, DARK_GREY) curve = PeanoCurve(order = 5).replace(space_mobject) line = Line(5*LEFT, 5*RIGHT) line.gradient_highlight(curve.start_color, curve.end_color) for mob in grid, space_mobject: mob.sort_points(np.linalg.norm) infinitely = TextMobject("Infinitely") detailed = TextMobject("detailed") extending = TextMobject("extending") detailed.next_to(infinitely, RIGHT) extending.next_to(infinitely, RIGHT) Mobject(extending, infinitely, detailed).center() arrows = Mobject(*[ Arrow(2*p, 4*p) for theta in np.arange(np.pi/6, 2*np.pi, np.pi/3) for p in [rotate_vector(RIGHT, theta)] ]) self.add(grid) self.dither() self.play(Transform(grid, space_mobject, run_time = 5)) self.remove(grid) self.highlight_region(space_region, DARK_GREY) self.dither() self.add(infinitely, detailed) self.dither() self.play(DelayByOrder(Transform(detailed, extending))) self.play(ShowCreation(arrows)) self.dither() self.clear() self.highlight_region(space_region, DARK_GREY) self.play(ShowCreation(line)) self.play(Transform(line, curve, run_time = 5))