From 4f42f62b3cad4967a8de34506b8c7b1f27c4221a Mon Sep 17 00:00:00 2001 From: Grant Sanderson Date: Tue, 2 Aug 2016 15:50:32 -0700 Subject: [PATCH] More chapter 5, plus some renaming fun --- eola/chapter1.py | 4 +- eola/chapter2.py | 10 +-- eola/chapter3.py | 6 +- eola/chapter5.py | 85 ++++++++++++++++--- eola/matrix.py | 4 +- eola/two_d_space.py | 21 ++--- mobject/image_mobject.py | 4 +- mobject/svg_mobject.py | 4 +- mobject/tex_mobject.py | 10 +-- old_projects/brachistochrone/curves.py | 14 +-- old_projects/brachistochrone/cycloid.py | 2 +- old_projects/brachistochrone/light.py | 4 +- old_projects/brachistochrone/multilayered.py | 2 +- old_projects/eulers_characteristic_formula.py | 40 ++++----- old_projects/inventing_math.py | 12 +-- old_projects/music_and_measure.py | 12 +-- old_projects/pythagorean_proof.py | 20 ++--- topics/characters.py | 4 +- topics/numerals.py | 6 +- 19 files changed, 162 insertions(+), 102 deletions(-) diff --git a/eola/chapter1.py b/eola/chapter1.py index 1fc36631..a98312d5 100644 --- a/eola/chapter1.py +++ b/eola/chapter1.py @@ -893,7 +893,7 @@ class VectorAdditionNumerically(VectorScene): var.highlight(X_COLOR) else: var.highlight(Y_COLOR) - var.scale(VECTOR_LABEL_SCALE_VAL) + var.scale(VECTOR_LABEL_SCALE_FACTOR) var.move_to(starter) self.play( Transform( @@ -1050,7 +1050,7 @@ class ScalingNumerically(VectorScene): VMobject(x_sym, two_x_sym).highlight(X_COLOR) VMobject(y_sym, two_y_sym).highlight(Y_COLOR) syms = [x_sym, y_sym, two_x_sym, two_y_sym] - VMobject(*syms).scale(VECTOR_LABEL_SCALE_VAL) + VMobject(*syms).scale(VECTOR_LABEL_SCALE_FACTOR) for sym, num in zip(syms, [x, y] + list(two_v_elems)): sym.move_to(num) self.play( diff --git a/eola/chapter2.py b/eola/chapter2.py index 9237957c..a7719216 100644 --- a/eola/chapter2.py +++ b/eola/chapter2.py @@ -134,13 +134,13 @@ class CoordinatesAsScalars(VectorScene): i_hat_label = self.label_vector( i_hat, "\\hat{\\imath}", color = X_COLOR, - label_scale_val = 1 + label_scale_factor = 1 ) self.add_vector(j_hat) j_hat_label = self.label_vector( j_hat, "\\hat{\\jmath}", color = Y_COLOR, - label_scale_val = 1 + label_scale_factor = 1 ) self.dither() @@ -287,7 +287,7 @@ class ShowVaryingLinearCombinations(VectorScene): "direction" : LEFT, "buff" : 0.1 }, - scale_val = 0.75, + scale_factor = 0.75, value_function = get_val_func(v) ) for v, label in (v1, v1_label), (v2, v2_label) @@ -414,11 +414,11 @@ class ShowVaryingLinearCombinations(VectorScene): sum_anims = self.get_sum_animations(v1, v2) aux_anims = list(sum_anims) + label_anims + scalar_anims - scale_val = 2 + scale_factor = 2 for w1, w2 in (v2, v1), (v1, v2): w1_vect = w1.get_end()-w1.get_start() w2_vect = w2.get_end()-w2.get_start() - for num in scale_val, -1, -1./scale_val: + for num in scale_factor, -1, -1./scale_factor: curr_tip = self.sum_vector.get_end() line = Line(ORIGIN, curr_tip) self.play( diff --git a/eola/chapter3.py b/eola/chapter3.py index 17dcd28e..66e210cd 100644 --- a/eola/chapter3.py +++ b/eola/chapter3.py @@ -588,13 +588,13 @@ class FollowIHatJHat(LinearTransformationScene): i_label = self.label_vector( i_hat, "\\hat{\\imath}", color = X_COLOR, - label_scale_val = 1 + label_scale_factor = 1 ) j_hat = self.add_vector([0, 1], color = Y_COLOR) j_label = self.label_vector( j_hat, "\\hat{\\jmath}", color = Y_COLOR, - label_scale_val = 1 + label_scale_factor = 1 ) self.dither() @@ -648,7 +648,7 @@ class TrackBasisVectorsExample(LinearTransformationScene): def introduce_vector(self): v = self.add_vector(self.v_coords) coords = Matrix(self.v_coords) - coords.scale(VECTOR_LABEL_SCALE_VAL) + coords.scale(VECTOR_LABEL_SCALE_FACTOR) coords.next_to(v.get_end(), np.sign(self.v_coords[0])*RIGHT) self.play(Write(coords, run_time = 1)) diff --git a/eola/chapter5.py b/eola/chapter5.py index 803f92c2..8e132873 100644 --- a/eola/chapter5.py +++ b/eola/chapter5.py @@ -328,25 +328,84 @@ class BreakBlobIntoGridSquaresVeryGranular(BreakBlobIntoGridSquares): class NameDeterminant(LinearTransformationScene): CONFIG = { - "t_matrix" : [[1, 0], [2, 1]] + "t_matrix" : [[3, 0], [2, 2]] } def construct(self): self.setup() - self.add_unit_square() - self.add_title(["The", "``determinant''", "of a transformation"]) + self.plane.fade(0.3) + self.add_unit_square(color = YELLOW_E, opacity = 0.5) + self.add_title( + ["The", "``determinant''", "of a transformation"], + scale_factor = 1 + ) self.title.split()[1].split()[1].highlight(YELLOW) - text = TextMobject("Area $=1$") - text.move_to(self.square) + matrix_background, matrix, det_text = self.get_matrix() + self.add_foreground_mobject(matrix_background, matrix) + + A = TexMobject("A") + area_label = VMobject(A.copy(), A.copy(), A) + area_label.move_to(self.square) det = np.linalg.det(self.t_matrix) - self.add_moving_mobject(text, TextMobject("Area $=%d$"%det)) - self.show_frame() - - - - - - + if np.round(det) == det: + det = int(det) + area_label_target = VMobject( + TexMobject(str(det)), TexMobject("\\cdot"), A.copy() + ) + if det < 1 and det > 0: + area_label_target.scale(det) + area_label_target.arrange_submobjects(RIGHT, buff = 0.1) + self.add_moving_mobject(area_label, area_label_target) + + self.dither() + self.apply_transposed_matrix(self.t_matrix) + self.dither() + det_mob_copy = area_label.split()[0].copy() + new_det_mob = det_mob_copy.copy().scale_to_fit_height( + det_text.split()[0].get_height() + ) + new_det_mob.next_to(det_text, RIGHT, buff = 0.2) + new_det_mob.add_background_rectangle() + det_mob_copy.add_background_rectangle(opacity = 0) + self.play(Write(det_text)) + self.play(Transform(det_mob_copy, new_det_mob)) + self.dither() + + + def get_matrix(self): + matrix = Matrix(np.array(self.t_matrix).transpose()) + matrix.highlight_columns(X_COLOR, Y_COLOR) + matrix.next_to(self.title, DOWN, buff = 0.5) + matrix.shift(2*LEFT) + matrix_background = BackgroundRectangle(matrix) + + braces = TexMobject("()") + braces.scale(2) + braces.stretch_to_fit_height(matrix.get_height()) + l_brace, r_brace = braces.split() + l_brace.next_to(matrix, LEFT, buff = 0.1) + r_brace.next_to(matrix, RIGHT, buff = 0.1) + det = TextMobject("det").next_to(l_brace, LEFT, buff = 0.1) + det.add_background_rectangle() + eq = TexMobject("=").next_to(r_brace, RIGHT, buff = 0.1) + + det_text = VMobject(det, l_brace, r_brace, eq) + return matrix_background, matrix, det_text + +class DeterminantIsOneHalf(NameDeterminant): + CONFIG = { + "t_matrix" : [[0.5, -0.5], [0.5, 0.5]], + "foreground_plane_kwargs" : { + "x_radius" : 2*SPACE_WIDTH, + "y_radius" : 2*SPACE_WIDTH, + "secondary_line_ratio" : 0 + }, + } + +class DeterminantIsZero(NameDeterminant): + CONFIG = { + "t_matrix" : [[2, 1], [2, 1]], + } diff --git a/eola/matrix.py b/eola/matrix.py index 50a531ad..1dfc98df 100644 --- a/eola/matrix.py +++ b/eola/matrix.py @@ -12,7 +12,7 @@ from topics.geometry import Vector, Line, Circle, Arrow, Dot, BackgroundRectangl from helpers import * -VECTOR_LABEL_SCALE_VAL = 0.8 +VECTOR_LABEL_SCALE_FACTOR = 0.8 def matrix_to_tex_string(matrix): matrix = np.array(matrix).astype("string") @@ -39,7 +39,7 @@ def vector_coordinate_label(vector_mob, integer_labels = True, vect = vect[:n_dim] vect = vect.reshape((n_dim, 1)) label = Matrix(vect, add_background_rectangles = True) - label.scale(VECTOR_LABEL_SCALE_VAL) + label.scale(VECTOR_LABEL_SCALE_FACTOR) shift_dir = np.array(vector_mob.get_end()) if shift_dir[0] >= 0: #Pointing right diff --git a/eola/two_d_space.py b/eola/two_d_space.py index ce0aec38..bc4fd47d 100644 --- a/eola/two_d_space.py +++ b/eola/two_d_space.py @@ -13,7 +13,7 @@ from topics.geometry import Vector, Line, Circle, Arrow, Dot, \ BackgroundRectangle, Square from helpers import * -from eola.matrix import Matrix, VECTOR_LABEL_SCALE_VAL, vector_coordinate_label +from eola.matrix import Matrix, VECTOR_LABEL_SCALE_FACTOR, vector_coordinate_label X_COLOR = GREEN_C @@ -78,7 +78,7 @@ class VectorScene(Scene): return [ self.get_vector_label( vect, label, color = color, - label_scale_val = 1, + label_scale_factor = 1, **kwargs ) for vect, label , color in [ @@ -91,12 +91,13 @@ class VectorScene(Scene): direction = "left", rotate = False, color = WHITE, - label_scale_val = VECTOR_LABEL_SCALE_VAL): - if len(label) == 1: - label = "\\vec{\\textbf{%s}}"%label - label = TexMobject(label) - label.highlight(color) - label.scale(label_scale_val) + label_scale_factor = VECTOR_LABEL_SCALE_FACTOR): + if not isinstance(label, TexMobject): + if len(label) == 1: + label = "\\vec{\\textbf{%s}}"%label + label = TexMobject(label) + label.highlight(color) + label.scale(label_scale_factor) label.add_background_rectangle() angle = vector.get_angle() @@ -346,9 +347,9 @@ class LinearTransformationScene(VectorScene): self.transformable_labels.append(label_mob) return label_mob - def add_title(self, title, scale_val = 1.5, animate = False): + def add_title(self, title, scale_factor = 1.5, animate = False): if not isinstance(title, Mobject): - title = TextMobject(title).scale(scale_val) + title = TextMobject(title).scale(scale_factor) title.to_edge(UP) title.add_background_rectangle() if animate: diff --git a/mobject/image_mobject.py b/mobject/image_mobject.py index 47353784..0292f2dd 100644 --- a/mobject/image_mobject.py +++ b/mobject/image_mobject.py @@ -17,7 +17,7 @@ class ImageMobject(PMobject): "invert" : True, "use_cache" : True, "stroke_width" : 1, - "scale_value" : 1.0, + "scale_factorue" : 1.0, "should_center" : True, } def __init__(self, image_file, **kwargs): @@ -36,7 +36,7 @@ class ImageMobject(PMobject): for path in possible_paths: if os.path.exists(path): self.generate_points_from_file(path) - self.scale(self.scale_value) + self.scale(self.scale_factorue) if self.should_center: self.center() return diff --git a/mobject/svg_mobject.py b/mobject/svg_mobject.py index dd66399a..5f6a0b26 100644 --- a/mobject/svg_mobject.py +++ b/mobject/svg_mobject.py @@ -7,7 +7,7 @@ from helpers import * class SVGMobject(VMobject): CONFIG = { - "initial_scale_val" : 1, + "initial_scale_factor" : 1, "should_center" : True, } def __init__(self, svg_file, **kwargs): @@ -129,7 +129,7 @@ class SVGMobject(VMobject): def move_into_position(self): if self.should_center: self.center() - self.scale_in_place(self.initial_scale_val) + self.scale_in_place(self.initial_scale_factor) diff --git a/mobject/tex_mobject.py b/mobject/tex_mobject.py index 8ddb03b5..dd146213 100644 --- a/mobject/tex_mobject.py +++ b/mobject/tex_mobject.py @@ -4,8 +4,8 @@ from topics.geometry import BackgroundRectangle from helpers import * import collections -TEX_MOB_SCALE_VAL = 0.05 -TEXT_MOB_SCALE_VAL = 0.05 +TEX_MOB_SCALE_FACTOR = 0.05 +TEXT_MOB_SCALE_FACTOR = 0.05 class TexSymbol(VMobjectFromSVGPathstring): @@ -35,7 +35,7 @@ class TexMobject(SVGMobject): "should_center" : True, "separate_list_arg_with_spaces" : True, "enforce_new_line_structure" : False, - "initial_scale_val" : TEX_MOB_SCALE_VAL, + "initial_scale_factor" : TEX_MOB_SCALE_FACTOR, "organize_left_to_right" : False, "propogate_style_to_family" : True, } @@ -103,7 +103,7 @@ class TexMobject(SVGMobject): ) def add_background_rectangle(self, color = BLACK, opacity = 0.75): - rect = BackgroundRectangle(self) + rect = BackgroundRectangle(self, color = color, opacity = opacity) letters = VMobject(*self.submobjects) self.submobjects = [rect, letters] return self @@ -111,7 +111,7 @@ class TexMobject(SVGMobject): class TextMobject(TexMobject): CONFIG = { "template_tex_file" : TEMPLATE_TEXT_FILE, - "initial_scale_val" : TEXT_MOB_SCALE_VAL, + "initial_scale_factor" : TEXT_MOB_SCALE_FACTOR, "enforce_new_line_structure" : True, } diff --git a/old_projects/brachistochrone/curves.py b/old_projects/brachistochrone/curves.py index ac9f2f5a..c69d84d0 100644 --- a/old_projects/brachistochrone/curves.py +++ b/old_projects/brachistochrone/curves.py @@ -20,7 +20,7 @@ from topics.number_line import * from mobject.region import Region, region_from_polygon_vertices from scene import Scene -RANDY_SCALE_VAL = 0.3 +RANDY_SCALE_FACTOR = 0.3 @@ -239,7 +239,7 @@ class TryManyPaths(PathSlidingScene): randy = Randolph() randy.shift(-randy.get_bottom()) self.slider = randy.copy() - randy.scale(RANDY_SCALE_VAL) + randy.scale(RANDY_SCALE_FACTOR) paths = self.get_paths() point_a = Dot(paths[0].points[0]) point_b = Dot(paths[0].points[-1]) @@ -317,7 +317,7 @@ class TryManyPaths(PathSlidingScene): class RollingRandolph(PathSlidingScene): def construct(self): randy = Randolph() - randy.scale(RANDY_SCALE_VAL) + randy.scale(RANDY_SCALE_FACTOR) randy.shift(-randy.get_bottom()) self.add_cycloid_end_points() self.slide(randy, self.cycloid, roll = True) @@ -334,7 +334,7 @@ class NotTheCircle(PathSlidingScene): path.gradient_highlight(RED_D, WHITE) radius = Line(ORIGIN, path.points[0]) randy = Randolph() - randy.scale(RANDY_SCALE_VAL) + randy.scale(RANDY_SCALE_FACTOR) randy.shift(-randy.get_bottom()) randy_copy = randy.copy() words = TextMobject("Circular paths are good, \\\\ but still not the best") @@ -367,7 +367,7 @@ class NotTheCircle(PathSlidingScene): class TransitionAwayFromSlide(PathSlidingScene): def construct(self): randy = Randolph() - randy.scale(RANDY_SCALE_VAL) + randy.scale(RANDY_SCALE_FACTOR) randy.shift(-randy.get_bottom()) self.add_cycloid_end_points() arrow = Arrow(ORIGIN, 2*RIGHT) @@ -469,7 +469,7 @@ class WhatGovernsSpeed(PathSlidingScene): } def construct(self): randy = Randolph() - randy.scale(RANDY_SCALE_VAL) + randy.scale(RANDY_SCALE_FACTOR) randy.shift(-randy.get_bottom()) self.add_cycloid_end_points() points = self.cycloid.points @@ -652,7 +652,7 @@ class DefineCurveWithKnob(PathSlidingScene): self.path.highlight(BLACK) randy = Randolph() - randy.scale(RANDY_SCALE_VAL) + randy.scale(RANDY_SCALE_FACTOR) randy.shift(-randy.get_bottom()) self.play(ShimmerIn(words)) diff --git a/old_projects/brachistochrone/cycloid.py b/old_projects/brachistochrone/cycloid.py index f0fb4b51..4ac964fe 100644 --- a/old_projects/brachistochrone/cycloid.py +++ b/old_projects/brachistochrone/cycloid.py @@ -536,7 +536,7 @@ class SlidingObject(CycloidScene, PathSlidingScene): CycloidScene.construct(self) randy = Randolph() - randy.scale(RANDY_SCALE_VAL) + randy.scale(RANDY_SCALE_FACTOR) randy.shift(-randy.get_bottom()) central_randy = randy.copy() start_randy = self.adjust_mobject_to_index( diff --git a/old_projects/brachistochrone/light.py b/old_projects/brachistochrone/light.py index 82f25a4d..1e84cfd7 100644 --- a/old_projects/brachistochrone/light.py +++ b/old_projects/brachistochrone/light.py @@ -22,7 +22,7 @@ from scene import Scene from scene.zoomed_scene import ZoomedScene from brachistochrone.curves import \ - Cycloid, PathSlidingScene, RANDY_SCALE_VAL, TryManyPaths + Cycloid, PathSlidingScene, RANDY_SCALE_FACTOR, TryManyPaths class Lens(Arc): @@ -846,7 +846,7 @@ class SpringSetup(ShowMultiplePathsInWater): class WhatGovernsTheSpeedOfLight(PhotonScene, PathSlidingScene): def construct(self): randy = Randolph() - randy.scale(RANDY_SCALE_VAL) + randy.scale(RANDY_SCALE_FACTOR) randy.shift(-randy.get_bottom()) self.add_cycloid_end_points() diff --git a/old_projects/brachistochrone/multilayered.py b/old_projects/brachistochrone/multilayered.py index 2755fdcd..ab91696d 100644 --- a/old_projects/brachistochrone/multilayered.py +++ b/old_projects/brachistochrone/multilayered.py @@ -337,7 +337,7 @@ class ShowLightAndSlidingObject(MultilayeredScene, TryManyPaths, PhotonScene): path.rgbs[:,2] = 0 loop = paths.pop(1) ##Bad! randy = Randolph() - randy.scale(RANDY_SCALE_VAL) + randy.scale(RANDY_SCALE_FACTOR) randy.shift(-randy.get_bottom()) photon_run = self.photon_run_along_path( loop, diff --git a/old_projects/eulers_characteristic_formula.py b/old_projects/eulers_characteristic_formula.py index 20aca735..c8faa10e 100644 --- a/old_projects/eulers_characteristic_formula.py +++ b/old_projects/eulers_characteristic_formula.py @@ -17,8 +17,8 @@ from moser_main import EulersFormula from script_wrapper import command_line_create_scene MOVIE_PREFIX = "ecf_graph_scenes/" -RANDOLPH_SCALE_VAL = 0.3 -EDGE_ANNOTATION_SCALE_VAL = 0.7 +RANDOLPH_SCALE_FACTOR = 0.3 +EDGE_ANNOTATION_SCALE_FACTOR = 0.7 DUAL_CYCLE = [3, 4, 5, 6, 1, 0, 2, 3] class EulersFormulaWords(Scene): @@ -162,7 +162,7 @@ class OldIntroduceGraphs(GraphScene): self.clear() self.add(*self.edges) self.replace_vertices_with(Face().scale(0.4)) - friends = TextMobject("Friends").scale(EDGE_ANNOTATION_SCALE_VAL) + friends = TextMobject("Friends").scale(EDGE_ANNOTATION_SCALE_FACTOR) self.annotate_edges(friends.shift((0, friends.get_height()/2, 0))) self.play(*[ CounterclockwiseTransform(vertex, Dot(point)) @@ -282,11 +282,11 @@ class ThreePiecesOfTerminology(GraphScene): ] ] self.generate_spanning_tree() - scale_val = 1.2 + scale_factor = 1.2 def accent(mobject, color = "yellow"): - return mobject.scale_in_place(scale_val).highlight(color) + return mobject.scale_in_place(scale_factor).highlight(color) def tone_down(mobject): - return mobject.scale_in_place(1.0/scale_val).highlight("white") + return mobject.scale_in_place(1.0/scale_factor).highlight("white") self.add(accent(cycles)) self.trace_cycle(run_time = 1.0) @@ -332,7 +332,7 @@ class WalkingRandolph(GraphScene): GraphScene.construct(self) point_path = [self.points[i] for i in self.path] randy = Randolph() - randy.scale(RANDOLPH_SCALE_VAL) + randy.scale(RANDOLPH_SCALE_FACTOR) randy.move_to(point_path[0]) for next, last in zip(point_path[1:], point_path): self.play( @@ -416,7 +416,7 @@ class IntroduceRandolph(GraphScene): name = TextMobject("Randolph") self.play(Transform( randy, - deepcopy(randy).scale(RANDOLPH_SCALE_VAL).move_to(self.points[0]), + deepcopy(randy).scale(RANDOLPH_SCALE_FACTOR).move_to(self.points[0]), )) self.dither() name.shift((0, 1, 0)) @@ -427,15 +427,15 @@ class DefineSpanningTree(GraphScene): def construct(self): GraphScene.construct(self) randy = Randolph() - randy.scale(RANDOLPH_SCALE_VAL).move_to(self.points[0]) + randy.scale(RANDOLPH_SCALE_FACTOR).move_to(self.points[0]) dollar_signs = TextMobject("\\$\\$") - dollar_signs.scale(EDGE_ANNOTATION_SCALE_VAL) + dollar_signs.scale(EDGE_ANNOTATION_SCALE_FACTOR) dollar_signs = Mobject(*[ deepcopy(dollar_signs).shift(edge.get_center()) for edge in self.edges ]) unneeded = TextMobject("unneeded!") - unneeded.scale(EDGE_ANNOTATION_SCALE_VAL) + unneeded.scale(EDGE_ANNOTATION_SCALE_FACTOR) self.generate_spanning_tree() def green_dot_at_index(index): return Dot( @@ -546,7 +546,7 @@ class FacebookGraph(GraphScene): account.shift(0.2*LEFT + 0.1*UP) friends = TexMobject( "\\leftarrow \\text{friends} \\rightarrow" - ).scale(0.5*EDGE_ANNOTATION_SCALE_VAL) + ).scale(0.5*EDGE_ANNOTATION_SCALE_FACTOR) self.clear() accounts = [ @@ -873,7 +873,7 @@ class CyclesCorrespondWithConnectedComponents(GraphScene): dual_cycle = DUAL_CYCLE enclosed_vertices = [0, 1] randy = Randolph() - randy.scale(RANDOLPH_SCALE_VAL) + randy.scale(RANDOLPH_SCALE_FACTOR) randy.move_to(self.points[cycle[0]]) lines_to_remove = [] @@ -933,8 +933,8 @@ class IntroduceMortimer(GraphScene): self.add(morty, name) self.dither() self.remove(name) - small_randy = deepcopy(randy).scale(RANDOLPH_SCALE_VAL) - small_morty = deepcopy(morty).scale(RANDOLPH_SCALE_VAL) + small_randy = deepcopy(randy).scale(RANDOLPH_SCALE_FACTOR) + small_morty = deepcopy(morty).scale(RANDOLPH_SCALE_FACTOR) small_randy.move_to(self.points[randy_path[0]]) small_morty.move_to(self.dual_points[morty_path[0]]) self.play(*[ @@ -978,8 +978,8 @@ class RandolphMortimerSpanningTreeGame(GraphScene): self.generate_spanning_tree() self.generate_dual_graph() self.generate_regions() - randy = Randolph().scale(RANDOLPH_SCALE_VAL) - morty = Mortimer().scale(RANDOLPH_SCALE_VAL) + randy = Randolph().scale(RANDOLPH_SCALE_FACTOR) + morty = Mortimer().scale(RANDOLPH_SCALE_FACTOR) randy.move_to(self.points[0]) morty.move_to(self.dual_points[0]) attempted_dual_point_index = 2 @@ -1028,7 +1028,7 @@ class MortimerCannotTraverseCycle(GraphScene): self.generate_dual_graph() dual_cycle = DUAL_CYCLE trapped_points = [0, 1] - morty = Mortimer().scale(RANDOLPH_SCALE_VAL) + morty = Mortimer().scale(RANDOLPH_SCALE_FACTOR) morty.move_to(self.dual_points[dual_cycle[0]]) time_per_edge = 0.5 text = TextMobject(""" @@ -1105,10 +1105,10 @@ class DualSpanningTree(GraphScene): self.generate_dual_graph() self.generate_spanning_tree() randy = Randolph() - randy.scale(RANDOLPH_SCALE_VAL) + randy.scale(RANDOLPH_SCALE_FACTOR) randy.move_to(self.points[0]) morty = Mortimer() - morty.scale(RANDOLPH_SCALE_VAL) + morty.scale(RANDOLPH_SCALE_FACTOR) morty.move_to(self.dual_points[0]) dual_edges = [1, 3, 4, 7, 11, 9, 13] words = TextMobject(""" diff --git a/old_projects/inventing_math.py b/old_projects/inventing_math.py index 430db5eb..20ffea36 100644 --- a/old_projects/inventing_math.py +++ b/old_projects/inventing_math.py @@ -806,26 +806,26 @@ class ZoomInOnOne(Scene): ) num_levels = 3 - scale_val = 10 + scale_factor = 10 number_lines = [ NumberLine( interval_size = 1, - density = scale_val*DEFAULT_POINT_DENSITY_1D + density = scale_factor*DEFAULT_POINT_DENSITY_1D ).filter_out( lambda (x, y, z):abs(y)>0.1 - ).scale(1.0/scale_val**x) + ).scale(1.0/scale_factor**x) for x in range(num_levels) ] kwargs = {"rate_func" : None} self.play(*[ - ApplyMethod(number_lines[x].scale, scale_val, **kwargs) + ApplyMethod(number_lines[x].scale, scale_factor, **kwargs) for x in range(1, num_levels) ]+[ - ApplyMethod(number_lines[0].stretch, scale_val, 0, **kwargs), + ApplyMethod(number_lines[0].stretch, scale_factor, 0, **kwargs), ]+[ ApplyMethod( all_numbers[i].shift, - 2*LEFT*(scale_val-1)*(-1)**i, + 2*LEFT*(scale_factor-1)*(-1)**i, **kwargs ) for i in 0, 1 diff --git a/old_projects/music_and_measure.py b/old_projects/music_and_measure.py index 989abaec..d8622539 100644 --- a/old_projects/music_and_measure.py +++ b/old_projects/music_and_measure.py @@ -97,7 +97,7 @@ class Piano(ImageMobject): CONFIG = { "stroke_width" : 1, "invert" : False, - "scale_value" : 0.5 + "scale_factorue" : 0.5 } def __init__(self, **kwargs): digest_config(self, kwargs) @@ -1213,25 +1213,25 @@ class StepsToSolution(IntervalScene): def add_terms(self): self.ones = [] - scale_val = 0.6 + scale_factor = 0.6 plus = None for count in range(1, 10): frac_bottom = TexMobject("\\over %d"%(2**count)) - frac_bottom.scale(scale_val) - one = TexMobject("1").scale(scale_val) + frac_bottom.scale(scale_factor) + one = TexMobject("1").scale(scale_factor) one.next_to(frac_bottom, UP, buff = 0.1) compound = Mobject(frac_bottom, one) if plus: compound.next_to(plus) else: compound.to_edge(LEFT) - plus = TexMobject("+").scale(scale_val) + plus = TexMobject("+").scale(scale_factor) plus.next_to(compound) frac_bottom, one = compound.split() self.ones.append(one) self.add(frac_bottom, one, plus) self.dither(0.2) - dots = TexMobject("\\dots").scale(scale_val).next_to(plus) + dots = TexMobject("\\dots").scale(scale_factor).next_to(plus) arrow = Arrow(ORIGIN, RIGHT).next_to(dots) one = TexMobject("1").next_to(arrow) self.ones.append(one) diff --git a/old_projects/pythagorean_proof.py b/old_projects/pythagorean_proof.py index ba909fc9..b8ed1b19 100644 --- a/old_projects/pythagorean_proof.py +++ b/old_projects/pythagorean_proof.py @@ -13,7 +13,7 @@ A_COLOR = BLUE B_COLOR = MAROON_D C_COLOR = YELLOW -TEX_MOB_SCALE_VAL = 0.5 +TEX_MOB_SCALE_FACTOR = 0.5 POINTS = np.array([ DOWN, 2*UP, @@ -47,7 +47,7 @@ class Triangle(Polygon): return self def add_letter(self, char, nudge = 0.3): - mob = TexMobject(char).scale(TEX_MOB_SCALE_VAL) + mob = TexMobject(char).scale(TEX_MOB_SCALE_FACTOR) if char == "a": points = self.get_vertices()[[0, 2, 1]] elif char == "b": @@ -89,7 +89,7 @@ def c_square(**kwargs): class DrawPointsReference(Scene): def construct(self): for point, count in zip(POINTS, it.count()): - mob = TexMobject(str(count)).scale(TEX_MOB_SCALE_VAL) + mob = TexMobject(str(count)).scale(TEX_MOB_SCALE_FACTOR) mob.shift(POINTS[count]) self.add(mob) @@ -104,7 +104,7 @@ class DrawAllThreeSquares(Scene): c = c_square() self.add(Triangle(), a, b, c) for letter, mob in zip("abc", [a, b, c]): - char_mob = TexMobject(letter+"^2").scale(TEX_MOB_SCALE_VAL) + char_mob = TexMobject(letter+"^2").scale(TEX_MOB_SCALE_FACTOR) char_mob.shift(mob.get_center()) self.add(char_mob) @@ -235,8 +235,8 @@ class ShowBigRectangleDimensions(DrawAllThreeSquaresWithMoreTriangles): for brace in u_brace, side_brace: brace.shift(0.2*DOWN) side_brace.rotate(-np.pi/2) - a_plus_2b = TexMobject("a+2b").scale(TEX_MOB_SCALE_VAL) - b_plus_2a = TexMobject("b+2a").scale(TEX_MOB_SCALE_VAL) + a_plus_2b = TexMobject("a+2b").scale(TEX_MOB_SCALE_FACTOR) + b_plus_2a = TexMobject("b+2a").scale(TEX_MOB_SCALE_FACTOR) a_plus_2b.next_to(u_brace, DOWN) b_plus_2a.next_to(side_brace, LEFT) self.add_mobjects_among(locals().values()) @@ -263,7 +263,7 @@ class DrawOnlyABSquares(Scene): a = a_square() b = b_square() for char, mob in zip("ab", [a, b]): - symobl = TexMobject(char+"^2").scale(TEX_MOB_SCALE_VAL) + symobl = TexMobject(char+"^2").scale(TEX_MOB_SCALE_FACTOR) symobl.shift(mob.get_center()) self.add(symobl) triangle = Triangle() @@ -394,8 +394,8 @@ class ZoomInOnTroublePoint(Scene): for mob in self.mobjects: mob.rotate(np.pi/2) if with_labels: - alpha = TexMobject("\\alpha").scale(TEX_MOB_SCALE_VAL) - beta = TexMobject("90-\\alpha").scale(TEX_MOB_SCALE_VAL) + alpha = TexMobject("\\alpha").scale(TEX_MOB_SCALE_FACTOR) + beta = TexMobject("90-\\alpha").scale(TEX_MOB_SCALE_FACTOR) if rotate: alpha.next_to(angle1_arc, UP+0.1*LEFT) beta.next_to(angle2_arc, DOWN+0.5*LEFT) @@ -446,7 +446,7 @@ class LabelLargeSquare(DrawCSquareWithAllTraingles): u_brace.shift(0.2*DOWN) side_brace = deepcopy(u_brace).rotate(np.pi/2) upper_brace = deepcopy(u_brace).rotate(np.pi) - a_plus_b = TexMobject("a+b").scale(TEX_MOB_SCALE_VAL) + a_plus_b = TexMobject("a+b").scale(TEX_MOB_SCALE_FACTOR) upper_brace.add(a_plus_b.next_to(upper_brace, UP)) side_brace.add(a_plus_b.next_to(side_brace, RIGHT)) self.add(upper_brace, side_brace) diff --git a/topics/characters.py b/topics/characters.py index 7b88952c..047129f9 100644 --- a/topics/characters.py +++ b/topics/characters.py @@ -11,7 +11,7 @@ from scene import Scene PI_CREATURE_DIR = os.path.join(IMAGE_DIR, "PiCreature") -PI_CREATURE_SCALE_VAL = 0.5 +PI_CREATURE_SCALE_FACTOR = 0.5 MOUTH_INDEX = 5 BODY_INDEX = 4 @@ -26,7 +26,7 @@ class PiCreature(SVGMobject): "color" : BLUE_E, "stroke_width" : 0, "fill_opacity" : 1.0, - "initial_scale_val" : 0.01, + "initial_scale_factor" : 0.01, "corner_scale_factor" : 0.75, "flip_at_start" : False, } diff --git a/topics/numerals.py b/topics/numerals.py index 26769b1d..d435c79e 100644 --- a/topics/numerals.py +++ b/topics/numerals.py @@ -40,7 +40,7 @@ class RangingValues(Animation): "value_function" : None, "tracked_mobject" : None, "tracked_mobject_next_to_kwargs" : {}, - "scale_val" : None + "scale_factor" : None } def __init__(self, start_val = 0, end_val = 1, **kwargs): digest_config(self, kwargs, locals()) @@ -60,8 +60,8 @@ class RangingValues(Animation): self.get_number(alpha), num_decimal_points=self.num_decimal_points ) - if self.scale_val: - mob.scale(self.scale_val) + if self.scale_factor: + mob.scale(self.scale_factor) if self.tracking_function: self.tracking_function(alpha, mob) elif self.tracked_mobject: