More chapter 5, plus some renaming fun

This commit is contained in:
Grant Sanderson 2016-08-02 15:50:32 -07:00
parent 6fe057c0f9
commit 4f42f62b3c
19 changed files with 162 additions and 102 deletions

View file

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

View file

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

View file

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

View file

@ -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]],
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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