Rename SPACE_X_RADIUS to FRAME_X_RADIUS, and added constant FRAME_WIDTH (likewise for all y-coordinate information)

This commit is contained in:
Grant Sanderson 2018-03-30 11:25:37 -07:00
parent 55786e443d
commit e168bfe5ba
98 changed files with 952 additions and 958 deletions

View file

@ -271,7 +271,7 @@ class OneInOneThousandHaveDisease(Scene):
]).arrange_submobjects(DOWN, SMALL_BUFF) ]).arrange_submobjects(DOWN, SMALL_BUFF)
for x in range(40) for x in range(40)
]).arrange_submobjects(RIGHT, SMALL_BUFF) ]).arrange_submobjects(RIGHT, SMALL_BUFF)
all_creatures.scale_to_fit_width(2*SPACE_X_RADIUS - 4) all_creatures.scale_to_fit_width(FRAME_WIDTH - 4)
all_creatures.next_to(title, DOWN) all_creatures.next_to(title, DOWN)
randy = all_creatures[0][0] randy = all_creatures[0][0]
all_creatures[0].remove(randy) all_creatures[0].remove(randy)
@ -444,7 +444,7 @@ class RephraseQuestion(Scene):
""", """,
])) ]))
words.arrange_submobjects(RIGHT, buff = LARGE_BUFF) words.arrange_submobjects(RIGHT, buff = LARGE_BUFF)
words.scale_to_fit_width(2*(SPACE_X_RADIUS - MED_LARGE_BUFF)) words.scale_to_fit_width(2*(FRAME_X_RADIUS - MED_LARGE_BUFF))
prior = TextMobject("Prior") prior = TextMobject("Prior")
prior.highlight(GREEN) prior.highlight(GREEN)
@ -872,8 +872,8 @@ class HowMuchCanYouChangeThisPrior(ShowRestrictedSpace, PiCreatureScene):
special_group = subgroups[-5] special_group = subgroups[-5]
special_group.add(self.sick_one) special_group.add(self.sick_one)
subgroups.generate_target() subgroups.generate_target()
width_factor = 2*SPACE_X_RADIUS/subgroups.get_width() width_factor = FRAME_WIDTH/subgroups.get_width()
height_factor = 2*SPACE_Y_RADIUS/subgroups.get_height() height_factor = FRAME_HEIGHT/subgroups.get_height()
subgroups.target.stretch_in_place(width_factor, 0) subgroups.target.stretch_in_place(width_factor, 0)
subgroups.target.stretch_in_place(height_factor, 1) subgroups.target.stretch_in_place(height_factor, 1)
for subgroup in subgroups.target: for subgroup in subgroups.target:
@ -1369,14 +1369,14 @@ class IntroduceTelepathyExample(StatisticsVsEmpathy):
class CompareNumbersInBothExamples(Scene): class CompareNumbersInBothExamples(Scene):
def construct(self): def construct(self):
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS) v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
v_line.shift(MED_LARGE_BUFF*LEFT) v_line.shift(MED_LARGE_BUFF*LEFT)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
h_line.to_edge(UP, buff = 1.25*LARGE_BUFF) h_line.to_edge(UP, buff = 1.25*LARGE_BUFF)
titles = VGroup() titles = VGroup()
for word, vect in ("Disease", LEFT), ("Telepathy", RIGHT): for word, vect in ("Disease", LEFT), ("Telepathy", RIGHT):
title = TextMobject("%s example"%word) title = TextMobject("%s example"%word)
title.shift(vect*SPACE_X_RADIUS/2.0) title.shift(vect*FRAME_X_RADIUS/2.0)
title.to_edge(UP) title.to_edge(UP)
titles.add(title) titles.add(title)
priors = VGroup(*[ priors = VGroup(*[
@ -1401,7 +1401,7 @@ class CompareNumbersInBothExamples(Scene):
mob.highlight_by_tex("+", GREEN) mob.highlight_by_tex("+", GREEN)
mob.highlight_by_tex("Correct", GREEN) mob.highlight_by_tex("Correct", GREEN)
mob.scale(0.8) mob.scale(0.8)
mob.shift(vect*SPACE_X_RADIUS/2) mob.shift(vect*FRAME_X_RADIUS/2)
self.play( self.play(
LaggedStart(FadeIn, titles, lag_ratio = 0.7), LaggedStart(FadeIn, titles, lag_ratio = 0.7),

View file

@ -486,7 +486,7 @@ class SixChooseThreeExample(InitialFiveChooseThreeExample):
def talk_through_one_line(self): def talk_through_one_line(self):
line = self.stack[8] line = self.stack[8]
line.save_state() line.save_state()
distance = SPACE_X_RADIUS/2 distance = FRAME_X_RADIUS/2
self.play(line.shift, distance*LEFT) self.play(line.shift, distance*LEFT)
@ -546,7 +546,7 @@ class SixChooseThreeExample(InitialFiveChooseThreeExample):
self.wait() self.wait()
self.play( self.play(
ApplyMethod( ApplyMethod(
lhs.shift, 0.65*SPACE_X_RADIUS*(LEFT+UP), lhs.shift, 0.65*FRAME_X_RADIUS*(LEFT+UP),
path_arc = np.pi/2, path_arc = np.pi/2,
rate_func = running_start, rate_func = running_start,
remover = True, remover = True,
@ -618,7 +618,7 @@ class SixChooseThreeInOtherContext(Scene):
line = VGroup(*[arrow.tip.copy() for arrow in arrows]) line = VGroup(*[arrow.tip.copy() for arrow in arrows])
line.arrange_submobjects(RIGHT, buff = 0.5*SMALL_BUFF) line.arrange_submobjects(RIGHT, buff = 0.5*SMALL_BUFF)
if last_line is None: if last_line is None:
line.shift(SPACE_X_RADIUS*RIGHT/2) line.shift(FRAME_X_RADIUS*RIGHT/2)
line.to_edge(UP) line.to_edge(UP)
self.play( self.play(
ShowCreation(arrows), ShowCreation(arrows),
@ -714,7 +714,7 @@ class SixChooseThreeInOtherContext(Scene):
# top_stacks.to_edge(UP, buff = MED_SMALL_BUFF) # top_stacks.to_edge(UP, buff = MED_SMALL_BUFF)
# line = Line(LEFT, RIGHT, color = WHITE) # line = Line(LEFT, RIGHT, color = WHITE)
# line.scale(SPACE_X_RADIUS) # line.scale(FRAME_X_RADIUS)
# line.next_to(top_stacks, DOWN) # line.next_to(top_stacks, DOWN)
# x = TexMobject("x").highlight(BLUE) # x = TexMobject("x").highlight(BLUE)
@ -834,7 +834,7 @@ class SixChooseThreeInOtherContext(Scene):
# y = TexMobject("y").highlight(RED) # y = TexMobject("y").highlight(RED)
# stack = get_stack(x, y, n, k) # stack = get_stack(x, y, n, k)
# stack.scale_to_fit_height(self.stack_height) # stack.scale_to_fit_height(self.stack_height)
# stack.shift(SPACE_X_RADIUS*LEFT/2) # stack.shift(FRAME_X_RADIUS*LEFT/2)
# stack.to_edge(DOWN) # stack.to_edge(DOWN)
# numbers = VGroup(*[ # numbers = VGroup(*[
# TexMobject("%d"%(d+1)) # TexMobject("%d"%(d+1))
@ -867,7 +867,7 @@ class SixChooseThreeInOtherContext(Scene):
# "E", ")" # "E", ")"
# ) # )
# letters = VGroup(*letter_set[1::2]) # letters = VGroup(*letter_set[1::2])
# letter_set.shift(SPACE_X_RADIUS*RIGHT/2) # letter_set.shift(FRAME_X_RADIUS*RIGHT/2)
# letter_set.to_edge(UP) # letter_set.to_edge(UP)
# letter_subsets = list(it.combinations(letters, k)) # letter_subsets = list(it.combinations(letters, k))
@ -878,7 +878,7 @@ class SixChooseThreeInOtherContext(Scene):
# for letter_subset in letter_subsets # for letter_subset in letter_subsets
# ]).arrange_submobjects(DOWN, buff = MED_SMALL_BUFF) # ]).arrange_submobjects(DOWN, buff = MED_SMALL_BUFF)
# subset_mobs.scale_to_fit_height(self.stack_height) # subset_mobs.scale_to_fit_height(self.stack_height)
# subset_mobs.shift(SPACE_X_RADIUS*RIGHT/2) # subset_mobs.shift(FRAME_X_RADIUS*RIGHT/2)
# subset_mobs.to_edge(DOWN) # subset_mobs.to_edge(DOWN)
# choose_words = TextMobject("Choose %d"%k) # choose_words = TextMobject("Choose %d"%k)
@ -1530,7 +1530,7 @@ class BuildFiveFromFour(ProbabilityOfKWomenInGroupOfFive):
top_stacks = bottom_stacks.deepcopy() top_stacks = bottom_stacks.deepcopy()
top_group = VGroup(top_stacks, top_stacks.numbers) top_group = VGroup(top_stacks, top_stacks.numbers)
h_line = DashedLine(SPACE_X_RADIUS*LEFT, SPACE_X_RADIUS*RIGHT) h_line = DashedLine(FRAME_X_RADIUS*LEFT, FRAME_X_RADIUS*RIGHT)
#Initial split #Initial split
self.play( self.play(
@ -1667,8 +1667,8 @@ class BuildUpFromStart(Scene):
stacks.arrange_submobjects(RIGHT, buff = LARGE_BUFF) stacks.arrange_submobjects(RIGHT, buff = LARGE_BUFF)
stacks.numbers = self.get_numbers(stacks) stacks.numbers = self.get_numbers(stacks)
max_width = 2*SPACE_X_RADIUS - 3 max_width = FRAME_WIDTH - 3
max_height = SPACE_Y_RADIUS - 1 max_height = FRAME_Y_RADIUS - 1
self.add(stacks, stacks.numbers) self.add(stacks, stacks.numbers)
for x in range(self.n_iterations): for x in range(self.n_iterations):
@ -2021,7 +2021,7 @@ class IntroducePascalsTriangle(Scene):
if n == 0: if n == 0:
line.add(Line(LEFT, RIGHT).scale(0.1).set_stroke(BLACK, 0)) line.add(Line(LEFT, RIGHT).scale(0.1).set_stroke(BLACK, 0))
line.arrange_submobjects(RIGHT, SMALL_BUFF) line.arrange_submobjects(RIGHT, SMALL_BUFF)
line.shift(SPACE_X_RADIUS*RIGHT/2 + SPACE_Y_RADIUS*UP/2) line.shift(FRAME_X_RADIUS*RIGHT/2 + FRAME_Y_RADIUS*UP/2)
brace = Brace(line, UP) brace = Brace(line, UP)
if n == 1: if n == 1:
label = "1 Person" label = "1 Person"
@ -2066,8 +2066,8 @@ class StacksApproachBellCurve(Scene):
numbers = VGroup(Integer(1)) numbers = VGroup(Integer(1))
numbers.next_to(bars, UP, SMALL_BUFF) numbers.next_to(bars, UP, SMALL_BUFF)
max_width = 2*SPACE_X_RADIUS - 2 max_width = FRAME_WIDTH - 2
max_height = SPACE_Y_RADIUS - 1.5 max_height = FRAME_Y_RADIUS - 1.5
for x in range(self.n_iterations): for x in range(self.n_iterations):
if x == 0: if x == 0:
@ -3300,7 +3300,7 @@ class ABCNotBCA(Scene):
equation.highlight(YELLOW) equation.highlight(YELLOW)
equation.next_to(words, DOWN) equation.next_to(words, DOWN)
group = VGroup(words, equation) group = VGroup(words, equation)
group.scale_to_fit_width(2*SPACE_X_RADIUS - 1) group.scale_to_fit_width(FRAME_WIDTH - 1)
group.to_edge(DOWN) group.to_edge(DOWN)
self.add(words, equation) self.add(words, equation)

View file

@ -93,7 +93,7 @@ def get_slot_group(
slot_group.to_edge(RIGHT) slot_group.to_edge(RIGHT)
slot_group.bool_list = bool_list slot_group.bool_list = bool_list
total_height = SPACE_Y_RADIUS total_height = FRAME_Y_RADIUS
base = 2.3 base = 2.3
for i, line in enumerate(lines): for i, line in enumerate(lines):
@ -1256,7 +1256,7 @@ class ExampleConditional(Scene):
rhs.highlight_by_tex("0.925", YELLOW) rhs.highlight_by_tex("0.925", YELLOW)
rhs.next_to(prob, RIGHT) rhs.next_to(prob, RIGHT)
expression = VGroup(prob, rhs) expression = VGroup(prob, rhs)
expression.scale_to_fit_width(2*SPACE_X_RADIUS - 1) expression.scale_to_fit_width(FRAME_WIDTH - 1)
expression.center().to_edge(DOWN) expression.center().to_edge(DOWN)
self.play(Write(expression)) self.play(Write(expression))
@ -1296,7 +1296,7 @@ class WritePSecond(Scene):
rhs = TexMobject("= 0.8") rhs = TexMobject("= 0.8")
rhs.next_to(prob, RIGHT) rhs.next_to(prob, RIGHT)
prob.add(rhs) prob.add(rhs)
prob.scale_to_fit_width(2*SPACE_X_RADIUS - 1) prob.scale_to_fit_width(FRAME_WIDTH - 1)
prob.center().to_edge(DOWN) prob.center().to_edge(DOWN)
self.play(Write(prob)) self.play(Write(prob))
@ -1833,7 +1833,7 @@ class ShowFullDistribution(Scene):
"P(", "\\text{Correct}", ")", "=", "0.8" "P(", "\\text{Correct}", ")", "=", "0.8"
) )
new_prob.highlight_by_tex("Correct", GREEN) new_prob.highlight_by_tex("Correct", GREEN)
new_prob.shift(SPACE_X_RADIUS*RIGHT/2) new_prob.shift(FRAME_X_RADIUS*RIGHT/2)
new_prob.to_edge(UP) new_prob.to_edge(UP)
alt_ps = 0.5, 0.65, 0.25 alt_ps = 0.5, 0.65, 0.25
@ -2538,7 +2538,7 @@ class CycleThroughPatterns(NameBinomial):
) )
question.highlight_by_tex("male", BLUE) question.highlight_by_tex("male", BLUE)
question.highlight_by_tex("female", MAROON_B) question.highlight_by_tex("female", MAROON_B)
question.scale_to_fit_width(2*SPACE_X_RADIUS - 1) question.scale_to_fit_width(FRAME_WIDTH - 1)
question.to_edge(UP, buff = LARGE_BUFF) question.to_edge(UP, buff = LARGE_BUFF)
self.add(question) self.add(question)
@ -3200,7 +3200,7 @@ class AssumeOrderDoesntMatter(Scene):
equals.next_to(prob, RIGHT) equals.next_to(prob, RIGHT)
prob.add(equals) prob.add(equals)
prob_group.arrange_submobjects(RIGHT) prob_group.arrange_submobjects(RIGHT)
max_width = 2*SPACE_X_RADIUS - 1 max_width = FRAME_WIDTH - 1
if prob_group.get_width() > max_width: if prob_group.get_width() > max_width:
prob_group.scale_to_fit_width(max_width) prob_group.scale_to_fit_width(max_width)
prob_groups.arrange_submobjects(DOWN, buff = 0.7) prob_groups.arrange_submobjects(DOWN, buff = 0.7)
@ -3244,7 +3244,7 @@ class AssumeOrderDoesntMatter(Scene):
self.play( self.play(
LaggedStart( LaggedStart(
ApplyMethod, self.assumption_group, ApplyMethod, self.assumption_group,
lambda m : (m.shift, 2*SPACE_Y_RADIUS*DOWN), lambda m : (m.shift, FRAME_HEIGHT*DOWN),
remover = True, remover = True,
), ),
ApplyMethod( ApplyMethod(
@ -3553,8 +3553,8 @@ class Thumbnail(DangerInProbability):
chart = BarChart( chart = BarChart(
values = values, values = values,
label_y_axis = False, label_y_axis = False,
width = 2*SPACE_X_RADIUS - 3, width = FRAME_WIDTH - 3,
height = 1.5*SPACE_Y_RADIUS height = 1.5*FRAME_Y_RADIUS
) )
chart.to_edge(DOWN) chart.to_edge(DOWN)
self.add(chart) self.add(chart)

View file

@ -14,7 +14,7 @@ class Vibrate(Animation):
"temporal_period" : 1, "temporal_period" : 1,
"overtones" : 4, "overtones" : 4,
"amplitude" : 0.5, "amplitude" : 0.5,
"radius" : SPACE_X_RADIUS/2, "radius" : FRAME_X_RADIUS/2,
"run_time" : 3.0, "run_time" : 3.0,
"rate_func" : None "rate_func" : None
} }

View file

@ -193,7 +193,7 @@ class FocusOn(Transform):
def __init__(self, mobject_or_point, **kwargs): def __init__(self, mobject_or_point, **kwargs):
digest_config(self, kwargs) digest_config(self, kwargs)
big_dot = Dot( big_dot = Dot(
radius = SPACE_X_RADIUS+SPACE_Y_RADIUS, radius = FRAME_X_RADIUS+FRAME_Y_RADIUS,
stroke_width = 0, stroke_width = 0,
fill_color = self.color, fill_color = self.color,
fill_opacity = 0, fill_opacity = 0,

View file

@ -17,20 +17,13 @@ class Camera(object):
CONFIG = { CONFIG = {
"background_image" : None, "background_image" : None,
"pixel_shape" : (DEFAULT_HEIGHT, DEFAULT_WIDTH), "pixel_shape" : (DEFAULT_HEIGHT, DEFAULT_WIDTH),
# Note 1: space_shape will be resized to match pixel_shape # Note: space_shape will be resized to match pixel_shape
# "space_shape" : (FRAME_Y_RADIUS, FRAME_X_RADIUS),
# Note 2: While pixel_shape indicates the actual full height
# and width of the pixel array, space_shape indicates only
# half the height and half the width of space (extending from
# -SPACE_Y_RADIUS to +SPACE_Y_RADIUS vertically and from
# -SPACE_X_RADIUS to +SPACE_X_RADIUS horizontally)
# TODO: Rename these to SPACE_X_RADIUS, SPACE_Y_RADIUS
"space_shape" : (SPACE_Y_RADIUS, SPACE_X_RADIUS),
"space_center" : ORIGIN, "space_center" : ORIGIN,
"background_color" : BLACK, "background_color" : BLACK,
#Points in vectorized mobjects with norm greater #Points in vectorized mobjects with norm greater
#than this value will be rescaled. #than this value will be rescaled.
"max_allowable_norm" : 2*SPACE_X_RADIUS, "max_allowable_norm" : FRAME_WIDTH,
"image_mode" : "RGBA", "image_mode" : "RGBA",
"n_rgb_coords" : 4, "n_rgb_coords" : 4,
"background_alpha" : 0, #Out of rgb_max_val "background_alpha" : 0, #Out of rgb_max_val
@ -63,12 +56,12 @@ class Camera(object):
remains fixed while the other changes accordingly. remains fixed while the other changes accordingly.
""" """
aspect_ratio = float(self.pixel_shape[1])/self.pixel_shape[0] aspect_ratio = float(self.pixel_shape[1])/self.pixel_shape[0]
space_y_radius, space_y_radius = self.space_shape space_x_radius, space_y_radius = self.space_shape
if fixed_dimension == 0: if fixed_dimension == 0:
space_y_radius = aspect_ratio*space_y_radius space_y_radius = aspect_ratio*space_x_radius
else: else:
space_y_radius = space_y_radius/aspect_ratio space_x_radius = space_y_radius/aspect_ratio
self.space_shape = (space_y_radius, space_y_radius) self.space_shape = (space_x_radius, space_y_radius)
def init_background(self): def init_background(self):
if self.background_image is not None: if self.background_image is not None:

View file

@ -26,10 +26,11 @@ DEFAULT_POINT_DENSITY_1D = 250
DEFAULT_POINT_THICKNESS = 4 DEFAULT_POINT_THICKNESS = 4
#TODO, Make sure these are not needed
SPACE_Y_RADIUS = 4.0
SPACE_X_RADIUS = SPACE_Y_RADIUS * DEFAULT_WIDTH / DEFAULT_HEIGHT
FRAME_HEIGHT = 8.0
FRAME_WIDTH = FRAME_HEIGHT * DEFAULT_WIDTH / DEFAULT_HEIGHT
FRAME_Y_RADIUS = FRAME_HEIGHT/2
FRAME_X_RADIUS = FRAME_WIDTH/2
SMALL_BUFF = 0.1 SMALL_BUFF = 0.1
MED_SMALL_BUFF = 0.25 MED_SMALL_BUFF = 0.25
@ -57,10 +58,10 @@ X_AXIS = np.array(( 1., 0., 0.))
Y_AXIS = np.array(( 0., 1., 0.)) Y_AXIS = np.array(( 0., 1., 0.))
Z_AXIS = np.array(( 0., 0., 1.)) Z_AXIS = np.array(( 0., 0., 1.))
TOP = SPACE_Y_RADIUS*UP TOP = FRAME_Y_RADIUS*UP
BOTTOM = SPACE_Y_RADIUS*DOWN BOTTOM = FRAME_Y_RADIUS*DOWN
LEFT_SIDE = SPACE_X_RADIUS*LEFT LEFT_SIDE = FRAME_X_RADIUS*LEFT
RIGHT_SIDE = SPACE_X_RADIUS*RIGHT RIGHT_SIDE = FRAME_X_RADIUS*RIGHT
TAU = 2*np.pi TAU = 2*np.pi
DEGREES = TAU/360 DEGREES = TAU/360

View file

@ -277,7 +277,7 @@ class Mobject(Container):
Direction just needs to be a vector pointing towards side or Direction just needs to be a vector pointing towards side or
corner in the 2d plane. corner in the 2d plane.
""" """
target_point = np.sign(direction) * (SPACE_X_RADIUS, SPACE_Y_RADIUS, 0) target_point = np.sign(direction) * (FRAME_X_RADIUS, FRAME_Y_RADIUS, 0)
point_to_align = self.get_critical_point(direction) point_to_align = self.get_critical_point(direction)
shift_val = target_point - point_to_align - buff * np.array(direction) shift_val = target_point - point_to_align - buff * np.array(direction)
shift_val = shift_val * abs(np.sign(direction)) shift_val = shift_val * abs(np.sign(direction))
@ -345,7 +345,7 @@ class Mobject(Container):
return self return self
def shift_onto_screen(self, **kwargs): def shift_onto_screen(self, **kwargs):
space_lengths = [SPACE_X_RADIUS, SPACE_Y_RADIUS] space_lengths = [FRAME_X_RADIUS, FRAME_Y_RADIUS]
for vect in UP, DOWN, LEFT, RIGHT: for vect in UP, DOWN, LEFT, RIGHT:
dim = np.argmax(np.abs(vect)) dim = np.argmax(np.abs(vect))
buff = kwargs.get("buff", DEFAULT_MOBJECT_TO_EDGE_BUFFER) buff = kwargs.get("buff", DEFAULT_MOBJECT_TO_EDGE_BUFFER)
@ -356,13 +356,13 @@ class Mobject(Container):
return self return self
def is_off_screen(self): def is_off_screen(self):
if self.get_left()[0] > SPACE_X_RADIUS: if self.get_left()[0] > FRAME_X_RADIUS:
return True return True
if self.get_right()[0] < -SPACE_X_RADIUS: if self.get_right()[0] < -FRAME_X_RADIUS:
return True return True
if self.get_bottom()[1] > SPACE_Y_RADIUS: if self.get_bottom()[1] > FRAME_Y_RADIUS:
return True return True
if self.get_top()[1] < -SPACE_Y_RADIUS: if self.get_top()[1] < -FRAME_Y_RADIUS:
return True return True
return False return False

View file

@ -169,7 +169,7 @@ class BreakUp2To256(PiCreatureScene):
]) ])
target.arrange_submobjects(RIGHT, buff = SMALL_BUFF) target.arrange_submobjects(RIGHT, buff = SMALL_BUFF)
target.to_edge(UP) target.to_edge(UP)
target.scale_to_fit_width(2*SPACE_X_RADIUS - LARGE_BUFF) target.scale_to_fit_width(FRAME_WIDTH - LARGE_BUFF)
parens = VGroup(*it.chain(*[ parens = VGroup(*it.chain(*[
[t[0], t[2]] for t in target [t[0], t[2]] for t in target
])) ]))
@ -240,7 +240,7 @@ class MainBreakdown(Scene):
top_line.add(mob) top_line.add(mob)
four_billions.add(mob[1]) four_billions.add(mob[1])
top_line.arrange_submobjects(RIGHT, buff = SMALL_BUFF) top_line.arrange_submobjects(RIGHT, buff = SMALL_BUFF)
top_line.scale_to_fit_width(2*SPACE_X_RADIUS - LARGE_BUFF) top_line.scale_to_fit_width(FRAME_WIDTH - LARGE_BUFF)
top_line.to_edge(UP) top_line.to_edge(UP)
four_billions.highlight(YELLOW) four_billions.highlight(YELLOW)
self.add(top_line) self.add(top_line)
@ -596,8 +596,8 @@ class MainBreakdown(Scene):
group.add(dots) group.add(dots)
group.add(*[group[0].copy() for x in range(2)]) group.add(*[group[0].copy() for x in range(2)])
group.arrange_submobjects(RIGHT, buff = SMALL_BUFF) group.arrange_submobjects(RIGHT, buff = SMALL_BUFF)
group.scale_to_fit_height(SPACE_Y_RADIUS) group.scale_to_fit_height(FRAME_Y_RADIUS)
max_width = 1.25*SPACE_X_RADIUS max_width = 1.25*FRAME_X_RADIUS
if group.get_width() > max_width: if group.get_width() > max_width:
group.scale_to_fit_width(max_width) group.scale_to_fit_width(max_width)
group.to_corner(DOWN+RIGHT) group.to_corner(DOWN+RIGHT)
@ -722,7 +722,7 @@ class StateOfBitcoin(TeacherStudentsScene):
height = 1, height = 1,
fill_color = LIGHT_GREY, fill_color = LIGHT_GREY,
) )
gpu.shift(0.5*SPACE_X_RADIUS*RIGHT) gpu.shift(0.5*FRAME_X_RADIUS*RIGHT)
gpu_name = TextMobject("GPU") gpu_name = TextMobject("GPU")
gpu_name.highlight(BLUE) gpu_name.highlight(BLUE)
gpu_name.next_to(gpu, UP) gpu_name.next_to(gpu, UP)
@ -843,7 +843,7 @@ class QAndA(PiCreatureScene):
]).arrange_submobjects(DOWN, buff = SMALL_BUFF) ]).arrange_submobjects(DOWN, buff = SMALL_BUFF)
for y in range(cols) for y in range(cols)
]).arrange_submobjects(RIGHT, buff = SMALL_BUFF) ]).arrange_submobjects(RIGHT, buff = SMALL_BUFF)
dots.scale_to_fit_width(2*SPACE_X_RADIUS - 2*LARGE_BUFF) dots.scale_to_fit_width(FRAME_WIDTH - 2*LARGE_BUFF)
dots.next_to(self.pi_creature, UP) dots.next_to(self.pi_creature, UP)
dots = VGroup(*it.chain(*dots)) dots = VGroup(*it.chain(*dots))
top = dots.get_top() top = dots.get_top()
@ -900,12 +900,12 @@ class Thumbnail(Scene):
if i%(n_chars/4) == 0: if i%(n_chars/4) == 0:
new_str += " \\\\ " new_str += " \\\\ "
background_num = TexMobject(new_str) background_num = TexMobject(new_str)
background_num.scale_to_fit_width(2*SPACE_X_RADIUS - LARGE_BUFF) background_num.scale_to_fit_width(FRAME_WIDTH - LARGE_BUFF)
background_num.set_fill(opacity = 0.2) background_num.set_fill(opacity = 0.2)
secure = TextMobject("Secure?") secure = TextMobject("Secure?")
secure.scale(4) secure.scale(4)
secure.shift(SPACE_Y_RADIUS*DOWN/2) secure.shift(FRAME_Y_RADIUS*DOWN/2)
secure.highlight(RED) secure.highlight(RED)
secure.set_stroke(RED_A, 3) secure.set_stroke(RED_A, 3)

View file

@ -359,7 +359,7 @@ class EquationSolver1d(GraphScene, ZoomedScene):
x_guess_label_caption = TextMobject("New guess: x = ", fill_color = midColor) x_guess_label_caption = TextMobject("New guess: x = ", fill_color = midColor)
x_guess_label_num = DecimalNumber(midX, fill_color = midColor) x_guess_label_num = DecimalNumber(midX, fill_color = midColor)
x_guess_label_num.move_to(0.9 * SPACE_Y_RADIUS * DOWN) x_guess_label_num.move_to(0.9 * FRAME_Y_RADIUS * DOWN)
x_guess_label_caption.next_to(x_guess_label_num, LEFT) x_guess_label_caption.next_to(x_guess_label_num, LEFT)
x_guess_label = Group(x_guess_label_caption, x_guess_label_num) x_guess_label = Group(x_guess_label_caption, x_guess_label_num)
y_guess_label_caption = TextMobject(", y = ", fill_color = midColor) y_guess_label_caption = TextMobject(", y = ", fill_color = midColor)
@ -492,7 +492,7 @@ def plane_zeta((x, y)):
return (float(answer.real), float(answer.imag)) return (float(answer.real), float(answer.imag))
def rescaled_plane_zeta((x, y)): def rescaled_plane_zeta((x, y)):
return plane_zeta((x/SPACE_X_RADIUS, 8*y)) return plane_zeta((x/FRAME_X_RADIUS, 8*y))
# Returns a function from 2-ples to 2-ples # Returns a function from 2-ples to 2-ples
# This function is specified by a list of (x, y, z) tuples, # This function is specified by a list of (x, y, z) tuples,
@ -1558,8 +1558,8 @@ class VectorField(Scene):
num_plane = NumberPlane() num_plane = NumberPlane()
self.add(num_plane) self.add(num_plane)
x_min, y_min = num_plane.point_to_coords(SPACE_X_RADIUS * LEFT + SPACE_Y_RADIUS * UP) x_min, y_min = num_plane.point_to_coords(FRAME_X_RADIUS * LEFT + FRAME_Y_RADIUS * UP)
x_max, y_max = num_plane.point_to_coords(SPACE_X_RADIUS * RIGHT + SPACE_Y_RADIUS * DOWN) x_max, y_max = num_plane.point_to_coords(FRAME_X_RADIUS * RIGHT + FRAME_Y_RADIUS * DOWN)
x_points = np.linspace(x_min, x_max, self.granularity) x_points = np.linspace(x_min, x_max, self.granularity)
y_points = np.linspace(y_min, y_max, self.granularity) y_points = np.linspace(y_min, y_max, self.granularity)
@ -1791,17 +1791,17 @@ class Initial2dFuncSceneMorphing(Initial2dFuncSceneBase):
} }
def setup(self): def setup(self):
split_line = DashedLine(SPACE_Y_RADIUS * UP, SPACE_Y_RADIUS * DOWN) split_line = DashedLine(FRAME_Y_RADIUS * UP, FRAME_Y_RADIUS * DOWN)
self.num_plane = NumberPlane(x_radius = SPACE_X_RADIUS/2) self.num_plane = NumberPlane(x_radius = FRAME_X_RADIUS/2)
self.num_plane.to_edge(LEFT, buff = 0) self.num_plane.to_edge(LEFT, buff = 0)
self.num_plane.prepare_for_nonlinear_transform() self.num_plane.prepare_for_nonlinear_transform()
self.add(self.num_plane, split_line) self.add(self.num_plane, split_line)
def squash_onto_left(self, object): def squash_onto_left(self, object):
object.shift(SPACE_X_RADIUS/2 * LEFT) object.shift(FRAME_X_RADIUS/2 * LEFT)
def squash_onto_right(self, object): def squash_onto_right(self, object):
object.shift(SPACE_X_RADIUS/2 * RIGHT) object.shift(FRAME_X_RADIUS/2 * RIGHT)
def obj_draw(self, input_object): def obj_draw(self, input_object):
output_object = input_object.copy() output_object = input_object.copy()
@ -1820,10 +1820,10 @@ class Initial2dFuncSceneMorphing(Initial2dFuncSceneBase):
right_plane.center() right_plane.center()
right_plane.prepare_for_nonlinear_transform() right_plane.prepare_for_nonlinear_transform()
right_plane.apply_function(self.func) right_plane.apply_function(self.func)
right_plane.shift(SPACE_X_RADIUS/2 * RIGHT) right_plane.shift(FRAME_X_RADIUS/2 * RIGHT)
self.right_plane = right_plane self.right_plane = right_plane
crappy_cropper = FullScreenFadeRectangle(fill_opacity = 1) crappy_cropper = FullScreenFadeRectangle(fill_opacity = 1)
crappy_cropper.stretch_to_fit_width(SPACE_X_RADIUS) crappy_cropper.stretch_to_fit_width(FRAME_X_RADIUS)
crappy_cropper.to_edge(LEFT, buff = 0) crappy_cropper.to_edge(LEFT, buff = 0)
self.play( self.play(
ReplacementTransform(self.num_plane.copy(), right_plane), ReplacementTransform(self.num_plane.copy(), right_plane),
@ -1847,7 +1847,7 @@ class DemonstrateColorMapping(ColorMappedObjectsScene):
# self.add_foreground_mobject(output_plane_label) # self.add_foreground_mobject(output_plane_label)
if self.show_full_color_map: if self.show_full_color_map:
bright_background = Rectangle(width = 2 * SPACE_X_RADIUS + 1, height = 2 * SPACE_Y_RADIUS + 1, fill_opacity = 1) bright_background = Rectangle(width = 2 * FRAME_X_RADIUS + 1, height = 2 * FRAME_Y_RADIUS + 1, fill_opacity = 1)
bright_background.color_using_background_image(self.background_image_file) bright_background.color_using_background_image(self.background_image_file)
dim_background = bright_background.copy() dim_background = bright_background.copy()
dim_background.fill_opacity = 0.3 dim_background.fill_opacity = 0.3
@ -2711,10 +2711,10 @@ class NotFoundScene(Scene):
self.wait() self.wait()
criticalStripYScale = 100 criticalStripYScale = 100
criticalStrip = Axes(x_min = -0.5, x_max = 1.5, x_axis_config = {"unit_size" : SPACE_X_RADIUS, criticalStrip = Axes(x_min = -0.5, x_max = 1.5, x_axis_config = {"unit_size" : FRAME_X_RADIUS,
"number_at_center" : 0.5}, "number_at_center" : 0.5},
y_min = -criticalStripYScale, y_max = criticalStripYScale, y_min = -criticalStripYScale, y_max = criticalStripYScale,
y_axis_config = {"unit_size" : fdiv(SPACE_Y_RADIUS, criticalStripYScale)}) y_axis_config = {"unit_size" : fdiv(FRAME_Y_RADIUS, criticalStripYScale)})
class ZetaViz(PureColorMap): class ZetaViz(PureColorMap):
CONFIG = { CONFIG = {

View file

@ -718,7 +718,7 @@ class RewriteEquationWithTeacher(AltTeacherStudentsScene):
self.play( self.play(
ApplyMethod( ApplyMethod(
to_remove.next_to, SPACE_X_RADIUS*RIGHT, RIGHT, to_remove.next_to, FRAME_X_RADIUS*RIGHT, RIGHT,
remover = True, remover = True,
rate_func = running_start, rate_func = running_start,
path_arc = -TAU/4, path_arc = -TAU/4,
@ -740,7 +740,7 @@ class InputOutputScene(Scene):
CONFIG = { CONFIG = {
"plane_width" : 6, "plane_width" : 6,
"plane_height" : 6, "plane_height" : 6,
"x_shift" : SPACE_X_RADIUS/2, "x_shift" : FRAME_X_RADIUS/2,
"y_shift" : MED_LARGE_BUFF, "y_shift" : MED_LARGE_BUFF,
"output_scalar" : 10, "output_scalar" : 10,
"non_renormalized_func" : plane_func_by_wind_spec( "non_renormalized_func" : plane_func_by_wind_spec(
@ -813,7 +813,7 @@ class InputOutputScene(Scene):
plane.add_coordinates(x_vals = range(-2, 3), y_vals = range(-2, 3)) plane.add_coordinates(x_vals = range(-2, 3), y_vals = range(-2, 3))
plane.white_parts = VGroup(plane.axes, plane.coordinate_labels) plane.white_parts = VGroup(plane.axes, plane.coordinate_labels)
plane.lines_to_fade = VGroup(plane.main_lines, plane.secondary_lines) plane.lines_to_fade = VGroup(plane.main_lines, plane.secondary_lines)
plane.move_to(vect*SPACE_X_RADIUS/2 + self.y_shift*DOWN) plane.move_to(vect*FRAME_X_RADIUS/2 + self.y_shift*DOWN)
label = TextMobject(text) label = TextMobject(text)
label.scale(1.5) label.scale(1.5)
label.add_background_rectangle() label.add_background_rectangle()
@ -828,7 +828,7 @@ class InputOutputScene(Scene):
return planes return planes
def get_v_line(self): def get_v_line(self):
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS) v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
v_line.set_stroke(WHITE, 5) v_line.set_stroke(WHITE, 5)
return v_line return v_line
@ -1160,7 +1160,7 @@ class TwoDScreenInOurThreeDWorld(AltTeacherStudentsScene, ThreeDScene):
laptop.rotate(-TAU/12, DOWN) laptop.rotate(-TAU/12, DOWN)
laptop.rotate(-5*TAU/24, LEFT) laptop.rotate(-5*TAU/24, LEFT)
laptop.rotate(TAU/8, LEFT) laptop.rotate(TAU/8, LEFT)
laptop.scale(2.3*SPACE_X_RADIUS/laptop.screen_plate.get_width()) laptop.scale(2.3*FRAME_X_RADIUS/laptop.screen_plate.get_width())
laptop.shift(-laptop.screen_plate.get_center() + 0.1*IN) laptop.shift(-laptop.screen_plate.get_center() + 0.1*IN)
should_shade_in_3d(laptop) should_shade_in_3d(laptop)
@ -1208,8 +1208,8 @@ class EveryOutputPointHasAColor(ColorMappedObjectsScene):
dots = VGroup() dots = VGroup()
step = self.dot_spacing step = self.dot_spacing
for x in np.arange(-SPACE_X_RADIUS, SPACE_X_RADIUS+step, step): for x in np.arange(-FRAME_X_RADIUS, FRAME_X_RADIUS+step, step):
for y in np.arange(-SPACE_Y_RADIUS, SPACE_Y_RADIUS+step, step): for y in np.arange(-FRAME_Y_RADIUS, FRAME_Y_RADIUS+step, step):
dot = Dot(color = WHITE) dot = Dot(color = WHITE)
dot.color_using_background_image(self.background_image_file) dot.color_using_background_image(self.background_image_file)
dot.move_to(x*RIGHT + y*UP) dot.move_to(x*RIGHT + y*UP)
@ -1242,8 +1242,8 @@ class DotsHoppingToColor(InputOutputScene):
dots = self.get_dots(input_plane, output_plane) dots = self.get_dots(input_plane, output_plane)
right_half_block = Rectangle( right_half_block = Rectangle(
height = 2*SPACE_Y_RADIUS, height = FRAME_HEIGHT,
width = SPACE_X_RADIUS - SMALL_BUFF, width = FRAME_X_RADIUS - SMALL_BUFF,
stroke_width = 0, stroke_width = 0,
fill_color = BLACK, fill_color = BLACK,
fill_opacity = 0.8, fill_opacity = 0.8,
@ -1292,7 +1292,7 @@ class DotsHoppingToColor(InputOutputScene):
#Cover output half #Cover output half
right_half_block.save_state() right_half_block.save_state()
right_half_block.next_to(SPACE_X_RADIUS*RIGHT, RIGHT) right_half_block.next_to(FRAME_X_RADIUS*RIGHT, RIGHT)
self.play(right_half_block.restore) self.play(right_half_block.restore)
self.wait() self.wait()
@ -1333,7 +1333,7 @@ class DotsHoppingToColor(InputOutputScene):
Write(pink_points_label) Write(pink_points_label)
) )
self.wait() self.wait()
self.play(right_half_block.next_to, SPACE_X_RADIUS*RIGHT, RIGHT) self.play(right_half_block.next_to, FRAME_X_RADIUS*RIGHT, RIGHT)
inspector_image_update_anim.update(0) inspector_image_update_anim.update(0)
self.play(ReplacementTransform( self.play(ReplacementTransform(
inspector.copy(), inspector_image, inspector.copy(), inspector_image,
@ -1827,7 +1827,7 @@ class ForeverNarrowingLoop(InputOutputScene):
plane.white_parts.highlight(BLACK) plane.white_parts.highlight(BLACK)
plane.lines_to_fade.set_stroke(width = 0) plane.lines_to_fade.set_stroke(width = 0)
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS) v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
v_line.set_stroke(WHITE, 5) v_line.set_stroke(WHITE, 5)
self.add(colorings, v_line, planes) self.add(colorings, v_line, planes)
@ -2095,7 +2095,7 @@ class PathContainingZero(InputOutputScene, PiCreatureScene):
# plane.white_parts.highlight(BLACK) # plane.white_parts.highlight(BLACK)
plane.lines_to_fade.set_stroke(width = 0) plane.lines_to_fade.set_stroke(width = 0)
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS) v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
v_line.set_stroke(WHITE, 5) v_line.set_stroke(WHITE, 5)
self.add(colorings, planes) self.add(colorings, planes)
@ -2931,7 +2931,7 @@ class AllOfTheVideos(Scene):
rect.set_stroke(WHITE, 1) rect.set_stroke(WHITE, 1)
image.add(rect) image.add(rect)
images.arrange_submobjects_in_grid(n, n, buff = 0) images.arrange_submobjects_in_grid(n, n, buff = 0)
images.scale_to_fit_height(2*SPACE_Y_RADIUS) images.scale_to_fit_height(FRAME_HEIGHT)
random.shuffle(images.submobjects) random.shuffle(images.submobjects)
self.play(LaggedStart(FadeIn, images, run_time = 4)) self.play(LaggedStart(FadeIn, images, run_time = 4))
@ -2995,7 +2995,7 @@ class TickingClock(Scene):
} }
def construct(self): def construct(self):
clock = Clock() clock = Clock()
clock.scale_to_fit_height(2*SPACE_Y_RADIUS - 1) clock.scale_to_fit_height(FRAME_HEIGHT - 1)
clock.to_edge(LEFT) clock.to_edge(LEFT)
lines = [clock.hour_hand, clock.minute_hand] lines = [clock.hour_hand, clock.minute_hand]
def update_line(line): def update_line(line):

View file

@ -2078,7 +2078,7 @@ class IPTScene1(PiCreatureScene):
# use the following for the zoomed inset # use the following for the zoomed inset
if show_detail: if show_detail:
self.camera.space_shape = (0.02 * SPACE_Y_RADIUS, 0.02 * SPACE_X_RADIUS) self.camera.space_shape = (0.02 * FRAME_Y_RADIUS, 0.02 * FRAME_X_RADIUS)
self.camera.space_center = C self.camera.space_center = C
SCREEN_SCALE = 0.01 SCREEN_SCALE = 0.01
SCREEN_THICKNESS = 0.02 SCREEN_THICKNESS = 0.02
@ -3873,8 +3873,8 @@ class PondScene(ThreeDScene):
covering_rectangle = Rectangle( covering_rectangle = Rectangle(
width = SPACE_X_RADIUS * scale, width = FRAME_X_RADIUS * scale,
height = 2 * SPACE_Y_RADIUS * scale, height = 2 * FRAME_Y_RADIUS * scale,
stroke_width = 0, stroke_width = 0,
fill_color = BLACK, fill_color = BLACK,
fill_opacity = 1, fill_opacity = 1,

View file

@ -504,8 +504,8 @@ class IntroScene(PiCreatureScene):
euler_words.next_to(euler, DOWN) euler_words.next_to(euler, DOWN)
euler.add(euler_words) euler.add(euler_words)
pietro.next_to(SPACE_X_RADIUS*LEFT, LEFT) pietro.next_to(FRAME_X_RADIUS*LEFT, LEFT)
euler.next_to(SPACE_X_RADIUS*RIGHT, RIGHT) euler.next_to(FRAME_X_RADIUS*RIGHT, RIGHT)
pi_answer = self.pi_answer = TexMobject("{\\pi^2 \\over 6}") pi_answer = self.pi_answer = TexMobject("{\\pi^2 \\over 6}")
pi_answer.highlight(YELLOW) pi_answer.highlight(YELLOW)
@ -519,7 +519,7 @@ class IntroScene(PiCreatureScene):
pi = pi_answer[0] pi = pi_answer[0]
pi_rect = SurroundingRectangle(pi, color = RED) pi_rect = SurroundingRectangle(pi, color = RED)
pi_rect.save_state() pi_rect.save_state()
pi_rect.scale_to_fit_height(SPACE_Y_RADIUS) pi_rect.scale_to_fit_height(FRAME_Y_RADIUS)
pi_rect.center() pi_rect.center()
pi_rect.set_stroke(width = 0) pi_rect.set_stroke(width = 0)
squared = pi_answer[1] squared = pi_answer[1]
@ -534,7 +534,7 @@ class IntroScene(PiCreatureScene):
self.number_line_group.save_state() self.number_line_group.save_state()
self.play( self.play(
pietro.next_to, ORIGIN, LEFT, LARGE_BUFF, pietro.next_to, ORIGIN, LEFT, LARGE_BUFF,
self.number_line_group.next_to, SPACE_Y_RADIUS*DOWN, DOWN, self.number_line_group.next_to, FRAME_Y_RADIUS*DOWN, DOWN,
morty.change, "pondering", morty.change, "pondering",
) )
self.wait(2) self.wait(2)
@ -762,7 +762,7 @@ class MathematicalWebOfConnections(PiCreatureScene):
semi_circle.highlight(YELLOW) semi_circle.highlight(YELLOW)
VGroup(radius, semi_circle).move_to( VGroup(radius, semi_circle).move_to(
SPACE_X_RADIUS*LEFT/2 + SPACE_Y_RADIUS*UP/2, FRAME_X_RADIUS*LEFT/2 + FRAME_Y_RADIUS*UP/2,
) )
decimal = DecimalNumber(0) decimal = DecimalNumber(0)
@ -795,7 +795,7 @@ class MathematicalWebOfConnections(PiCreatureScene):
) )
to_shift_down.generate_target() to_shift_down.generate_target()
for part in to_shift_down.target: for part in to_shift_down.target:
part.move_to(2*SPACE_Y_RADIUS*DOWN) part.move_to(FRAME_HEIGHT*DOWN)
basel_sum = self.formulas[0] basel_sum = self.formulas[0]
@ -917,8 +917,8 @@ class MathematicalWebOfConnections(PiCreatureScene):
def create_pi_creatures(self): def create_pi_creatures(self):
jerk = PiCreature(color = GREEN_D) jerk = PiCreature(color = GREEN_D)
randy = Randolph().flip() randy = Randolph().flip()
jerk.move_to(0.5*SPACE_X_RADIUS*LEFT).to_edge(DOWN) jerk.move_to(0.5*FRAME_X_RADIUS*LEFT).to_edge(DOWN)
randy.move_to(0.5*SPACE_X_RADIUS*RIGHT).to_edge(DOWN) randy.move_to(0.5*FRAME_X_RADIUS*RIGHT).to_edge(DOWN)
return VGroup(jerk, randy) return VGroup(jerk, randy)
@ -1431,7 +1431,7 @@ class EarthScene(IntroduceScreen):
CONFIG = { CONFIG = {
"screen_height" : 0.5, "screen_height" : 0.5,
"screen_thickness" : 0, "screen_thickness" : 0,
"radius" : 100 + SPACE_X_RADIUS, "radius" : 100 + FRAME_X_RADIUS,
"source_point" : 100*LEFT, "source_point" : 100*LEFT,
"min_ray_angle" : -1.65*DEGREES, "min_ray_angle" : -1.65*DEGREES,
"max_ray_angle" : 1.65*DEGREES, "max_ray_angle" : 1.65*DEGREES,
@ -1446,7 +1446,7 @@ class EarthScene(IntroduceScreen):
earth.replace(earth_circle) earth.replace(earth_circle)
black_rect = Rectangle( black_rect = Rectangle(
height = 2*SPACE_Y_RADIUS, height = FRAME_HEIGHT,
width = earth_radius + LARGE_BUFF, width = earth_radius + LARGE_BUFF,
stroke_width = 0, stroke_width = 0,
fill_color = BLACK, fill_color = BLACK,
@ -1906,7 +1906,7 @@ class OtherInstanceOfInverseSquareLaw(Scene):
def construct(self): def construct(self):
title = TextMobject("Where the inverse square law shows up") title = TextMobject("Where the inverse square law shows up")
title.to_edge(UP) title.to_edge(UP)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
h_line.next_to(title, DOWN) h_line.next_to(title, DOWN)
self.add(title, h_line) self.add(title, h_line)
@ -1938,7 +1938,7 @@ class OtherInstanceOfInverseSquareLaw(Scene):
class ScreensIntroWrapper(TeacherStudentsScene): class ScreensIntroWrapper(TeacherStudentsScene):
def construct(self): def construct(self):
point = VectorizedPoint(SPACE_X_RADIUS*LEFT/2 + SPACE_Y_RADIUS*UP/2) point = VectorizedPoint(FRAME_X_RADIUS*LEFT/2 + FRAME_Y_RADIUS*UP/2)
self.play(self.teacher.change, "raise_right_hand") self.play(self.teacher.change, "raise_right_hand")
self.change_student_modes( self.change_student_modes(
"pondering", "erm", "confused", "pondering", "erm", "confused",
@ -2359,12 +2359,12 @@ class MathologerVideoWrapper(Scene):
logo = ImageMobject("mathologer_logo") logo = ImageMobject("mathologer_logo")
logo.scale_to_fit_height(1) logo.scale_to_fit_height(1)
logo.to_corner(UP+LEFT) logo.to_corner(UP+LEFT)
logo.shift(2*SPACE_X_RADIUS*RIGHT) logo.shift(FRAME_WIDTH*RIGHT)
screen = ScreenRectangle(height = 5.5) screen = ScreenRectangle(height = 5.5)
screen.next_to(title, DOWN) screen.next_to(title, DOWN)
self.play( self.play(
logo.shift, 2*SPACE_X_RADIUS*LEFT, logo.shift, FRAME_WIDTH*LEFT,
LaggedStart(FadeIn, title), LaggedStart(FadeIn, title),
run_time = 2 run_time = 2
) )
@ -2458,7 +2458,7 @@ class SimpleIPTProof(Scene):
class WeCanHaveMoreFunThanThat(TeacherStudentsScene): class WeCanHaveMoreFunThanThat(TeacherStudentsScene):
def construct(self): def construct(self):
point = VectorizedPoint(SPACE_X_RADIUS*LEFT/2 + SPACE_Y_RADIUS*UP/2) point = VectorizedPoint(FRAME_X_RADIUS*LEFT/2 + FRAME_Y_RADIUS*UP/2)
self.teacher_says( self.teacher_says(
"We can have \\\\ more fun than that!", "We can have \\\\ more fun than that!",
target_mode = "hooray" target_mode = "hooray"
@ -3729,8 +3729,8 @@ class PondScene(ThreeDScene):
self.wait() self.wait()
covering_rectangle = Rectangle( covering_rectangle = Rectangle(
width = SPACE_X_RADIUS * scale, width = FRAME_X_RADIUS * scale,
height = 2 * SPACE_Y_RADIUS * scale, height = 2 * FRAME_Y_RADIUS * scale,
stroke_width = 0, stroke_width = 0,
fill_color = BLACK, fill_color = BLACK,
fill_opacity = 1, fill_opacity = 1,
@ -3786,14 +3786,14 @@ class CenterOfLargerCircleOverlayText(Scene):
arrow = Vector(DOWN+LEFT, color = WHITE) arrow = Vector(DOWN+LEFT, color = WHITE)
arrow.shift(words.get_bottom() + SMALL_BUFF*DOWN - arrow.get_start()) arrow.shift(words.get_bottom() + SMALL_BUFF*DOWN - arrow.get_start())
group = VGroup(words, arrow) group = VGroup(words, arrow)
group.scale_to_fit_height(2*SPACE_Y_RADIUS - 1) group.scale_to_fit_height(FRAME_HEIGHT - 1)
group.to_edge(UP) group.to_edge(UP)
self.add(group) self.add(group)
class DiameterWordOverlay(Scene): class DiameterWordOverlay(Scene):
def construct(self): def construct(self):
word = TextMobject("Diameter") word = TextMobject("Diameter")
word.scale_to_fit_width(SPACE_X_RADIUS) word.scale_to_fit_width(FRAME_X_RADIUS)
word.rotate(-45*DEGREES) word.rotate(-45*DEGREES)
self.play(Write(word)) self.play(Write(word))
self.wait() self.wait()

View file

@ -44,7 +44,7 @@ class PhotonPassesCompletelyOrNotAtAll(DirectionOfPolarizationScene):
"EMWave_config" : { "EMWave_config" : {
"wave_number" : 0, "wave_number" : 0,
"A_vect" : [0, 1, 1], "A_vect" : [0, 1, 1],
"start_point" : SPACE_X_RADIUS*LEFT + DOWN + 1.5*OUT, "start_point" : FRAME_X_RADIUS*LEFT + DOWN + 1.5*OUT,
}, },
"start_theta" : -0.9*np.pi, "start_theta" : -0.9*np.pi,
"target_theta" : -0.6*np.pi, "target_theta" : -0.6*np.pi,
@ -168,7 +168,7 @@ class PhotonsThroughPerpendicularFilters(PhotonPassesCompletelyOrNotAtAll):
"target_theta" : -0.6*np.pi, "target_theta" : -0.6*np.pi,
"EMWave_config" : { "EMWave_config" : {
"A_vect" : [0, 0, 1], "A_vect" : [0, 0, 1],
"start_point" : SPACE_X_RADIUS*LEFT + DOWN + OUT, "start_point" : FRAME_X_RADIUS*LEFT + DOWN + OUT,
}, },
"apply_filter" : False, "apply_filter" : False,
} }
@ -216,7 +216,7 @@ class PhotonsThroughPerpendicularFilters(PhotonPassesCompletelyOrNotAtAll):
self.continual_update() self.continual_update()
return [ return [
WavePacket( WavePacket(
filter_distance = SPACE_X_RADIUS + x, filter_distance = FRAME_X_RADIUS + x,
get_filtered = True, get_filtered = True,
em_wave = self.em_wave.copy(), em_wave = self.em_wave.copy(),
run_time = 1, run_time = 1,
@ -569,9 +569,9 @@ class AngleToProbabilityChart(Scene):
) )
right_title.next_to(left_title, RIGHT, LARGE_BUFF) right_title.next_to(left_title, RIGHT, LARGE_BUFF)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
h_line.to_edge(UP, buff = 2) h_line.to_edge(UP, buff = 2)
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS) v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
v_line.next_to(left_title, RIGHT, MED_LARGE_BUFF) v_line.next_to(left_title, RIGHT, MED_LARGE_BUFF)
v_line.to_edge(UP, buff = 0) v_line.to_edge(UP, buff = 0)
VGroup(h_line, v_line).highlight(BLUE) VGroup(h_line, v_line).highlight(BLUE)
@ -690,7 +690,7 @@ class ShowVariousFilterPairsWithPhotonsOverTime(PhotonsThroughPerpendicularFilte
lambda x : x, 0.5, 1 lambda x : x, 0.5, 1
) )
added_anims = [] added_anims = []
if photon.filter_distance == SPACE_X_RADIUS + 2: if photon.filter_distance == FRAME_X_RADIUS + 2:
absorption = self.get_filter_absorption_animation( absorption = self.get_filter_absorption_animation(
self.second_filter, photon self.second_filter, photon
) )
@ -929,7 +929,7 @@ class ForgetPreviousActions(ShowVariousFilterPairs):
"start_theta" : -0.6*np.pi, "start_theta" : -0.6*np.pi,
"EMWave_config" : { "EMWave_config" : {
"wave_number" : 0, "wave_number" : 0,
"start_point" : SPACE_X_RADIUS*LEFT + DOWN, "start_point" : FRAME_X_RADIUS*LEFT + DOWN,
}, },
"apply_filter" : False, "apply_filter" : False,
} }
@ -1012,7 +1012,7 @@ class ForgetPreviousActions(ShowVariousFilterPairs):
def shoot_photon(self): def shoot_photon(self):
photon = random.choice(self.photons) photon = random.choice(self.photons)
added_anims = [] added_anims = []
if photon.filter_distance == SPACE_X_RADIUS + 2: if photon.filter_distance == FRAME_X_RADIUS + 2:
added_anims.append( added_anims.append(
ApplyMethod( ApplyMethod(
self.second_filter.highlight, RED, self.second_filter.highlight, RED,
@ -1565,7 +1565,7 @@ class VennDiagramProofByContradiction(Scene):
A.generate_target() A.generate_target()
A.target.scale(4) A.target.scale(4)
A.target.shift( A.target.shift(
(SPACE_Y_RADIUS-MED_LARGE_BUFF)*UP - \ (FRAME_Y_RADIUS-MED_LARGE_BUFF)*UP - \
A.target.get_top() A.target.get_top()
) )
A.label.generate_target() A.label.generate_target()
@ -1771,7 +1771,7 @@ class VennDiagramProofByContradiction(Scene):
ApplyMethod( ApplyMethod(
m.scale, 0.7, m.scale, 0.7,
method_kwargs = { method_kwargs = {
"about_point" : SPACE_Y_RADIUS*DOWN "about_point" : FRAME_Y_RADIUS*DOWN
} }
) )
for m in everything for m in everything

View file

@ -52,7 +52,7 @@ class Jewel(VMobject):
class Necklace(VMobject): class Necklace(VMobject):
CONFIG = { CONFIG = {
"width" : 2*SPACE_X_RADIUS - 1, "width" : FRAME_WIDTH - 1,
"jewel_buff" : MED_SMALL_BUFF, "jewel_buff" : MED_SMALL_BUFF,
"chain_color" : GREY, "chain_color" : GREY,
"default_colors" : [(4, BLUE), (6, WHITE), (4, GREEN)] "default_colors" : [(4, BLUE), (6, WHITE), (4, GREEN)]
@ -95,7 +95,7 @@ class Necklace(VMobject):
class FromPreviousTopologyVideo(Scene): class FromPreviousTopologyVideo(Scene):
def construct(self): def construct(self):
rect = Rectangle(height = 9, width = 16) rect = Rectangle(height = 9, width = 16)
rect.scale_to_fit_height(2*SPACE_Y_RADIUS-2) rect.scale_to_fit_height(FRAME_HEIGHT-2)
title = TextMobject("From original ``Who cares about topology'' video") title = TextMobject("From original ``Who cares about topology'' video")
title.to_edge(UP) title.to_edge(UP)
rect.next_to(title, DOWN) rect.next_to(title, DOWN)
@ -604,7 +604,7 @@ class WriteWords(Scene):
def construct(self): def construct(self):
words = TextMobject(self.words) words = TextMobject(self.words)
words.highlight(self.color) words.highlight(self.color)
words.scale_to_fit_width(2*SPACE_X_RADIUS-1) words.scale_to_fit_width(FRAME_WIDTH-1)
words.to_edge(DOWN) words.to_edge(DOWN)
self.play(Write(words)) self.play(Write(words))
self.wait(2) self.wait(2)
@ -800,7 +800,7 @@ class WalkEquatorPostTransform(GraphScene):
equator, dots, equator, dots,
rate_func = lambda t : 2*proportion*smooth(t) rate_func = lambda t : 2*proportion*smooth(t)
)) ))
v_line = DashedLine(SPACE_Y_RADIUS*UP, SPACE_Y_RADIUS*DOWN) v_line = DashedLine(FRAME_Y_RADIUS*UP, FRAME_Y_RADIUS*DOWN)
v_line.shift(dots.get_center()[0]*RIGHT) v_line.shift(dots.get_center()[0]*RIGHT)
self.play(ShowCreation(v_line)) self.play(ShowCreation(v_line))
self.wait() self.wait()
@ -834,7 +834,7 @@ class WalkEquatorPostTransform(GraphScene):
tilted_eq, dots, tilted_eq, dots,
rate_func = lambda t : 2*proportion*smooth(t) rate_func = lambda t : 2*proportion*smooth(t)
)) ))
v_line = DashedLine(SPACE_Y_RADIUS*UP, SPACE_Y_RADIUS*DOWN) v_line = DashedLine(FRAME_Y_RADIUS*UP, FRAME_Y_RADIUS*DOWN)
v_line.shift(dots.get_center()[0]*RIGHT) v_line.shift(dots.get_center()[0]*RIGHT)
self.play(ShowCreation(v_line)) self.play(ShowCreation(v_line))
self.wait() self.wait()
@ -996,7 +996,7 @@ class AntipodalWalkAroundTransverseLoop(ExternallyAnimatedScene):
class MentionGenerality(TeacherStudentsScene, ThreeDScene): class MentionGenerality(TeacherStudentsScene, ThreeDScene):
def construct(self): def construct(self):
necklace = Necklace(width = SPACE_X_RADIUS) necklace = Necklace(width = FRAME_X_RADIUS)
necklace.shift(2*UP) necklace.shift(2*UP)
necklace.to_edge(RIGHT) necklace.to_edge(RIGHT)
arrow = TexMobject("\\Leftrightarrow") arrow = TexMobject("\\Leftrightarrow")
@ -1277,7 +1277,7 @@ class MakeTwoJewelCaseContinuous(IntroduceStolenNecklaceProblem):
"forced_binary_choices" : (0, 1, 0), "forced_binary_choices" : (0, 1, 0),
"show_matching_after_divvying" : True, "show_matching_after_divvying" : True,
"necklace_center" : ORIGIN, "necklace_center" : ORIGIN,
"necklace_width" : 2*SPACE_X_RADIUS - 3, "necklace_width" : FRAME_WIDTH - 3,
"random_seed" : 0, "random_seed" : 0,
"num_continuous_division_searches" : 4, "num_continuous_division_searches" : 4,
} }
@ -1510,7 +1510,7 @@ class MakeTwoJewelCaseContinuous(IntroduceStolenNecklaceProblem):
boxes = VGroup() boxes = VGroup()
for group in top_group, bottom_group: for group in top_group, bottom_group:
box = Rectangle( box = Rectangle(
width = 2*SPACE_X_RADIUS-2, width = FRAME_WIDTH-2,
height = group.get_height()+SMALL_BUFF, height = group.get_height()+SMALL_BUFF,
stroke_width = 0, stroke_width = 0,
fill_color = WHITE, fill_color = WHITE,
@ -1666,7 +1666,7 @@ class ThinkAboutTheChoices(TeacherStudentsScene):
""") """)
self.change_student_modes( self.change_student_modes(
*["pondering"]*3, *["pondering"]*3,
look_at_arg = SPACE_X_RADIUS*RIGHT+SPACE_Y_RADIUS*DOWN look_at_arg = FRAME_X_RADIUS*RIGHT+FRAME_Y_RADIUS*DOWN
) )
self.wait(3) self.wait(3)
@ -1908,7 +1908,7 @@ class CompareThisToSphereChoice(TeacherStudentsScene):
""") """)
self.change_student_modes( self.change_student_modes(
*["pondering"]*3, *["pondering"]*3,
look_at_arg = SPACE_X_RADIUS*RIGHT+SPACE_Y_RADIUS*DOWN look_at_arg = FRAME_X_RADIUS*RIGHT+FRAME_Y_RADIUS*DOWN
) )
self.wait(3) self.wait(3)
@ -1981,7 +1981,7 @@ class ChoicesForSpherePoint(GeneralizeBorsukUlam):
buff = LARGE_BUFF, buff = LARGE_BUFF,
aligned_edge = LEFT aligned_edge = LEFT
) )
choices.scale_to_fit_height(SPACE_Y_RADIUS) choices.scale_to_fit_height(FRAME_Y_RADIUS)
choices.to_edge(LEFT) choices.to_edge(LEFT)
choices.shift(DOWN) choices.shift(DOWN)
@ -2318,7 +2318,7 @@ class ShowFunctionDiagram(TotalLengthOfEachJewelEquals, ReconfigurableScene):
def add_necklace(self): def add_necklace(self):
random.seed(self.random_seed) random.seed(self.random_seed)
ChoicesInNecklaceCutting.add_necklace(self) ChoicesInNecklaceCutting.add_necklace(self)
self.necklace.scale_to_fit_width(SPACE_X_RADIUS-1) self.necklace.scale_to_fit_width(FRAME_X_RADIUS-1)
self.necklace.to_edge(UP, buff = LARGE_BUFF) self.necklace.to_edge(UP, buff = LARGE_BUFF)
self.necklace.to_edge(LEFT, buff = SMALL_BUFF) self.necklace.to_edge(LEFT, buff = SMALL_BUFF)
self.add(self.necklace) self.add(self.necklace)
@ -2337,7 +2337,7 @@ class ShowFunctionDiagram(TotalLengthOfEachJewelEquals, ReconfigurableScene):
VGroup(*plane_class.get_top_level_mobjects()) VGroup(*plane_class.get_top_level_mobjects())
for plane_class in plane_classes for plane_class in plane_classes
]) ])
planes.scale_to_fit_width(SPACE_X_RADIUS) planes.scale_to_fit_width(FRAME_X_RADIUS)
planes.to_edge(RIGHT) planes.to_edge(RIGHT)
self.example_coords = plane_classes[0].example_coords[0] self.example_coords = plane_classes[0].example_coords[0]
@ -2433,7 +2433,7 @@ class JewelPairPlane(GraphScene):
class WhatThisMappingActuallyLooksLikeWords(Scene): class WhatThisMappingActuallyLooksLikeWords(Scene):
def construct(self): def construct(self):
words = TextMobject("What this mapping actually looks like") words = TextMobject("What this mapping actually looks like")
words.scale_to_fit_width(2*SPACE_X_RADIUS-1) words.scale_to_fit_width(FRAME_WIDTH-1)
words.to_edge(DOWN) words.to_edge(DOWN)
self.play(Write(words)) self.play(Write(words))

View file

@ -376,14 +376,14 @@ class TransitionAwayFromSlide(PathSlidingScene):
arrow.copy().shift(vect) arrow.copy().shift(vect)
for vect in 3*LEFT, ORIGIN, 3*RIGHT for vect in 3*LEFT, ORIGIN, 3*RIGHT
]) ])
arrows.shift(2*SPACE_X_RADIUS*RIGHT) arrows.shift(FRAME_WIDTH*RIGHT)
self.add(arrows) self.add(arrows)
self.add(self.cycloid) self.add(self.cycloid)
self.slide(randy, self.cycloid) self.slide(randy, self.cycloid)
everything = Mobject(*self.mobjects) everything = Mobject(*self.mobjects)
self.play(ApplyMethod( self.play(ApplyMethod(
everything.shift, 4*SPACE_X_RADIUS*LEFT, everything.shift, 4*FRAME_X_RADIUS*LEFT,
run_time = 2, run_time = 2,
rate_func = rush_into rate_func = rush_into
)) ))

View file

@ -77,7 +77,7 @@ class CycloidScene(Scene):
self.circle.add(radial_line) self.circle.add(radial_line)
def generate_ceiling(self): def generate_ceiling(self):
self.ceiling = Line(SPACE_X_RADIUS*LEFT, SPACE_X_RADIUS*RIGHT) self.ceiling = Line(FRAME_X_RADIUS*LEFT, FRAME_X_RADIUS*RIGHT)
self.ceiling.shift(self.cycloid.get_top()[1]*UP) self.ceiling.shift(self.cycloid.get_top()[1]*UP)
def draw_cycloid(self, run_time = 3, *anims, **kwargs): def draw_cycloid(self, run_time = 3, *anims, **kwargs):
@ -551,7 +551,7 @@ class SlidingObject(CycloidScene, PathSlidingScene):
words1.next_to(arrow, LEFT) words1.next_to(arrow, LEFT)
words2.next_to(arrow, RIGHT) words2.next_to(arrow, RIGHT)
words = Mobject(words1, arrow, words2) words = Mobject(words1, arrow, words2)
words.scale_to_fit_width(2*SPACE_X_RADIUS-1) words.scale_to_fit_width(FRAME_WIDTH-1)
words.to_edge(UP, buff = 0.2) words.to_edge(UP, buff = 0.2)
words.to_edge(LEFT) words.to_edge(LEFT)

View file

@ -74,7 +74,7 @@ class MultilayeredGlass(PhotonScene, ZoomedScene):
def get_continuous_background(self): def get_continuous_background(self):
glass = FilledRectangle( glass = FilledRectangle(
height = self.top-self.bottom, height = self.top-self.bottom,
width = 2*SPACE_X_RADIUS, width = FRAME_WIDTH,
) )
glass.sort_points(lambda p : -p[1]) glass.sort_points(lambda p : -p[1])
glass.shift((self.top-glass.get_top()[1])*UP) glass.shift((self.top-glass.get_top()[1])*UP)
@ -132,7 +132,7 @@ class MultilayeredGlass(PhotonScene, ZoomedScene):
angle_of_vector(start_point-end_point)-np.pi/2 angle_of_vector(start_point-end_point)-np.pi/2
) )
self.discrete_path.add_line( self.discrete_path.add_line(
points[end], SPACE_X_RADIUS*RIGHT+(self.layer_tops[-1]-1)*UP points[end], FRAME_X_RADIUS*RIGHT+(self.layer_tops[-1]-1)*UP
) )
def show_layer_variables(self): def show_layer_variables(self):
@ -154,8 +154,8 @@ class MultilayeredGlass(PhotonScene, ZoomedScene):
eq_mob.shift(midpoint) eq_mob.shift(midpoint)
v_eq = eq_mob.split() v_eq = eq_mob.split()
center_paths.append(Line( center_paths.append(Line(
midpoint+SPACE_X_RADIUS*LEFT, midpoint+FRAME_X_RADIUS*LEFT,
midpoint+SPACE_X_RADIUS*RIGHT midpoint+FRAME_X_RADIUS*RIGHT
)) ))
brace_endpoints = Mobject( brace_endpoints = Mobject(
Point(self.top*UP+x*RIGHT), Point(self.top*UP+x*RIGHT),

View file

@ -133,7 +133,7 @@ class PhotonThroughLens(MultipathPhotonScene):
focal_point = 2*RIGHT focal_point = 2*RIGHT
return [ return [
Mobject( Mobject(
Line(SPACE_X_RADIUS*LEFT + fc[1]*UP, fc), Line(FRAME_X_RADIUS*LEFT + fc[1]*UP, fc),
Line(fc, sc), Line(fc, sc),
Line(sc, focal_point), Line(sc, focal_point),
Line(focal_point, 6*focal_point-5*sc) Line(focal_point, 6*focal_point-5*sc)
@ -153,7 +153,7 @@ class TransitionToOptics(PhotonThroughLens):
if not self.has_started: if not self.has_started:
self.has_started = True self.has_started = True
everything = Mobject(*self.mobjects) everything = Mobject(*self.mobjects)
vect = 2*SPACE_X_RADIUS*RIGHT vect = FRAME_WIDTH*RIGHT
everything.shift(vect) everything.shift(vect)
self.play(ApplyMethod( self.play(ApplyMethod(
everything.shift, -vect, everything.shift, -vect,
@ -164,7 +164,7 @@ class TransitionToOptics(PhotonThroughLens):
class PhotonOffMirror(MultipathPhotonScene): class PhotonOffMirror(MultipathPhotonScene):
def construct(self): def construct(self):
self.mirror = Line(*SPACE_Y_RADIUS*np.array([DOWN, UP])) self.mirror = Line(*FRAME_Y_RADIUS*np.array([DOWN, UP]))
self.mirror.highlight(GREY) self.mirror.highlight(GREY)
self.add(self.mirror) self.add(self.mirror)
self.run_along_paths() self.run_along_paths()
@ -201,11 +201,11 @@ class PhotonsInWater(MultipathPhotonScene):
start_point = x*RIGHT + y*UP start_point = x*RIGHT + y*UP
angles = np.arange(np.pi/18, np.pi/3, np.pi/18) angles = np.arange(np.pi/18, np.pi/3, np.pi/18)
midpoints = y*np.arctan(angles) midpoints = y*np.arctan(angles)
end_points = midpoints + SPACE_Y_RADIUS*np.arctan(2*angles) end_points = midpoints + FRAME_Y_RADIUS*np.arctan(2*angles)
return [ return [
Mobject( Mobject(
Line(start_point, [midpoint, 0, 0]), Line(start_point, [midpoint, 0, 0]),
Line([midpoint, 0, 0], [end_point, -SPACE_Y_RADIUS, 0]) Line([midpoint, 0, 0], [end_point, -FRAME_Y_RADIUS, 0])
).ingest_submobjects() ).ingest_submobjects()
for midpoint, end_point in zip(midpoints, end_points) for midpoint, end_point in zip(midpoints, end_points)
] ]
@ -282,7 +282,7 @@ class ShowMultiplePathsThroughLens(ShowMultiplePathsScene):
class ShowMultiplePathsOffMirror(ShowMultiplePathsScene): class ShowMultiplePathsOffMirror(ShowMultiplePathsScene):
def construct(self): def construct(self):
mirror = Line(*SPACE_Y_RADIUS*np.array([DOWN, UP])) mirror = Line(*FRAME_Y_RADIUS*np.array([DOWN, UP]))
mirror.highlight(GREY) mirror.highlight(GREY)
self.add(mirror) self.add(mirror)
ShowMultiplePathsScene.construct(self) ShowMultiplePathsScene.construct(self)
@ -399,9 +399,9 @@ class PhtonBendsInWater(PhotonScene, ZoomedScene):
kwargs = { kwargs = {
"density" : self.zoom_factor*DEFAULT_POINT_DENSITY_1D "density" : self.zoom_factor*DEFAULT_POINT_DENSITY_1D
} }
top_line = Line(SPACE_Y_RADIUS*UP+2*LEFT, ORIGIN, **kwargs) top_line = Line(FRAME_Y_RADIUS*UP+2*LEFT, ORIGIN, **kwargs)
extension = Line(ORIGIN, SPACE_Y_RADIUS*DOWN+2*RIGHT, **kwargs) extension = Line(ORIGIN, FRAME_Y_RADIUS*DOWN+2*RIGHT, **kwargs)
bottom_line = Line(ORIGIN, SPACE_Y_RADIUS*DOWN+RIGHT, **kwargs) bottom_line = Line(ORIGIN, FRAME_Y_RADIUS*DOWN+RIGHT, **kwargs)
path1 = Mobject(top_line, extension) path1 = Mobject(top_line, extension)
path2 = Mobject(top_line, bottom_line) path2 = Mobject(top_line, bottom_line)
for mob in path1, path2: for mob in path1, path2:
@ -437,7 +437,7 @@ class LightIsFasterInAirThanWater(ShowMultiplePathsInWater):
glass = Region(lambda x, y : y < 0, color = BLUE_E) glass = Region(lambda x, y : y < 0, color = BLUE_E)
equation = TexMobject("v_{\\text{air}} > v_{\\text{water}}") equation = TexMobject("v_{\\text{air}} > v_{\\text{water}}")
equation.to_edge(UP) equation.to_edge(UP)
path = Line(SPACE_X_RADIUS*LEFT, SPACE_X_RADIUS*RIGHT) path = Line(FRAME_X_RADIUS*LEFT, FRAME_X_RADIUS*RIGHT)
path1 = path.copy().shift(2*UP) path1 = path.copy().shift(2*UP)
path2 = path.copy().shift(2*DOWN) path2 = path.copy().shift(2*DOWN)

View file

@ -88,7 +88,7 @@ class TimeLine(Scene):
timeline = NumberLine( timeline = NumberLine(
numerical_radius = 300, numerical_radius = 300,
number_at_center = 1800, number_at_center = 1800,
unit_length_to_spatial_width = SPACE_X_RADIUS/100, unit_length_to_spatial_width = FRAME_X_RADIUS/100,
tick_frequency = 10, tick_frequency = 10,
numbers_with_elongated_ticks = centuries numbers_with_elongated_ticks = centuries
) )

View file

@ -38,7 +38,7 @@ class MultilayeredScene(Scene):
def get_layers(self, n_layers = None): def get_layers(self, n_layers = None):
if n_layers is None: if n_layers is None:
n_layers = self.n_layers n_layers = self.n_layers
width = 2*SPACE_X_RADIUS width = FRAME_WIDTH
height = float(self.total_glass_height)/n_layers height = float(self.total_glass_height)/n_layers
rgb_pair = [ rgb_pair = [
np.array(Color(color).get_rgb()) np.array(Color(color).get_rgb())
@ -75,7 +75,7 @@ class MultilayeredScene(Scene):
def get_continuous_glass(self): def get_continuous_glass(self):
result = self.RectClass( result = self.RectClass(
width = 2*SPACE_X_RADIUS, width = FRAME_WIDTH,
height = self.total_glass_height, height = self.total_glass_height,
) )
result.sort_points(lambda p : -p[1]) result.sort_points(lambda p : -p[1])
@ -107,10 +107,10 @@ class TwoToMany(MultilayeredScene):
def get_glass(self): def get_glass(self):
return self.RectClass( return self.RectClass(
height = SPACE_Y_RADIUS, height = FRAME_Y_RADIUS,
width = 2*SPACE_X_RADIUS, width = FRAME_WIDTH,
color = BLUE_E color = BLUE_E
).shift(SPACE_Y_RADIUS*DOWN/2) ).shift(FRAME_Y_RADIUS*DOWN/2)
class RaceLightInLayers(MultilayeredScene, PhotonScene): class RaceLightInLayers(MultilayeredScene, PhotonScene):
@ -119,7 +119,7 @@ class RaceLightInLayers(MultilayeredScene, PhotonScene):
} }
def construct(self): def construct(self):
self.add_layers() self.add_layers()
line = Line(SPACE_X_RADIUS*LEFT, SPACE_X_RADIUS*RIGHT) line = Line(FRAME_X_RADIUS*LEFT, FRAME_X_RADIUS*RIGHT)
lines = [ lines = [
line.copy().shift(layer.get_center()) line.copy().shift(layer.get_center())
for layer in self.layers for layer in self.layers
@ -180,7 +180,7 @@ class ShowDiscretePath(MultilayeredScene, PhotonScene):
angle_of_vector(start_point-end_point)-np.pi/2 angle_of_vector(start_point-end_point)-np.pi/2
) )
self.discrete_path.add_line( self.discrete_path.add_line(
points[end], SPACE_X_RADIUS*RIGHT+(tops[-1]-0.5)*UP points[end], FRAME_X_RADIUS*RIGHT+(tops[-1]-0.5)*UP
) )
class NLayers(MultilayeredScene): class NLayers(MultilayeredScene):
@ -229,7 +229,7 @@ class ShowLayerVariables(MultilayeredScene, PhotonScene):
eq_mob.shift(layer.get_center()+2*LEFT) eq_mob.shift(layer.get_center()+2*LEFT)
v_eq = eq_mob.split() v_eq = eq_mob.split()
v_eq[0].highlight(layer.get_color()) v_eq[0].highlight(layer.get_color())
path = Line(SPACE_X_RADIUS*LEFT, SPACE_X_RADIUS*RIGHT) path = Line(FRAME_X_RADIUS*LEFT, FRAME_X_RADIUS*RIGHT)
path.shift(layer.get_center()) path.shift(layer.get_center())
brace_endpoints = Mobject( brace_endpoints = Mobject(
Point(self.top), Point(self.top),

View file

@ -35,12 +35,12 @@ class SuccessiveComplexMultiplications(ComplexMultiplication):
def construct(self, *multipliers): def construct(self, *multipliers):
norm = abs(reduce(op.mul, multipliers, 1)) norm = abs(reduce(op.mul, multipliers, 1))
shrink_factor = SPACE_X_RADIUS/max(SPACE_X_RADIUS, norm) shrink_factor = FRAME_X_RADIUS/max(FRAME_X_RADIUS, norm)
plane_config = { plane_config = {
"density" : norm*DEFAULT_POINT_DENSITY_1D, "density" : norm*DEFAULT_POINT_DENSITY_1D,
"unit_to_spatial_width" : shrink_factor, "unit_to_spatial_width" : shrink_factor,
"x_radius" : shrink_factor*SPACE_X_RADIUS, "x_radius" : shrink_factor*FRAME_X_RADIUS,
"y_radius" : shrink_factor*SPACE_Y_RADIUS, "y_radius" : shrink_factor*FRAME_Y_RADIUS,
} }
ComplexMultiplication.construct(self, multipliers[0], **plane_config) ComplexMultiplication.construct(self, multipliers[0], **plane_config)
@ -115,7 +115,7 @@ class ConjugateDivisionExample(ComplexMultiplication):
] ]
def construct(self, num): def construct(self, num):
ComplexMultiplication.construct(self, np.conj(num), radius = 2.5*SPACE_X_RADIUS) ComplexMultiplication.construct(self, np.conj(num), radius = 2.5*FRAME_X_RADIUS)
self.draw_dot("1", 1, True) self.draw_dot("1", 1, True)
self.draw_dot("\\bar z", self.multiplier) self.draw_dot("\\bar z", self.multiplier)
self.apply_multiplication() self.apply_multiplication()
@ -140,7 +140,7 @@ class DrawSolutionsToZToTheNEqualsW(Scene):
norm = abs(w) norm = abs(w)
theta = np.log(w).imag theta = np.log(w).imag
radius = norm**(1./n) radius = norm**(1./n)
zoom_value = (SPACE_Y_RADIUS-0.5)/radius zoom_value = (FRAME_Y_RADIUS-0.5)/radius
plane_config["unit_to_spatial_width"] = zoom_value plane_config["unit_to_spatial_width"] = zoom_value
plane = ComplexPlane(**plane_config) plane = ComplexPlane(**plane_config)
circle = Circle( circle = Circle(
@ -181,7 +181,7 @@ class DrawComplexAngleAndMagnitude(Scene):
radius = max([abs(n.imag) for r, n in reps_and_nums]) + 1 radius = max([abs(n.imag) for r, n in reps_and_nums]) + 1
plane_config = { plane_config = {
"color" : "grey", "color" : "grey",
"unit_to_spatial_width" : SPACE_Y_RADIUS / radius, "unit_to_spatial_width" : FRAME_Y_RADIUS / radius,
} }
plane_config.update(DEFAULT_PLANE_CONFIG) plane_config.update(DEFAULT_PLANE_CONFIG)
self.plane = ComplexPlane(**plane_config) self.plane = ComplexPlane(**plane_config)

View file

@ -240,7 +240,7 @@ class DisectQuestion(TeacherStudentsScene):
"Proof of work, ", "Proof of work, ",
"Cryptographic hash functions, \\dots" "Cryptographic hash functions, \\dots"
) )
topics.scale_to_fit_width(2*SPACE_X_RADIUS - LARGE_BUFF) topics.scale_to_fit_width(FRAME_WIDTH - LARGE_BUFF)
topics.to_edge(UP) topics.to_edge(UP)
topics.highlight_by_tex("Digital", BLUE) topics.highlight_by_tex("Digital", BLUE)
topics.highlight_by_tex("Proof", GREEN) topics.highlight_by_tex("Proof", GREEN)
@ -282,7 +282,7 @@ class CryptocurrencyEquation(Scene):
"= Cryptocurrency" "= Cryptocurrency"
) )
VGroup(*parts[-1][1:]).highlight(YELLOW) VGroup(*parts[-1][1:]).highlight(YELLOW)
parts.scale_to_fit_width(2*SPACE_X_RADIUS - LARGE_BUFF) parts.scale_to_fit_width(FRAME_WIDTH - LARGE_BUFF)
for part in parts: for part in parts:
self.play(FadeIn(part)) self.play(FadeIn(part))
@ -398,7 +398,7 @@ class NoCommentOnSpeculation(TeacherStudentsScene):
self.play(ShowCreation(cross)) self.play(ShowCreation(cross))
group.add(cross) group.add(cross)
self.play( self.play(
group.shift, 2*SPACE_X_RADIUS*RIGHT, group.shift, FRAME_WIDTH*RIGHT,
self.teacher.change, "happy" self.teacher.change, "happy"
) )
self.wait() self.wait()
@ -418,7 +418,7 @@ class NoCommentOnSpeculation(TeacherStudentsScene):
self.wait() self.wait()
self.play( self.play(
VGroup(mining_graphic, mining_cross).shift, VGroup(mining_graphic, mining_cross).shift,
2*SPACE_X_RADIUS*RIGHT FRAME_WIDTH*RIGHT
) )
black_words = TextMobject("Random words\\\\Blah blah") black_words = TextMobject("Random words\\\\Blah blah")
black_words.highlight(BLACK) black_words.highlight(BLACK)
@ -1586,7 +1586,7 @@ class CharlieRacksUpDebt(SignedLedgerScene):
if pi is not self.charlie if pi is not self.charlie
]) ])
self.play( self.play(
self.charlie.shift, SPACE_X_RADIUS*RIGHT, self.charlie.shift, FRAME_X_RADIUS*RIGHT,
rate_func = running_start rate_func = running_start
) )
self.play(*[ self.play(*[
@ -2063,7 +2063,7 @@ class BigDifferenceBetweenLDAndCryptocurrencies(Scene):
words.scale(1.5) words.scale(1.5)
words.to_edge(UP) words.to_edge(UP)
for word, vect in zip(words, [RIGHT, LEFT]): for word, vect in zip(words, [RIGHT, LEFT]):
word.shift(SPACE_X_RADIUS*vect/2) word.shift(FRAME_X_RADIUS*vect/2)
self.add(logos) self.add(logos)
self.wait() self.wait()
@ -2077,7 +2077,7 @@ class BigDifferenceBetweenLDAndCryptocurrencies(Scene):
class DistributedLedgerScene(LedgerScene): class DistributedLedgerScene(LedgerScene):
def get_large_network(self): def get_large_network(self):
network = self.get_network() network = self.get_network()
network.scale_to_fit_height(2*SPACE_Y_RADIUS - LARGE_BUFF) network.scale_to_fit_height(FRAME_HEIGHT - LARGE_BUFF)
network.center() network.center()
for pi in self.pi_creatures: for pi in self.pi_creatures:
pi.label.scale(0.8, about_point = pi.get_bottom()) pi.label.scale(0.8, about_point = pi.get_bottom())
@ -2187,7 +2187,7 @@ class TransitionToDistributedLedger(DistributedLedgerScene):
for pi in self.pi_creatures for pi in self.pi_creatures
]) ])
self.play( self.play(
group.scale_to_fit_height, 2*SPACE_Y_RADIUS - 2, group.scale_to_fit_height, FRAME_HEIGHT - 2,
group.center group.center
) )
self.wait(2) self.wait(2)
@ -2288,7 +2288,7 @@ class BobDoubtsBroadcastTransaction(DistributedLedgerScene):
def bob_receives_transaction(self): def bob_receives_transaction(self):
bob, charlie = self.bob, self.charlie bob, charlie = self.bob, self.charlie
corner = SPACE_Y_RADIUS*UP + SPACE_X_RADIUS*LEFT corner = FRAME_Y_RADIUS*UP + FRAME_X_RADIUS*LEFT
payment = TextMobject( payment = TextMobject(
"Alice", "pays", "Bob", "10 LD" "Alice", "pays", "Bob", "10 LD"
@ -2344,7 +2344,7 @@ class YouListeningToBroadcasts(LedgerScene):
]) ])
self.remove(self.ledger) self.remove(self.ledger)
corners = [ corners = [
SPACE_X_RADIUS*RIGHT*u1 + SPACE_Y_RADIUS*UP*u2 FRAME_X_RADIUS*RIGHT*u1 + FRAME_Y_RADIUS*UP*u2
for u1, u2 in (-1, 1), (1, 1), (-1, -1) for u1, u2 in (-1, 1), (1, 1), (-1, -1)
] ]
you = self.you you = self.you
@ -3361,7 +3361,7 @@ class FromBankToDecentralizedSystem(DistributedBlockChainScene):
self.play(ShowCreation(cross)) self.play(ShowCreation(cross))
self.wait() self.wait()
self.play( self.play(
group.next_to, SPACE_X_RADIUS*RIGHT, RIGHT, group.next_to, FRAME_X_RADIUS*RIGHT, RIGHT,
rate_func = running_start, rate_func = running_start,
path_arc = -np.pi/6, path_arc = -np.pi/6,
) )
@ -3868,7 +3868,7 @@ class TwoBlockChains(DistributedBlockChainScene):
randy.change("raise_right_hand", chain) randy.change("raise_right_hand", chain)
corners = [ corners = [
u1*SPACE_X_RADIUS*RIGHT + u2*SPACE_Y_RADIUS*UP u1 * FRAME_X_RADIUS*RIGHT + u2 * FRAME_Y_RADIUS*UP
for u1, u2 in it.product(*[[-1, 1]]*2) for u1, u2 in it.product(*[[-1, 1]]*2)
] ]
moving_blocks = chain.blocks[1:] moving_blocks = chain.blocks[1:]
@ -3925,7 +3925,7 @@ class TwoBlockChains(DistributedBlockChainScene):
chain = block_chains[1] chain = block_chains[1]
chain.save_state() chain.save_state()
corner = SPACE_X_RADIUS*LEFT + SPACE_Y_RADIUS*UP corner = FRAME_X_RADIUS*LEFT + FRAME_Y_RADIUS*UP
chain.next_to(corner, UP+LEFT) chain.next_to(corner, UP+LEFT)
self.play( self.play(
randy.change, "confused", chain, randy.change, "confused", chain,
@ -3982,7 +3982,7 @@ class TwoBlockChains(DistributedBlockChainScene):
self.wait() self.wait()
arrow_block = arrow_block.copy() arrow_block = arrow_block.copy()
arrow_block.next_to(SPACE_X_RADIUS*RIGHT, RIGHT) arrow_block.next_to(FRAME_X_RADIUS*RIGHT, RIGHT)
self.play( self.play(
ApplyMethod( ApplyMethod(
arrow_block.next_to, block_chains[0], RIGHT, 0, arrow_block.next_to, block_chains[0], RIGHT, 0,
@ -4479,7 +4479,7 @@ class WhenToTrustANewBlock(DistributedBlockChainScene):
block = blocks[-1].copy() block = blocks[-1].copy()
arrow = arrows[-1].copy() arrow = arrows[-1].copy()
VGroup(block, arrow).next_to(blocks[-1], RIGHT, buff = 0) VGroup(block, arrow).next_to(blocks[-1], RIGHT, buff = 0)
corner = SPACE_X_RADIUS*RIGHT + SPACE_Y_RADIUS*UP corner = FRAME_X_RADIUS*RIGHT + FRAME_Y_RADIUS*UP
block.save_state() block.save_state()
block.next_to(corner, UP+RIGHT) block.next_to(corner, UP+RIGHT)
@ -4505,7 +4505,7 @@ class MainIdeas(Scene):
title = TextMobject("Main ideas") title = TextMobject("Main ideas")
title.scale(1.5) title.scale(1.5)
h_line = Line(LEFT, RIGHT) h_line = Line(LEFT, RIGHT)
h_line.scale_to_fit_width(SPACE_X_RADIUS) h_line.scale_to_fit_width(FRAME_X_RADIUS)
h_line.next_to(title, DOWN) h_line.next_to(title, DOWN)
VGroup(title, h_line).to_corner(UP+LEFT) VGroup(title, h_line).to_corner(UP+LEFT)
@ -4625,7 +4625,7 @@ class VariableProofOfWork(WhenToTrustANewBlock):
]) ])
everyone = VGroup(target, *copies) everyone = VGroup(target, *copies)
everyone.arrange_submobjects(DOWN) everyone.arrange_submobjects(DOWN)
everyone.scale_to_fit_height(2*SPACE_Y_RADIUS - LARGE_BUFF) everyone.scale_to_fit_height(FRAME_HEIGHT - LARGE_BUFF)
everyone.to_corner(UP+LEFT) everyone.to_corner(UP+LEFT)
self.play(Transform(miner_block, target)) self.play(Transform(miner_block, target))
@ -4668,7 +4668,7 @@ class CompareBlockTimes(Scene):
title.scale(1.5) title.scale(1.5)
title.to_edge(UP) title.to_edge(UP)
h_line = Line(LEFT, RIGHT) h_line = Line(LEFT, RIGHT)
h_line.scale_to_fit_width(SPACE_X_RADIUS) h_line.scale_to_fit_width(FRAME_X_RADIUS)
h_line.next_to(title, DOWN, SMALL_BUFF) h_line.next_to(title, DOWN, SMALL_BUFF)
examples = VGroup( examples = VGroup(
@ -4730,7 +4730,7 @@ class BlockRewards(Scene):
title.add(logo) title.add(logo)
title.to_edge(UP) title.to_edge(UP)
h_line = Line(LEFT, RIGHT) h_line = Line(LEFT, RIGHT)
h_line.scale_to_fit_width(SPACE_X_RADIUS) h_line.scale_to_fit_width(FRAME_X_RADIUS)
h_line.next_to(title, DOWN) h_line.next_to(title, DOWN)
self.add(title, logo, h_line) self.add(title, logo, h_line)
@ -4847,7 +4847,7 @@ class TransactionFeeExample(PiCreatureScene):
def create_pi_creature(self): def create_pi_creature(self):
alice = PiCreature(color = BLUE_C) alice = PiCreature(color = BLUE_C)
alice.to_edge(DOWN) alice.to_edge(DOWN)
alice.shift(SPACE_X_RADIUS*LEFT/2) alice.shift(FRAME_X_RADIUS*LEFT/2)
return alice return alice
class ShowBitcoinBlockSize(LedgerScene): class ShowBitcoinBlockSize(LedgerScene):
@ -5269,7 +5269,7 @@ class Thumbnail(DistributedBlockChainScene):
block_chain = self.get_block_chain() block_chain = self.get_block_chain()
block_chain.arrows.highlight(RED) block_chain.arrows.highlight(RED)
block_chain.blocks.gradient_highlight(BLUE, GREEN) block_chain.blocks.gradient_highlight(BLUE, GREEN)
block_chain.scale_to_fit_width(2*SPACE_X_RADIUS-1) block_chain.scale_to_fit_width(FRAME_WIDTH-1)
block_chain.set_stroke(width = 12) block_chain.set_stroke(width = 12)
self.add(block_chain) self.add(block_chain)

View file

@ -664,7 +664,7 @@ class ContrastTwoGraphs(SimpleVelocityGraph):
dot1, dot2 = dots[21], dots[41] dot1, dot2 = dots[21], dots[41]
rect = Rectangle( rect = Rectangle(
width = dot2.get_center()[0] - dot1.get_center()[0], width = dot2.get_center()[0] - dot1.get_center()[0],
height = SPACE_Y_RADIUS - self.x_axis.get_center()[1], height = FRAME_Y_RADIUS - self.x_axis.get_center()[1],
stroke_width = 0, stroke_width = 0,
fill_color = YELLOW, fill_color = YELLOW,
fill_opacity = 0.5 fill_opacity = 0.5

View file

@ -74,9 +74,9 @@ class ConfettiSpiril(Animation):
} }
def __init__(self, mobject, **kwargs): def __init__(self, mobject, **kwargs):
digest_config(self, kwargs) digest_config(self, kwargs)
mobject.next_to(self.x_start*RIGHT + SPACE_Y_RADIUS*UP, UP) mobject.next_to(self.x_start*RIGHT + FRAME_Y_RADIUS*UP, UP)
self.total_vert_shift = \ self.total_vert_shift = \
2*SPACE_Y_RADIUS + mobject.get_height() + 2*MED_SMALL_BUFF FRAME_HEIGHT + mobject.get_height() + 2*MED_SMALL_BUFF
Animation.__init__(self, mobject, **kwargs) Animation.__init__(self, mobject, **kwargs)
@ -107,7 +107,7 @@ def get_confetti_animations(num_confetti_squares):
confetti_spirils = [ confetti_spirils = [
ConfettiSpiril( ConfettiSpiril(
square, square,
x_start = 2*random.random()*SPACE_X_RADIUS - SPACE_X_RADIUS, x_start = 2*random.random()*FRAME_X_RADIUS - FRAME_X_RADIUS,
rate_func = squish_rate_func(lambda t : t, a, a+0.5) rate_func = squish_rate_func(lambda t : t, a, a+0.5)
) )
for a, square in zip( for a, square in zip(
@ -462,7 +462,7 @@ class SymmetriesOfSquare(ThreeDScene):
bottom_squares = VGroup(*all_squares[4:]) bottom_squares = VGroup(*all_squares[4:])
bottom_squares.next_to(top_squares, DOWN, buff = LARGE_BUFF) bottom_squares.next_to(top_squares, DOWN, buff = LARGE_BUFF)
all_squares.scale_to_fit_width(2*SPACE_X_RADIUS-2*LARGE_BUFF) all_squares.scale_to_fit_width(FRAME_WIDTH-2*LARGE_BUFF)
all_squares.center() all_squares.center()
all_squares.to_edge(DOWN, buff = LARGE_BUFF) all_squares.to_edge(DOWN, buff = LARGE_BUFF)
@ -1127,7 +1127,7 @@ class DihedralGroupStructure(SymmetriesOfSquare):
"axis" : axis, "axis" : axis,
} }
expression.arrange_submobjects() expression.arrange_submobjects()
expression.scale_to_fit_width(SPACE_X_RADIUS+1) expression.scale_to_fit_width(FRAME_X_RADIUS+1)
expression.to_edge(RIGHT, buff = SMALL_BUFF) expression.to_edge(RIGHT, buff = SMALL_BUFF)
for square in s1, s2, s3: for square in s1, s2, s3:
square.remove(square.action_illustration) square.remove(square.action_illustration)
@ -1166,9 +1166,9 @@ class DihedralGroupStructure(SymmetriesOfSquare):
target.scale(self.filed_sum_scale_factor) target.scale(self.filed_sum_scale_factor)
y_index = self.num_sum_expressions%self.num_rows y_index = self.num_sum_expressions%self.num_rows
y_prop = float(y_index)/(self.num_rows-1) y_prop = float(y_index)/(self.num_rows-1)
y = interpolate(SPACE_Y_RADIUS-LARGE_BUFF, -SPACE_Y_RADIUS+LARGE_BUFF, y_prop) y = interpolate(FRAME_Y_RADIUS-LARGE_BUFF, -FRAME_Y_RADIUS+LARGE_BUFF, y_prop)
x_index = self.num_sum_expressions//self.num_rows x_index = self.num_sum_expressions//self.num_rows
x_spacing = 2*SPACE_X_RADIUS/3 x_spacing = FRAME_WIDTH/3
x = (x_index-1)*x_spacing x = (x_index-1)*x_spacing
target.move_to(x*RIGHT + y*UP) target.move_to(x*RIGHT + y*UP)
@ -1193,7 +1193,7 @@ class ThisIsAVeryGeneralIdea(Scene):
])) ]))
numbers = examples[-1] numbers = examples[-1]
examples.arrange_submobjects(buff = LARGE_BUFF) examples.arrange_submobjects(buff = LARGE_BUFF)
examples.scale_to_fit_width(2*SPACE_X_RADIUS-1) examples.scale_to_fit_width(FRAME_WIDTH-1)
examples.move_to(UP) examples.move_to(UP)
lines = VGroup(*[ lines = VGroup(*[
@ -1257,8 +1257,8 @@ class AdditiveGroupOfReals(Scene):
"number_line_center" : UP, "number_line_center" : UP,
"shadow_line_center" : DOWN, "shadow_line_center" : DOWN,
"zero_color" : GREEN_B, "zero_color" : GREEN_B,
"x_min" : -2*SPACE_X_RADIUS, "x_min" : -FRAME_WIDTH,
"x_max" : 2*SPACE_X_RADIUS, "x_max" : FRAME_WIDTH,
} }
def construct(self): def construct(self):
self.add_number_line() self.add_number_line()
@ -1456,10 +1456,10 @@ class AdditiveGroupOfReals(Scene):
class AdditiveGroupOfComplexNumbers(ComplexTransformationScene): class AdditiveGroupOfComplexNumbers(ComplexTransformationScene):
CONFIG = { CONFIG = {
"x_min" : -2*int(SPACE_X_RADIUS), "x_min" : -2*int(FRAME_X_RADIUS),
"x_max" : 2*int(SPACE_X_RADIUS), "x_max" : 2*int(FRAME_X_RADIUS),
"y_min" : -2*SPACE_Y_RADIUS, "y_min" : -FRAME_HEIGHT,
"y_max" : 2*SPACE_Y_RADIUS, "y_max" : FRAME_HEIGHT,
"example_points" : [ "example_points" : [
complex(3, 2), complex(3, 2),
complex(1, -3), complex(1, -3),
@ -1730,13 +1730,13 @@ class AdditiveGroupOfComplexNumbers(ComplexTransformationScene):
class SchizophrenicNumbers(Scene): class SchizophrenicNumbers(Scene):
def construct(self): def construct(self):
v_line = DashedLine( v_line = DashedLine(
SPACE_Y_RADIUS*UP, FRAME_Y_RADIUS*UP,
SPACE_Y_RADIUS*DOWN FRAME_Y_RADIUS*DOWN
) )
left_title = TextMobject("Additive group") left_title = TextMobject("Additive group")
left_title.shift(SPACE_X_RADIUS*LEFT/2) left_title.shift(FRAME_X_RADIUS*LEFT/2)
right_title = TextMobject("Multiplicative group") right_title = TextMobject("Multiplicative group")
right_title.shift(SPACE_X_RADIUS*RIGHT/2) right_title.shift(FRAME_X_RADIUS*RIGHT/2)
VGroup(left_title, right_title).to_edge(UP) VGroup(left_title, right_title).to_edge(UP)
self.add(v_line, left_title, right_title) self.add(v_line, left_title, right_title)
@ -1755,7 +1755,7 @@ class SchizophrenicNumbers(Scene):
number.eyes = Eyes(number[0], height = 0.1) number.eyes = Eyes(number[0], height = 0.1)
number.add(number.eyes) number.add(number.eyes)
numbers[3].eyes.next_to(numbers[3][1], UP, buff = 0) numbers[3].eyes.next_to(numbers[3][1], UP, buff = 0)
numbers.shift(SPACE_X_RADIUS*LEFT/2) numbers.shift(FRAME_X_RADIUS*LEFT/2)
self.play(FadeIn(numbers)) self.play(FadeIn(numbers))
self.blink_numbers(numbers) self.blink_numbers(numbers)
@ -1763,7 +1763,7 @@ class SchizophrenicNumbers(Scene):
self.add(numbers.copy()) self.add(numbers.copy())
for number in numbers: for number in numbers:
number.generate_target() number.generate_target()
number.target.shift(SPACE_X_RADIUS*RIGHT) number.target.shift(FRAME_X_RADIUS*RIGHT)
number.target.eyes.save_state() number.target.eyes.save_state()
number.target.highlight(MULTIPLIER_COLOR) number.target.highlight(MULTIPLIER_COLOR)
number.target.eyes.restore() number.target.eyes.restore()
@ -1797,8 +1797,8 @@ class MultiplicativeGroupOfReals(AdditiveGroupOfReals):
CONFIG = { CONFIG = {
"number_line_center" : 0.5*UP, "number_line_center" : 0.5*UP,
"shadow_line_center" : 1.5*DOWN, "shadow_line_center" : 1.5*DOWN,
"x_min" : -3*SPACE_X_RADIUS, "x_min" : -3*FRAME_X_RADIUS,
"x_max" : 3*SPACE_X_RADIUS, "x_max" : 3*FRAME_X_RADIUS,
"positive_reals_color" : MAROON_B, "positive_reals_color" : MAROON_B,
} }
def setup(self): def setup(self):
@ -1944,7 +1944,7 @@ class MultiplicativeGroupOfReals(AdditiveGroupOfReals):
def every_positive_number_association(self): def every_positive_number_association(self):
positive_reals_line = Line( positive_reals_line = Line(
self.shadow_line.number_to_point(0), self.shadow_line.number_to_point(0),
self.shadow_line.number_to_point(SPACE_X_RADIUS), self.shadow_line.number_to_point(FRAME_X_RADIUS),
color = self.positive_reals_color color = self.positive_reals_color
) )
positive_reals_words = TextMobject("All positive reals") positive_reals_words = TextMobject("All positive reals")
@ -2061,8 +2061,8 @@ class MultiplicativeGroupOfReals(AdditiveGroupOfReals):
class MultiplicativeGroupOfComplexNumbers(AdditiveGroupOfComplexNumbers): class MultiplicativeGroupOfComplexNumbers(AdditiveGroupOfComplexNumbers):
CONFIG = { CONFIG = {
"dot_radius" : Dot.CONFIG["radius"], "dot_radius" : Dot.CONFIG["radius"],
"y_min" : -3*SPACE_Y_RADIUS, "y_min" : -3*FRAME_Y_RADIUS,
"y_max" : 3*SPACE_Y_RADIUS, "y_max" : 3*FRAME_Y_RADIUS,
} }
def construct(self): def construct(self):
self.add_plane() self.add_plane()
@ -2297,7 +2297,7 @@ class MultiplicativeGroupOfComplexNumbers(AdditiveGroupOfComplexNumbers):
self.wait() self.wait()
def show_break_down(self): def show_break_down(self):
positive_reals = Line(ORIGIN, SPACE_X_RADIUS*RIGHT) positive_reals = Line(ORIGIN, FRAME_X_RADIUS*RIGHT)
positive_reals.highlight(MAROON_B) positive_reals.highlight(MAROON_B)
circle = Circle( circle = Circle(
radius = self.z_to_point(1)[0], radius = self.z_to_point(1)[0],
@ -2559,8 +2559,8 @@ class ExponentsAsHomomorphism(Scene):
}, },
"bottom_line_center" : 2.5*DOWN, "bottom_line_center" : 2.5*DOWN,
"bottom_line_config" : { "bottom_line_config" : {
"x_min" : -2*SPACE_X_RADIUS, "x_min" : -FRAME_WIDTH,
"x_max" : 2*SPACE_X_RADIUS, "x_max" : FRAME_WIDTH,
} }
} }
def construct(self): def construct(self):
@ -2869,9 +2869,9 @@ class ComplexExponentiationAbstract():
self.wait() self.wait()
def add_vertical_line(self): def add_vertical_line(self):
line = Line(SPACE_Y_RADIUS*UP, SPACE_Y_RADIUS*DOWN) line = Line(FRAME_Y_RADIUS*UP, FRAME_Y_RADIUS*DOWN)
line.set_stroke(color = self.color, width = 10) line.set_stroke(color = self.color, width = 10)
line.shift(-SPACE_X_RADIUS*self.vect/2) line.shift(-FRAME_X_RADIUS*self.vect/2)
self.add(line) self.add(line)
self.add_foreground_mobjects(line) self.add_foreground_mobjects(line)
@ -2891,7 +2891,7 @@ class ComplexExponentiationAbstract():
def add_arrow(self): def add_arrow(self):
arrow = Arrow(LEFT, RIGHT, color = WHITE) arrow = Arrow(LEFT, RIGHT, color = WHITE)
arrow.move_to(-SPACE_X_RADIUS*self.vect/2 + 2*UP) arrow.move_to(-FRAME_X_RADIUS*self.vect/2 + 2*UP)
arrow.set_stroke(width = 6), arrow.set_stroke(width = 6),
func_mob = TexMobject("2^x") func_mob = TexMobject("2^x")
func_mob.next_to(arrow, UP, aligned_edge = LEFT) func_mob.next_to(arrow, UP, aligned_edge = LEFT)
@ -2909,9 +2909,9 @@ class ComplexExponentiationAbstract():
) )
def draw_real_line(self): def draw_real_line(self):
line = VGroup(Line(ORIGIN, SPACE_X_RADIUS*RIGHT)) line = VGroup(Line(ORIGIN, FRAME_X_RADIUS*RIGHT))
if self.vect[0] < 0: if self.vect[0] < 0:
line.add(Line(ORIGIN, SPACE_X_RADIUS*LEFT)) line.add(Line(ORIGIN, FRAME_X_RADIUS*LEFT))
line.highlight(RED) line.highlight(RED)
self.play(*map(ShowCreation, line), run_time = 3) self.play(*map(ShowCreation, line), run_time = 3)
@ -2945,7 +2945,7 @@ class ComplexExponentiationAbstract():
formula[-1].highlight(MULTIPLIER_COLOR) formula[-1].highlight(MULTIPLIER_COLOR)
formula.scale(1.5) formula.scale(1.5)
formula.next_to(ORIGIN, UP) formula.next_to(ORIGIN, UP)
formula.shift(-SPACE_X_RADIUS*self.vect/2) formula.shift(-FRAME_X_RADIUS*self.vect/2)
for part in formula: for part in formula:
part.add_to_back(BackgroundRectangle(part)) part.add_to_back(BackgroundRectangle(part))
@ -2977,8 +2977,8 @@ class ComplexExponentiationAdderHalf(
def highlight_vertical_line(self): def highlight_vertical_line(self):
line = VGroup( line = VGroup(
Line(ORIGIN, SPACE_Y_RADIUS*UP), Line(ORIGIN, FRAME_Y_RADIUS*UP),
Line(ORIGIN, SPACE_Y_RADIUS*DOWN), Line(ORIGIN, FRAME_Y_RADIUS*DOWN),
) )
line.highlight(YELLOW) line.highlight(YELLOW)
@ -2998,8 +2998,8 @@ class ComplexExponentiationAdderHalf(
def highlight_unit_circle(self): def highlight_unit_circle(self):
line = VGroup( line = VGroup(
Line(ORIGIN, SPACE_Y_RADIUS*UP), Line(ORIGIN, FRAME_Y_RADIUS*UP),
Line(ORIGIN, SPACE_Y_RADIUS*DOWN), Line(ORIGIN, FRAME_Y_RADIUS*DOWN),
) )
line.highlight(YELLOW) line.highlight(YELLOW)
for submob in line: for submob in line:
@ -3010,7 +3010,7 @@ class ComplexExponentiationAdderHalf(
Circle().flip(RIGHT), Circle().flip(RIGHT),
) )
circle.highlight(YELLOW) circle.highlight(YELLOW)
circle.shift(SPACE_X_RADIUS*RIGHT) circle.shift(FRAME_X_RADIUS*RIGHT)
self.play(ReplacementTransform( self.play(ReplacementTransform(
line, circle, run_time = 3 line, circle, run_time = 3
@ -3102,11 +3102,11 @@ class ComplexExponentiationMultiplierHalf(
def highlight_unit_circle(self): def highlight_unit_circle(self):
line = VGroup( line = VGroup(
Line(ORIGIN, SPACE_Y_RADIUS*UP), Line(ORIGIN, FRAME_Y_RADIUS*UP),
Line(ORIGIN, SPACE_Y_RADIUS*DOWN), Line(ORIGIN, FRAME_Y_RADIUS*DOWN),
) )
line.highlight(YELLOW) line.highlight(YELLOW)
line.shift(SPACE_X_RADIUS*LEFT) line.shift(FRAME_X_RADIUS*LEFT)
for submob in line: for submob in line:
submob.insert_n_anchor_points(10) submob.insert_n_anchor_points(10)
submob.make_smooth() submob.make_smooth()

View file

@ -250,7 +250,7 @@ class Introduction(TeacherStudentsScene):
this_video.save_state() this_video.save_state()
this_video.set_fill(opacity = 0) this_video.set_fill(opacity = 0)
this_video.center() this_video.center()
this_video.scale_to_fit_height(2*SPACE_Y_RADIUS) this_video.scale_to_fit_height(FRAME_HEIGHT)
self.this_video = this_video self.this_video = this_video
@ -386,8 +386,8 @@ class Introduction(TeacherStudentsScene):
arrow = Arrow(invent_calculus, student) arrow = Arrow(invent_calculus, student)
fader = Rectangle( fader = Rectangle(
width = 2*SPACE_X_RADIUS, width = FRAME_WIDTH,
height = 2*SPACE_Y_RADIUS, height = FRAME_HEIGHT,
stroke_width = 0, stroke_width = 0,
fill_color = BLACK, fill_color = BLACK,
fill_opacity = 0.5, fill_opacity = 0.5,
@ -410,7 +410,7 @@ class Introduction(TeacherStudentsScene):
class PreviewFrame(Scene): class PreviewFrame(Scene):
def construct(self): def construct(self):
frame = Rectangle(height = 9, width = 16, color = WHITE) frame = Rectangle(height = 9, width = 16, color = WHITE)
frame.scale_to_fit_height(1.5*SPACE_Y_RADIUS) frame.scale_to_fit_height(1.5*FRAME_Y_RADIUS)
colors = iter(color_gradient([BLUE, YELLOW], 3)) colors = iter(color_gradient([BLUE, YELLOW], 3))
titles = [ titles = [
@ -1439,7 +1439,7 @@ class GraphRectangles(CircleScene, GraphScene):
arranged_group.add(last_ring.target) arranged_group.add(last_ring.target)
arranged_group.arrange_submobjects(DOWN, buff = SMALL_BUFF) arranged_group.arrange_submobjects(DOWN, buff = SMALL_BUFF)
arranged_group.scale_to_fit_height(2*SPACE_Y_RADIUS-1) arranged_group.scale_to_fit_height(FRAME_HEIGHT-1)
arranged_group.to_corner(DOWN+LEFT, buff = MED_SMALL_BUFF) arranged_group.to_corner(DOWN+LEFT, buff = MED_SMALL_BUFF)
for mob in tex_mobs: for mob in tex_mobs:
mob.scale_in_place(0.7) mob.scale_in_place(0.7)
@ -2064,7 +2064,7 @@ class AreaUnderParabola(GraphScene):
v_lines = VGroup(*[ v_lines = VGroup(*[
DashedLine( DashedLine(
2*SPACE_Y_RADIUS*UP, ORIGIN, FRAME_HEIGHT*UP, ORIGIN,
color = RED color = RED
).move_to(self.coords_to_point(x, 0), DOWN) ).move_to(self.coords_to_point(x, 0), DOWN)
for x in 0, self.default_right_x for x in 0, self.default_right_x
@ -2616,7 +2616,7 @@ class AlternateAreaUnderCurve(PlayingTowardsDADX):
class NextVideoWrapper(Scene): class NextVideoWrapper(Scene):
def construct(self): def construct(self):
rect = Rectangle(height = 9, width = 16) rect = Rectangle(height = 9, width = 16)
rect.scale_to_fit_height(1.5*SPACE_Y_RADIUS) rect.scale_to_fit_height(1.5*FRAME_Y_RADIUS)
titles = [ titles = [
TextMobject("Chapter %d:"%d, s) TextMobject("Chapter %d:"%d, s)
for d, s in [ for d, s in [

View file

@ -399,7 +399,7 @@ class Pendulum(ReconfigurableScene):
def get_ceiling(self): def get_ceiling(self):
line = Line(LEFT, RIGHT, color = GREY) line = Line(LEFT, RIGHT, color = GREY)
line.scale(SPACE_X_RADIUS) line.scale(FRAME_X_RADIUS)
line.move_to(self.anchor_point[1]*UP) line.move_to(self.anchor_point[1]*UP)
return line return line
@ -1365,8 +1365,8 @@ class CubicAndQuarticApproximations(ConstructQuadraticApproximation):
) )
self.quadratic_graph = self.get_quadratic_graph() self.quadratic_graph = self.get_quadratic_graph()
self.big_rect = Rectangle( self.big_rect = Rectangle(
height = 2*SPACE_Y_RADIUS, height = FRAME_HEIGHT,
width = 2*SPACE_X_RADIUS, width = FRAME_WIDTH,
stroke_width = 0, stroke_width = 0,
fill_color = BLACK, fill_color = BLACK,
fill_opacity = 0.5, fill_opacity = 0.5,
@ -1898,7 +1898,7 @@ class EachTermControlsOneDerivative(Scene):
buff = LARGE_BUFF, buff = LARGE_BUFF,
aligned_edge = UP aligned_edge = UP
) )
deriv_words.scale_to_fit_width(2*SPACE_X_RADIUS - MED_LARGE_BUFF) deriv_words.scale_to_fit_width(FRAME_WIDTH - MED_LARGE_BUFF)
deriv_words.to_edge(UP) deriv_words.to_edge(UP)
for const, deriv, color in zip(consts, deriv_words, colors): for const, deriv, color in zip(consts, deriv_words, colors):
@ -2150,7 +2150,7 @@ class TranslationOfInformation(CubicAndQuarticApproximations):
))) )))
group.add(TexMobject("\\vdots")) group.add(TexMobject("\\vdots"))
group.arrange_submobjects(DOWN, buff = SMALL_BUFF) group.arrange_submobjects(DOWN, buff = SMALL_BUFF)
group.scale_to_fit_height(2*SPACE_Y_RADIUS - MED_LARGE_BUFF) group.scale_to_fit_height(FRAME_HEIGHT - MED_LARGE_BUFF)
group.to_edge(LEFT) group.to_edge(LEFT)
for dx, d0, color in zip(derivs_at_x, derivs_at_zero, self.colors): for dx, d0, color in zip(derivs_at_x, derivs_at_zero, self.colors):
for d in dx, d0: for d in dx, d0:
@ -2303,7 +2303,7 @@ class TranslationOfInformation(CubicAndQuarticApproximations):
for arg in "x", "0", "a" for arg in "x", "0", "a"
] ]
derivs_at_x.arrange_submobjects(DOWN, buff = MED_LARGE_BUFF) derivs_at_x.arrange_submobjects(DOWN, buff = MED_LARGE_BUFF)
derivs_at_x.scale_to_fit_height(2*SPACE_Y_RADIUS - MED_LARGE_BUFF) derivs_at_x.scale_to_fit_height(FRAME_HEIGHT - MED_LARGE_BUFF)
derivs_at_x.to_edge(LEFT) derivs_at_x.to_edge(LEFT)
zeros = VGroup(*[ zeros = VGroup(*[
deriv.get_part_by_tex("0") deriv.get_part_by_tex("0")
@ -2503,7 +2503,7 @@ class ThisIsAStandardFormula(TeacherStudentsScene):
) )
self.change_student_modes( self.change_student_modes(
*["sad"]*3, *["sad"]*3,
look_at_arg = SPACE_Y_RADIUS*UP look_at_arg = FRAME_Y_RADIUS*UP
) )
self.wait(2) self.wait(2)
@ -2563,7 +2563,7 @@ class ExpPolynomial(TranslationOfInformation, ExampleApproximationWithExp):
))) )))
group.add(TexMobject("\\vdots")) group.add(TexMobject("\\vdots"))
group.arrange_submobjects(DOWN, buff = 2*SMALL_BUFF) group.arrange_submobjects(DOWN, buff = 2*SMALL_BUFF)
group.scale_to_fit_height(2*SPACE_Y_RADIUS - MED_LARGE_BUFF) group.scale_to_fit_height(FRAME_HEIGHT - MED_LARGE_BUFF)
group.to_edge(LEFT) group.to_edge(LEFT)
for dx, d0 in zip(derivs_at_x, derivs_at_zero): for dx, d0 in zip(derivs_at_x, derivs_at_zero):
for d in dx, d0: for d in dx, d0:
@ -3021,8 +3021,8 @@ class AskAboutInfiniteSum(TeacherStudentsScene):
def ask_question(self): def ask_question(self):
big_rect = Rectangle( big_rect = Rectangle(
width = 2*SPACE_X_RADIUS, width = FRAME_WIDTH,
height = 2*SPACE_Y_RADIUS, height = FRAME_HEIGHT,
stroke_width = 0, stroke_width = 0,
fill_color = BLACK, fill_color = BLACK,
fill_opacity = 0.7, fill_opacity = 0.7,
@ -3597,7 +3597,7 @@ class MoreToBeSaid(TeacherStudentsScene):
words.to_edge(UP) words.to_edge(UP)
fade_rect = FullScreenFadeRectangle() fade_rect = FullScreenFadeRectangle()
rect = Rectangle(height = 9, width = 16) rect = Rectangle(height = 9, width = 16)
rect.scale_to_fit_height(SPACE_Y_RADIUS) rect.scale_to_fit_height(FRAME_Y_RADIUS)
rect.to_corner(UP+RIGHT) rect.to_corner(UP+RIGHT)
randy = self.get_students()[1] randy = self.get_students()[1]
@ -3686,7 +3686,7 @@ class Thumbnail(ExampleApproximationWithSine):
self.add(cos_graph, quad_graph, quartic) self.add(cos_graph, quad_graph, quartic)
title = TextMobject("Taylor Series") title = TextMobject("Taylor Series")
title.scale_to_fit_width(1.5*SPACE_X_RADIUS) title.scale_to_fit_width(1.5*FRAME_X_RADIUS)
title.add_background_rectangle() title.add_background_rectangle()
title.to_edge(UP) title.to_edge(UP)
self.add(title) self.add(title)

View file

@ -143,7 +143,7 @@ class Introduction(TeacherStudentsScene):
*it.chain(*[ *it.chain(*[
[ [
pi.change_mode, mode, pi.change_mode, mode,
pi.look_at, SPACE_Y_RADIUS*UP pi.look_at, FRAME_Y_RADIUS*UP
] ]
for pi, mode in zip(self.get_pi_creatures(), [ for pi, mode in zip(self.get_pi_creatures(), [
"speaking", "pondering", "confused", "confused", "speaking", "pondering", "confused", "confused",
@ -666,8 +666,8 @@ class SnapshotOfACar(Scene):
car.scale(1.5) car.scale(1.5)
car.move_to(3*LEFT+DOWN) car.move_to(3*LEFT+DOWN)
flash_box = Rectangle( flash_box = Rectangle(
width = 2*SPACE_X_RADIUS, width = FRAME_WIDTH,
height = 2*SPACE_Y_RADIUS, height = FRAME_HEIGHT,
stroke_width = 0, stroke_width = 0,
fill_color = WHITE, fill_color = WHITE,
fill_opacity = 1, fill_opacity = 1,
@ -723,8 +723,8 @@ class CompareTwoTimes(Scene):
state2.to_corner(DOWN+LEFT) state2.to_corner(DOWN+LEFT)
dividers = VGroup( dividers = VGroup(
Line(SPACE_X_RADIUS*LEFT, RIGHT), Line(FRAME_X_RADIUS*LEFT, RIGHT),
Line(RIGHT+SPACE_Y_RADIUS*UP, RIGHT+SPACE_Y_RADIUS*DOWN), Line(RIGHT+FRAME_Y_RADIUS*UP, RIGHT+FRAME_Y_RADIUS*DOWN),
) )
dividers.highlight(GREY) dividers.highlight(GREY)
@ -1992,7 +1992,7 @@ class YouWouldntDoThisEveryTime(TeacherStudentsScene):
self.wait(3) self.wait(3)
series = VideoSeries() series = VideoSeries()
series.scale_to_fit_width(2*SPACE_X_RADIUS-1) series.scale_to_fit_width(FRAME_WIDTH-1)
series.to_edge(UP) series.to_edge(UP)
this_video = series[1] this_video = series[1]
next_video = series[2] next_video = series[2]
@ -2008,7 +2008,7 @@ class YouWouldntDoThisEveryTime(TeacherStudentsScene):
class ContrastConcreteDtWithLimit(Scene): class ContrastConcreteDtWithLimit(Scene):
def construct(self): def construct(self):
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS) v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
self.add(v_line) self.add(v_line)
l_title = TextMobject(""" l_title = TextMobject("""
@ -2020,7 +2020,7 @@ class ContrastConcreteDtWithLimit(Scene):
VGroup(*r_title[:2]).highlight(TIME_COLOR) VGroup(*r_title[:2]).highlight(TIME_COLOR)
for title, vect in (l_title, LEFT), (r_title, RIGHT): for title, vect in (l_title, LEFT), (r_title, RIGHT):
title.to_edge(UP) title.to_edge(UP)
title.shift(SPACE_X_RADIUS*vect/2) title.shift(FRAME_X_RADIUS*vect/2)
self.add(title) self.add(title)
l_formula = TexMobject(""" l_formula = TexMobject("""
@ -2040,7 +2040,7 @@ class ContrastConcreteDtWithLimit(Scene):
l_formula[27:29], l_formula[27:29],
l_formula[35:37], l_formula[35:37],
)).highlight(TIME_COLOR) )).highlight(TIME_COLOR)
l_formula.scale_to_fit_width(SPACE_X_RADIUS-MED_LARGE_BUFF) l_formula.scale_to_fit_width(FRAME_X_RADIUS-MED_LARGE_BUFF)
l_formula.to_edge(LEFT) l_formula.to_edge(LEFT)
l_brace = Brace(l_formula, DOWN) l_brace = Brace(l_formula, DOWN)
@ -2051,7 +2051,7 @@ class ContrastConcreteDtWithLimit(Scene):
"\\frac{d(t^3)}{dt} = 3t^2" "\\frac{d(t^3)}{dt} = 3t^2"
) )
VGroup(*r_formula[6:8]).highlight(TIME_COLOR) VGroup(*r_formula[6:8]).highlight(TIME_COLOR)
r_formula.shift(SPACE_X_RADIUS*RIGHT/2) r_formula.shift(FRAME_X_RADIUS*RIGHT/2)
r_brace = Brace(r_formula, DOWN) r_brace = Brace(r_formula, DOWN)
r_text = r_brace.get_text("Simple") r_text = r_brace.get_text("Simple")
r_text.highlight(GREEN) r_text.highlight(GREEN)
@ -2427,7 +2427,7 @@ class TinyMovement(ZoomedScene):
class NextVideos(TeacherStudentsScene): class NextVideos(TeacherStudentsScene):
def construct(self): def construct(self):
series = VideoSeries() series = VideoSeries()
series.scale_to_fit_width(2*SPACE_X_RADIUS - 1) series.scale_to_fit_width(FRAME_WIDTH - 1)
series.to_edge(UP) series.to_edge(UP)
series[1].highlight(YELLOW) series[1].highlight(YELLOW)
self.add(series) self.add(series)
@ -2592,7 +2592,7 @@ class Thumbnail(SecantLineToTangentLine):
VGroup(*self.get_mobjects()).fade(0.4) VGroup(*self.get_mobjects()).fade(0.4)
title = TextMobject("Derivative paradox") title = TextMobject("Derivative paradox")
title.scale_to_fit_width(2*SPACE_X_RADIUS-1) title.scale_to_fit_width(FRAME_WIDTH-1)
title.to_edge(UP) title.to_edge(UP)
title.add_background_rectangle() title.add_background_rectangle()
title.gradient_highlight(GREEN, YELLOW) title.gradient_highlight(GREEN, YELLOW)

View file

@ -69,14 +69,14 @@ class PoseAbstractDerivative(TeacherStudentsScene):
class ContrastAbstractAndConcrete(Scene): class ContrastAbstractAndConcrete(Scene):
def construct(self): def construct(self):
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS) v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
l_title = TextMobject("Abstract functions") l_title = TextMobject("Abstract functions")
l_title.shift(SPACE_X_RADIUS*LEFT/2) l_title.shift(FRAME_X_RADIUS*LEFT/2)
l_title.to_edge(UP) l_title.to_edge(UP)
r_title = TextMobject("Applications") r_title = TextMobject("Applications")
r_title.shift(SPACE_X_RADIUS*RIGHT/2) r_title.shift(FRAME_X_RADIUS*RIGHT/2)
r_title.to_edge(UP) r_title.to_edge(UP)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
h_line.shift((r_title.get_bottom()[1]-MED_SMALL_BUFF)*UP) h_line.shift((r_title.get_bottom()[1]-MED_SMALL_BUFF)*UP)
functions = VGroup(*map(TexMobject, [ functions = VGroup(*map(TexMobject, [
@ -90,7 +90,7 @@ class ContrastAbstractAndConcrete(Scene):
aligned_edge = LEFT, aligned_edge = LEFT,
buff = LARGE_BUFF buff = LARGE_BUFF
) )
functions.shift(SPACE_X_RADIUS*LEFT/2) functions.shift(FRAME_X_RADIUS*LEFT/2)
functions[-1].shift(MED_LARGE_BUFF*RIGHT) functions[-1].shift(MED_LARGE_BUFF*RIGHT)
self.add(l_title, r_title) self.add(l_title, r_title)
@ -171,7 +171,7 @@ class ContrastAbstractAndConcrete(Scene):
pis.scale_to_fit_height(3) pis.scale_to_fit_height(3)
pis.center() pis.center()
pis.to_edge(DOWN, buff = SMALL_BUFF) pis.to_edge(DOWN, buff = SMALL_BUFF)
pis.shift(SPACE_X_RADIUS*RIGHT/2.) pis.shift(FRAME_X_RADIUS*RIGHT/2.)
anims = [] anims = []
for index, pi in enumerate(pis): for index, pi in enumerate(pis):
@ -224,7 +224,7 @@ class ListOfRules(PiCreatureScene):
aligned_edge = LEFT, aligned_edge = LEFT,
) )
rules[-1].shift(MED_LARGE_BUFF*RIGHT) rules[-1].shift(MED_LARGE_BUFF*RIGHT)
rules.scale_to_fit_height(2*SPACE_Y_RADIUS-1) rules.scale_to_fit_height(FRAME_HEIGHT-1)
rules.next_to(self.pi_creature, RIGHT) rules.next_to(self.pi_creature, RIGHT)
rules.to_edge(DOWN) rules.to_edge(DOWN)
@ -381,7 +381,7 @@ class DerivativeOfXSquaredAsGraph(GraphScene, ZoomedScene, PiCreatureScene):
self.disactivate_zooming() self.disactivate_zooming()
self.play( self.play(
ApplyMethod( ApplyMethod(
everything.shift, 2*SPACE_X_RADIUS*LEFT, everything.shift, FRAME_WIDTH*LEFT,
rate_func = lambda t : running_start(t, -0.1) rate_func = lambda t : running_start(t, -0.1)
), ),
self.pi_creature.change_mode, "happy" self.pi_creature.change_mode, "happy"
@ -857,7 +857,7 @@ class NudgeSideLengthOfCube(Scene):
def add_title(self): def add_title(self):
title = TexMobject("f(x) = x^3") title = TexMobject("f(x) = x^3")
title.shift(SPACE_X_RADIUS*LEFT/2) title.shift(FRAME_X_RADIUS*LEFT/2)
title.to_edge(UP) title.to_edge(UP)
self.play(Write(title)) self.play(Write(title))
self.wait() self.wait()
@ -957,7 +957,7 @@ class NudgeSideLengthOfCube(Scene):
self.shrink_dx("Faces are introduced") self.shrink_dx("Faces are introduced")
face = self.faces[0] face = self.faces[0]
face.save_state() face.save_state()
self.play(face.shift, SPACE_X_RADIUS*RIGHT) self.play(face.shift, FRAME_X_RADIUS*RIGHT)
x_squared_dx.next_to(face, LEFT) x_squared_dx.next_to(face, LEFT)
self.play(Write(x_squared_dx, run_time = 1)) self.play(Write(x_squared_dx, run_time = 1))
self.wait() self.wait()
@ -1229,11 +1229,11 @@ class GraphOfXCubed(GraphScene):
CONFIG = { CONFIG = {
"x_min" : -6, "x_min" : -6,
"x_max" : 6, "x_max" : 6,
"x_axis_width" : 2*SPACE_X_RADIUS, "x_axis_width" : FRAME_WIDTH,
"x_labeled_nums" : range(-6, 7), "x_labeled_nums" : range(-6, 7),
"y_min" : -35, "y_min" : -35,
"y_max" : 35, "y_max" : 35,
"y_axis_height" : 2*SPACE_Y_RADIUS, "y_axis_height" : FRAME_HEIGHT,
"y_tick_frequency" : 5, "y_tick_frequency" : 5,
"y_labeled_nums" : range(-30, 40, 10), "y_labeled_nums" : range(-30, 40, 10),
"graph_origin" : ORIGIN, "graph_origin" : ORIGIN,
@ -1331,7 +1331,7 @@ class PatternForPowerRule(PiCreatureScene):
DOWN, aligned_edge = LEFT, DOWN, aligned_edge = LEFT,
buff = MED_LARGE_BUFF buff = MED_LARGE_BUFF
) )
derivatives.scale_to_fit_height(2*SPACE_Y_RADIUS-1) derivatives.scale_to_fit_height(FRAME_HEIGHT-1)
derivatives.to_edge(LEFT) derivatives.to_edge(LEFT)
self.play(FadeIn(derivatives[0])) self.play(FadeIn(derivatives[0]))
@ -1629,7 +1629,7 @@ class ReactToFullExpansion(Scene):
class OneOverX(PiCreatureScene, GraphScene): class OneOverX(PiCreatureScene, GraphScene):
CONFIG = { CONFIG = {
"unit_length" : 3.0, "unit_length" : 3.0,
"graph_origin" : (SPACE_X_RADIUS - LARGE_BUFF)*LEFT + 2*DOWN, "graph_origin" : (FRAME_X_RADIUS - LARGE_BUFF)*LEFT + 2*DOWN,
"rectangle_color_kwargs" : { "rectangle_color_kwargs" : {
"fill_color" : BLUE, "fill_color" : BLUE,
"fill_opacity" : 0.5, "fill_opacity" : 0.5,
@ -2175,7 +2175,7 @@ class DerivativeOfSineIsSlope(Scene):
"\\frac{d(\\sin(\\theta))}{d\\theta} = ", "\\frac{d(\\sin(\\theta))}{d\\theta} = ",
"\\text{Slope of this graph}" "\\text{Slope of this graph}"
) )
tex.scale_to_fit_width(2*SPACE_X_RADIUS-1) tex.scale_to_fit_width(FRAME_WIDTH-1)
tex.to_edge(DOWN) tex.to_edge(DOWN)
VGroup(*tex[0][2:8]).highlight(BLUE) VGroup(*tex[0][2:8]).highlight(BLUE)
VGroup(*tex[1][-9:]).highlight(BLUE) VGroup(*tex[1][-9:]).highlight(BLUE)
@ -2247,7 +2247,7 @@ class IntroduceUnitCircleWithSine(GraphScene):
ORIGIN, self.example_radians*self.unit_length*UP, ORIGIN, self.example_radians*self.unit_length*UP,
color = YELLOW, color = YELLOW,
) )
line.shift(SPACE_X_RADIUS*RIGHT/3).to_edge(UP) line.shift(FRAME_X_RADIUS*RIGHT/3).to_edge(UP)
line.insert_n_anchor_points(10) line.insert_n_anchor_points(10)
line.make_smooth() line.make_smooth()
@ -2827,12 +2827,12 @@ class Thumbnail(NudgeSideLengthOfCube):
) )
VGroup(*formula[:5]).highlight(YELLOW) VGroup(*formula[:5]).highlight(YELLOW)
VGroup(*formula[-3:]).highlight(GREEN_B) VGroup(*formula[-3:]).highlight(GREEN_B)
formula.scale_to_fit_width(SPACE_X_RADIUS-1) formula.scale_to_fit_width(FRAME_X_RADIUS-1)
formula.to_edge(RIGHT) formula.to_edge(RIGHT)
self.add(formula) self.add(formula)
title = TextMobject("Geometric derivatives") title = TextMobject("Geometric derivatives")
title.scale_to_fit_width(2*SPACE_X_RADIUS-1) title.scale_to_fit_width(FRAME_WIDTH-1)
title.to_edge(UP) title.to_edge(UP)
self.add(title) self.add(title)

View file

@ -149,7 +149,7 @@ class TransitionFromLastVideo(TeacherStudentsScene):
top_group = VGroup(series, simple_rules, brace) top_group = VGroup(series, simple_rules, brace)
combination_rules.save_state() combination_rules.save_state()
self.play( self.play(
top_group.next_to, SPACE_Y_RADIUS*UP, UP, top_group.next_to, FRAME_Y_RADIUS*UP, UP,
combination_rules.to_edge, UP, combination_rules.to_edge, UP,
) )
pairs = [ pairs = [
@ -275,7 +275,7 @@ class ComingUp(Scene):
def construct(self): def construct(self):
rect = Rectangle(height = 9, width = 16) rect = Rectangle(height = 9, width = 16)
rect.set_stroke(WHITE) rect.set_stroke(WHITE)
rect.scale_to_fit_height(2*SPACE_Y_RADIUS-2) rect.scale_to_fit_height(FRAME_HEIGHT-2)
title = TextMobject("Coming up...") title = TextMobject("Coming up...")
title.to_edge(UP) title.to_edge(UP)
rect.next_to(title, DOWN) rect.next_to(title, DOWN)
@ -338,7 +338,7 @@ class SumRule(GraphScene):
"y_labeled_nums" : [], "y_labeled_nums" : [],
"y_axis_label" : "", "y_axis_label" : "",
"x_max" : 4, "x_max" : 4,
"x_axis_width" : 2*SPACE_X_RADIUS, "x_axis_width" : FRAME_WIDTH,
"y_max" : 3, "y_max" : 3,
"graph_origin" : 2.5*DOWN + 2.5*LEFT, "graph_origin" : 2.5*DOWN + 2.5*LEFT,
"graph_label_x_value" : 1.5, "graph_label_x_value" : 1.5,
@ -789,7 +789,7 @@ class NotGraphsForProducts(GraphScene):
)) ))
words = TextMobject("Not the best visualization") words = TextMobject("Not the best visualization")
words.scale(1.5) words.scale(1.5)
words.shift(SPACE_Y_RADIUS*UP/2) words.shift(FRAME_Y_RADIUS*UP/2)
words.add_background_rectangle() words.add_background_rectangle()
words.highlight(RED) words.highlight(RED)
self.play( self.play(
@ -2291,7 +2291,7 @@ class Thumbnail(IntroduceProductAsArea):
blg[1][1].next_to(df_boxes[-1], RIGHT) blg[1][1].next_to(df_boxes[-1], RIGHT)
df_box_labels = self.get_df_box_labels(df_boxes) df_box_labels = self.get_df_box_labels(df_boxes)
blg.add(df_boxes, df_box_labels) blg.add(df_boxes, df_box_labels)
blg.scale_to_fit_height(2*SPACE_Y_RADIUS-2*MED_LARGE_BUFF) blg.scale_to_fit_height(FRAME_HEIGHT-2*MED_LARGE_BUFF)
blg.center() blg.center()
self.add(blg) self.add(blg)

View file

@ -1258,7 +1258,7 @@ class Chapter4Wrapper(Scene):
title = TextMobject("Chapter 4 chain rule intuition") title = TextMobject("Chapter 4 chain rule intuition")
title.to_edge(UP) title.to_edge(UP)
rect = Rectangle(width = 16, height = 9) rect = Rectangle(width = 16, height = 9)
rect.scale_to_fit_height(1.5*SPACE_Y_RADIUS) rect.scale_to_fit_height(1.5*FRAME_Y_RADIUS)
rect.next_to(title, DOWN) rect.next_to(title, DOWN)
self.add(title) self.add(title)
@ -1622,7 +1622,7 @@ class ManyExponentialForms(TeacherStudentsScene):
] ]
group = VGroup(lhs, *rhs_list) group = VGroup(lhs, *rhs_list)
group.arrange_submobjects(RIGHT) group.arrange_submobjects(RIGHT)
group.scale_to_fit_width(2*SPACE_X_RADIUS - LARGE_BUFF) group.scale_to_fit_width(FRAME_WIDTH - LARGE_BUFF)
group.next_to(self.get_pi_creatures(), UP, 2*LARGE_BUFF) group.next_to(self.get_pi_creatures(), UP, 2*LARGE_BUFF)
for part in group: for part in group:
part.highlight_by_tex("t", YELLOW) part.highlight_by_tex("t", YELLOW)

View file

@ -67,8 +67,8 @@ class ThisWasConfusing(TeacherStudentsScene):
class SlopeOfCircleExample(ZoomedScene): class SlopeOfCircleExample(ZoomedScene):
CONFIG = { CONFIG = {
"plane_kwargs" : { "plane_kwargs" : {
"x_radius" : SPACE_X_RADIUS/SPACE_UNIT_TO_PLANE_UNIT, "x_radius" : FRAME_X_RADIUS/SPACE_UNIT_TO_PLANE_UNIT,
"y_radius" : SPACE_Y_RADIUS/SPACE_UNIT_TO_PLANE_UNIT, "y_radius" : FRAME_Y_RADIUS/SPACE_UNIT_TO_PLANE_UNIT,
"space_unit_to_x_unit" : SPACE_UNIT_TO_PLANE_UNIT, "space_unit_to_x_unit" : SPACE_UNIT_TO_PLANE_UNIT,
"space_unit_to_y_unit" : SPACE_UNIT_TO_PLANE_UNIT, "space_unit_to_y_unit" : SPACE_UNIT_TO_PLANE_UNIT,
}, },
@ -383,8 +383,8 @@ class SlopeOfCircleExample(ZoomedScene):
q_marks.next_to(morty, UP) q_marks.next_to(morty, UP)
rect = Rectangle( rect = Rectangle(
width = SPACE_X_RADIUS - SMALL_BUFF, width = FRAME_X_RADIUS - SMALL_BUFF,
height = SPACE_Y_RADIUS - SMALL_BUFF, height = FRAME_Y_RADIUS - SMALL_BUFF,
stroke_width = 0, stroke_width = 0,
fill_color = BLACK, fill_color = BLACK,
fill_opacity = 0.8, fill_opacity = 0.8,
@ -403,7 +403,7 @@ class SlopeOfCircleExample(ZoomedScene):
FadeIn(rect), FadeIn(rect),
FadeIn(morty), FadeIn(morty),
equation.next_to, ORIGIN, DOWN, MED_LARGE_BUFF, equation.next_to, ORIGIN, DOWN, MED_LARGE_BUFF,
equation.shift, SPACE_X_RADIUS*RIGHT/2, equation.shift, FRAME_X_RADIUS*RIGHT/2,
) )
self.play( self.play(
morty.change_mode, "confused", morty.change_mode, "confused",
@ -1279,7 +1279,7 @@ class CompareLadderAndCircle(PiCreatureScene, ThreeDScene):
circle_scene = LightweightCircleExample() circle_scene = LightweightCircleExample()
circle_mobs = VGroup(*circle_scene.get_top_level_mobjects()) circle_mobs = VGroup(*circle_scene.get_top_level_mobjects())
for mobs, vect in (ladder_mobs, LEFT), (circle_mobs, RIGHT): for mobs, vect in (ladder_mobs, LEFT), (circle_mobs, RIGHT):
mobs.scale_to_fit_height(SPACE_Y_RADIUS-MED_LARGE_BUFF) mobs.scale_to_fit_height(FRAME_Y_RADIUS-MED_LARGE_BUFF)
mobs.next_to( mobs.next_to(
self.pi_creature.get_corner(UP+vect), UP, self.pi_creature.get_corner(UP+vect), UP,
buff = SMALL_BUFF, buff = SMALL_BUFF,
@ -1446,7 +1446,7 @@ class TwoVariableFunctionAndDerivative(SlopeOfCircleExample):
s_expression.next_to(brace, UP, buff = SMALL_BUFF) s_expression.next_to(brace, UP, buff = SMALL_BUFF)
group = VGroup(equation, s_expression, brace) group = VGroup(equation, s_expression, brace)
group.shift(2*SPACE_X_RADIUS*LEFT/3) group.shift(FRAME_WIDTH*LEFT/3)
group.to_edge(UP, buff = MED_SMALL_BUFF) group.to_edge(UP, buff = MED_SMALL_BUFF)
s.save_state() s.save_state()
@ -1582,7 +1582,7 @@ class TwoVariableFunctionAndDerivative(SlopeOfCircleExample):
lil_rect.shift(0.05*lil_rect.get_width()*LEFT) lil_rect.shift(0.05*lil_rect.get_width()*LEFT)
lil_rect.shift(0.2*lil_rect.get_height()*DOWN) lil_rect.shift(0.2*lil_rect.get_height()*DOWN)
lil_rect.save_state() lil_rect.save_state()
lil_rect.scale_to_fit_height(SPACE_Y_RADIUS - MED_LARGE_BUFF) lil_rect.scale_to_fit_height(FRAME_Y_RADIUS - MED_LARGE_BUFF)
lil_rect.move_to(s_label, UP) lil_rect.move_to(s_label, UP)
lil_rect.shift(MED_SMALL_BUFF*UP) lil_rect.shift(MED_SMALL_BUFF*UP)
self.wait() self.wait()
@ -1885,7 +1885,7 @@ class AlternateExample(ZoomedScene):
plane = NumberPlane( plane = NumberPlane(
space_unit_to_x_unit = 0.75, space_unit_to_x_unit = 0.75,
x_radius = 2*SPACE_X_RADIUS, x_radius = FRAME_WIDTH,
) )
plane.fade() plane.fade()
plane.add_coordinates() plane.add_coordinates()
@ -2083,7 +2083,7 @@ class AlternateExample(ZoomedScene):
mnemonic.highlight_by_tex("d-Right", RED) mnemonic.highlight_by_tex("d-Right", RED)
mnemonic.highlight_by_tex("d-Left", GREEN) mnemonic.highlight_by_tex("d-Left", GREEN)
mnemonic.add_background_rectangle() mnemonic.add_background_rectangle()
mnemonic.scale_to_fit_width(SPACE_X_RADIUS-2*MED_LARGE_BUFF) mnemonic.scale_to_fit_width(FRAME_X_RADIUS-2*MED_LARGE_BUFF)
mnemonic.next_to(ORIGIN, UP) mnemonic.next_to(ORIGIN, UP)
mnemonic.to_edge(LEFT) mnemonic.to_edge(LEFT)
@ -2093,7 +2093,7 @@ class AlternateExample(ZoomedScene):
) )
derivative.highlight_by_tex("dx", GREEN) derivative.highlight_by_tex("dx", GREEN)
derivative.highlight_by_tex("dy", RED) derivative.highlight_by_tex("dy", RED)
derivative.scale_to_fit_width(SPACE_X_RADIUS - 2*MED_LARGE_BUFF) derivative.scale_to_fit_width(FRAME_X_RADIUS - 2*MED_LARGE_BUFF)
derivative.next_to( derivative.next_to(
brace, DOWN, brace, DOWN,
buff = MED_LARGE_BUFF, buff = MED_LARGE_BUFF,
@ -2289,7 +2289,7 @@ class DerivativeOfNaturalLog(ZoomedScene):
graph = FunctionGraph( graph = FunctionGraph(
np.log, np.log,
x_min = 0.01, x_min = 0.01,
x_max = SPACE_X_RADIUS, x_max = FRAME_X_RADIUS,
num_steps = 100 num_steps = 100
) )
formula = TexMobject("y = \\ln(x)") formula = TexMobject("y = \\ln(x)")
@ -2321,7 +2321,7 @@ class DerivativeOfNaturalLog(ZoomedScene):
def update_label(label): def update_label(label):
point = dot.get_center() point = dot.get_center()
vect = point - SPACE_Y_RADIUS*(DOWN+RIGHT) vect = point - FRAME_Y_RADIUS*(DOWN+RIGHT)
vect = vect/np.linalg.norm(vect) vect = vect/np.linalg.norm(vect)
label.move_to( label.move_to(
point + vect*0.5*label.get_width() point + vect*0.5*label.get_width()
@ -2358,7 +2358,7 @@ class DerivativeOfNaturalLog(ZoomedScene):
def slope_gives_derivative(self): def slope_gives_derivative(self):
dot = self.dot dot = self.dot
point = dot.get_center() point = dot.get_center()
line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
slope = 1./point[0] slope = 1./point[0]
line.rotate(np.arctan(slope)) line.rotate(np.arctan(slope))
line.move_to(point) line.move_to(point)
@ -2562,7 +2562,7 @@ class DerivativeOfNaturalLog(ZoomedScene):
graph = FunctionGraph( graph = FunctionGraph(
lambda x : 1./x, lambda x : 1./x,
x_min = 0.1, x_min = 0.1,
x_max = SPACE_X_RADIUS, x_max = FRAME_X_RADIUS,
num_steps = 100, num_steps = 100,
color = PINK, color = PINK,
) )

View file

@ -1155,7 +1155,7 @@ class GraphLimitExpression(GraphScene):
delta, delta,
limit_x = 0, limit_x = 0,
dashed_line_stroke_width = 3, dashed_line_stroke_width = 3,
dashed_line_length = 2*SPACE_Y_RADIUS, dashed_line_length = FRAME_HEIGHT,
input_range_color = YELLOW, input_range_color = YELLOW,
input_range_stroke_width = 6, input_range_stroke_width = 6,
): ):
@ -1239,11 +1239,11 @@ class LimitCounterExample(GraphLimitExpression):
"x_min" : -8, "x_min" : -8,
"x_max" : 8, "x_max" : 8,
"x_labeled_nums" : range(-8, 10, 2), "x_labeled_nums" : range(-8, 10, 2),
"x_axis_width" : 2*SPACE_X_RADIUS - LARGE_BUFF, "x_axis_width" : FRAME_WIDTH - LARGE_BUFF,
"y_min" : -4, "y_min" : -4,
"y_max" : 4, "y_max" : 4,
"y_labeled_nums" : range(-2, 4, 1), "y_labeled_nums" : range(-2, 4, 1),
"y_axis_height" : 2*SPACE_Y_RADIUS+2*LARGE_BUFF, "y_axis_height" : FRAME_HEIGHT+2*LARGE_BUFF,
"graph_origin" : DOWN, "graph_origin" : DOWN,
"graph_color" : BLUE, "graph_color" : BLUE,
"hole_radius" : 0.075, "hole_radius" : 0.075,
@ -1614,7 +1614,7 @@ class EpsilonDeltaExample(GraphLimitExpression, ZoomedScene):
def get_epsilon_group(self, epsilon, limit_value = 12): def get_epsilon_group(self, epsilon, limit_value = 12):
result = VGroup() result = VGroup()
line_length = 2*SPACE_Y_RADIUS line_length = FRAME_HEIGHT
lines = [ lines = [
Line( Line(
ORIGIN, line_length*RIGHT, ORIGIN, line_length*RIGHT,
@ -1838,12 +1838,12 @@ class TheoryHeavy(TeacherStudentsScene):
class LHopitalExample(LimitCounterExample, PiCreatureScene, ZoomedScene, ReconfigurableScene): class LHopitalExample(LimitCounterExample, PiCreatureScene, ZoomedScene, ReconfigurableScene):
CONFIG = { CONFIG = {
"graph_origin" : ORIGIN, "graph_origin" : ORIGIN,
"x_axis_width" : 2*SPACE_X_RADIUS, "x_axis_width" : FRAME_WIDTH,
"x_min" : -5, "x_min" : -5,
"x_max" : 5, "x_max" : 5,
"x_labeled_nums" : range(-6, 8, 2), "x_labeled_nums" : range(-6, 8, 2),
"x_axis_label" : "$x$", "x_axis_label" : "$x$",
"y_axis_height" : 2*SPACE_Y_RADIUS, "y_axis_height" : FRAME_HEIGHT,
"y_min" : -3.1, "y_min" : -3.1,
"y_max" : 3.1, "y_max" : 3.1,
"y_bottom_tick" : -4, "y_bottom_tick" : -4,
@ -2028,7 +2028,7 @@ class LHopitalExample(LimitCounterExample, PiCreatureScene, ZoomedScene, Reconfi
rhs = TexMobject("= %.4f\\dots"%result) rhs = TexMobject("= %.4f\\dots"%result)
rhs.next_to(label, RIGHT) rhs.next_to(label, RIGHT)
approx_group = VGroup(label, rhs) approx_group = VGroup(label, rhs)
approx_group.scale_to_fit_width(SPACE_X_RADIUS-2*MED_LARGE_BUFF) approx_group.scale_to_fit_width(FRAME_X_RADIUS-2*MED_LARGE_BUFF)
approx_group.next_to(ORIGIN, UP, buff = MED_LARGE_BUFF) approx_group.next_to(ORIGIN, UP, buff = MED_LARGE_BUFF)
approx_group.to_edge(RIGHT) approx_group.to_edge(RIGHT)
@ -2115,8 +2115,8 @@ class LHopitalExample(LimitCounterExample, PiCreatureScene, ZoomedScene, Reconfi
) )
fader = VGroup(*[ fader = VGroup(*[
Rectangle( Rectangle(
width = 2*SPACE_X_RADIUS, width = FRAME_WIDTH,
height = 2*SPACE_Y_RADIUS, height = FRAME_HEIGHT,
stroke_width = 0, stroke_width = 0,
fill_opacity = 0.75, fill_opacity = 0.75,
fill_color = BLACK, fill_color = BLACK,
@ -2721,7 +2721,7 @@ class GeneralLHoptial(LHopitalExample):
"``", "L'Hôpital's", " rule", "''", "``", "L'Hôpital's", " rule", "''",
arg_separator = "" arg_separator = ""
) )
name.shift(SPACE_X_RADIUS*RIGHT/2) name.shift(FRAME_X_RADIUS*RIGHT/2)
name.to_edge(UP) name.to_edge(UP)
self.play(Write(lhs)) self.play(Write(lhs))

View file

@ -106,7 +106,7 @@ class Chapter8OpeningQuote(OpeningQuote, PiCreatureScene):
result.highlight_by_tex("h", GREEN, substring = False) result.highlight_by_tex("h", GREEN, substring = False)
result.highlight_by_tex("d\\theta", GREEN) result.highlight_by_tex("d\\theta", GREEN)
result.scale_to_fit_width(2*SPACE_X_RADIUS - 2*MED_SMALL_BUFF) result.scale_to_fit_width(FRAME_WIDTH - 2*MED_SMALL_BUFF)
return result return result
class ThisVideo(TeacherStudentsScene): class ThisVideo(TeacherStudentsScene):
@ -372,7 +372,7 @@ class Chapter2Wrapper(Scene):
title = TextMobject(self.title) title = TextMobject(self.title)
title.to_edge(UP) title.to_edge(UP)
rect = Rectangle(width = 16, height = 9, color = WHITE) rect = Rectangle(width = 16, height = 9, color = WHITE)
rect.scale_to_fit_height(1.5*SPACE_Y_RADIUS) rect.scale_to_fit_height(1.5*FRAME_Y_RADIUS)
rect.next_to(title, DOWN) rect.next_to(title, DOWN)
self.add(title) self.add(title)
@ -1399,7 +1399,7 @@ class CarJourneyApproximation(Scene):
def construct(self): def construct(self):
points = [5*LEFT + v for v in UP, 2*DOWN] points = [5*LEFT + v for v in UP, 2*DOWN]
cars = [Car().move_to(point) for point in points] cars = [Car().move_to(point) for point in points]
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
words = [ words = [
TextMobject("Real motion (smooth)").shift(3*UP), TextMobject("Real motion (smooth)").shift(3*UP),
TextMobject(self.bottom_words).shift(0.5*DOWN), TextMobject(self.bottom_words).shift(0.5*DOWN),

View file

@ -607,7 +607,7 @@ class FiniteSample(TryToAddInfinitelyManyPoints):
buff = SMALL_BUFF, buff = SMALL_BUFF,
aligned_edge = DOWN aligned_edge = DOWN
) )
# numerator.scale_to_fit_width(SPACE_X_RADIUS) # numerator.scale_to_fit_width(FRAME_X_RADIUS)
numerator.scale(0.5) numerator.scale(0.5)
numerator.move_to(self.coords_to_point(3*np.pi/2, 0)) numerator.move_to(self.coords_to_point(3*np.pi/2, 0))
numerator.to_edge(UP) numerator.to_edge(UP)
@ -992,7 +992,7 @@ class IntegralOfSine(FiniteSample):
class Approx31(Scene): class Approx31(Scene):
def construct(self): def construct(self):
tex = TexMobject("\\approx 31") tex = TexMobject("\\approx 31")
tex.scale_to_fit_width(2*SPACE_X_RADIUS - LARGE_BUFF) tex.scale_to_fit_width(FRAME_WIDTH - LARGE_BUFF)
tex.to_edge(LEFT) tex.to_edge(LEFT)
self.play(Write(tex)) self.play(Write(tex))
self.wait(3) self.wait(3)
@ -1377,8 +1377,8 @@ class Antiderivative(AverageOfSineStart):
fill_color = BLACK, fill_color = BLACK,
fill_opacity = 0.75, fill_opacity = 0.75,
) )
big_rect.scale_to_fit_width(2*SPACE_X_RADIUS) big_rect.scale_to_fit_width(FRAME_WIDTH)
big_rect.scale_to_fit_height(2*SPACE_Y_RADIUS) big_rect.scale_to_fit_height(FRAME_HEIGHT)
morty = Mortimer() morty = Mortimer()
morty.to_corner(DOWN+RIGHT) morty.to_corner(DOWN+RIGHT)
@ -1966,7 +1966,7 @@ class LastVideoWrapper(Scene):
title.to_edge(UP) title.to_edge(UP)
rect = Rectangle(height = 9, width = 16) rect = Rectangle(height = 9, width = 16)
rect.set_stroke(WHITE) rect.set_stroke(WHITE)
rect.scale_to_fit_height(1.5*SPACE_Y_RADIUS) rect.scale_to_fit_height(1.5*FRAME_Y_RADIUS)
rect.next_to(title, DOWN) rect.next_to(title, DOWN)
self.play(Write(title), ShowCreation(rect)) self.play(Write(title), ShowCreation(rect))
@ -2146,8 +2146,8 @@ class Thumbnail(GraphScene):
fill_color = BLUE_E, fill_color = BLUE_E,
fill_opacity = 0.5, fill_opacity = 0.5,
) )
triangle.stretch_to_fit_width(2*SPACE_X_RADIUS) triangle.stretch_to_fit_width(FRAME_WIDTH)
triangle.stretch_to_fit_height(2*SPACE_Y_RADIUS) triangle.stretch_to_fit_height(FRAME_HEIGHT)
triangle.to_corner(UP+LEFT, buff = 0) triangle.to_corner(UP+LEFT, buff = 0)
alt_triangle = triangle.copy() alt_triangle = triangle.copy()

View file

@ -766,7 +766,7 @@ class SecondDerivativeAsAcceleration(Scene):
for scene in s_scene, v_scene, a_scene, j_scene for scene in s_scene, v_scene, a_scene, j_scene
] ]
for i, graph in enumerate(graphs): for i, graph in enumerate(graphs):
graph.scale_to_fit_height(SPACE_Y_RADIUS) graph.scale_to_fit_height(FRAME_Y_RADIUS)
graph.to_corner(UP+LEFT) graph.to_corner(UP+LEFT)
graph.shift(i*DOWN/2.0) graph.shift(i*DOWN/2.0)

View file

@ -245,7 +245,7 @@ class Introduction(TeacherStudentsScene):
this_video.save_state() this_video.save_state()
this_video.set_fill(opacity = 0) this_video.set_fill(opacity = 0)
this_video.center() this_video.center()
this_video.scale_to_fit_height(2*SPACE_Y_RADIUS) this_video.scale_to_fit_height(FRAME_HEIGHT)
self.this_video = this_video self.this_video = this_video
words = TextMobject( words = TextMobject(
@ -276,7 +276,7 @@ class Introduction(TeacherStudentsScene):
] ]
) )
def homotopy(x, y, z, t): def homotopy(x, y, z, t):
alpha = (0.7*x + SPACE_X_RADIUS)/(2*SPACE_X_RADIUS) alpha = (0.7*x + FRAME_X_RADIUS)/(FRAME_WIDTH)
beta = squish_rate_func(smooth, alpha-0.15, alpha+0.15)(t) beta = squish_rate_func(smooth, alpha-0.15, alpha+0.15)(t)
return (x, y - 0.3*np.sin(np.pi*beta), z) return (x, y - 0.3*np.sin(np.pi*beta), z)
self.play( self.play(
@ -372,7 +372,7 @@ class Introduction(TeacherStudentsScene):
this_video = self.this_video this_video = self.this_video
self.remove(this_video) self.remove(this_video)
this_video.generate_target() this_video.generate_target()
this_video.target.scale_to_fit_height(2*SPACE_Y_RADIUS) this_video.target.scale_to_fit_height(FRAME_HEIGHT)
this_video.target.center() this_video.target.center()
this_video.target.set_fill(opacity = 0) this_video.target.set_fill(opacity = 0)
@ -633,8 +633,8 @@ class IntroduceTinyChangeInArea(CircleScene):
self.wait() self.wait()
big_rect = Rectangle( big_rect = Rectangle(
width = 2*SPACE_X_RADIUS, width = FRAME_WIDTH,
height = 2*SPACE_Y_RADIUS, height = FRAME_HEIGHT,
fill_color = BLACK, fill_color = BLACK,
fill_opacity = 0.85, fill_opacity = 0.85,
stroke_width = 0, stroke_width = 0,
@ -1558,7 +1558,7 @@ class DerivativeAsTangentLine(ZoomedScene):
def show_tangent_lines(self): def show_tangent_lines(self):
R = self.R_to_zoom_in_on R = self.R_to_zoom_in_on
line = Line(LEFT, RIGHT).scale(SPACE_Y_RADIUS) line = Line(LEFT, RIGHT).scale(FRAME_Y_RADIUS)
line.highlight(MAROON_B) line.highlight(MAROON_B)
line.rotate(self.angle_of_tangent(R)) line.rotate(self.angle_of_tangent(R))
line.move_to(self.graph_point(R)) line.move_to(self.graph_point(R))
@ -2489,7 +2489,7 @@ class CalculusInANutshell(CircleScene):
first.set_fill(YELLOW) first.set_fill(YELLOW)
first.save_state() first.save_state()
first.center() first.center()
first.scale_to_fit_height(SPACE_Y_RADIUS*2) first.scale_to_fit_height(FRAME_Y_RADIUS*2)
first.set_fill(opacity = 0) first.set_fill(opacity = 0)
everything = VGroup(*self.get_mobjects()) everything = VGroup(*self.get_mobjects())
everything.generate_target() everything.generate_target()

View file

@ -59,7 +59,7 @@ class OpeningQuote(Scene):
""", """,
organize_left_to_right = False organize_left_to_right = False
) )
words.scale_to_fit_width(2*(SPACE_X_RADIUS-1)) words.scale_to_fit_width(2*(FRAME_X_RADIUS-1))
words.to_edge(UP) words.to_edge(UP)
for mob in words.submobjects[48:49+13]: for mob in words.submobjects[48:49+13]:
mob.highlight(GREEN) mob.highlight(GREEN)
@ -76,7 +76,7 @@ class VideoIcon(SVGMobject):
def __init__(self, **kwargs): def __init__(self, **kwargs):
SVGMobject.__init__(self, "video_icon", **kwargs) SVGMobject.__init__(self, "video_icon", **kwargs)
self.center() self.center()
self.scale_to_fit_width(2*SPACE_X_RADIUS/12.) self.scale_to_fit_width(FRAME_WIDTH/12.)
self.set_stroke(color = WHITE, width = 0) self.set_stroke(color = WHITE, width = 0)
self.set_fill(color = WHITE, opacity = 1) self.set_fill(color = WHITE, opacity = 1)
@ -271,11 +271,11 @@ class NumericVsGeometric(Scene):
geometric = TextMobject("Geometric intuition") geometric = TextMobject("Geometric intuition")
for mob in numeric, geometric: for mob in numeric, geometric:
mob.to_corner(UP+LEFT) mob.to_corner(UP+LEFT)
geometric.shift(SPACE_X_RADIUS*RIGHT) geometric.shift(FRAME_X_RADIUS*RIGHT)
hline = Line(SPACE_X_RADIUS*LEFT, SPACE_X_RADIUS*RIGHT) hline = Line(FRAME_X_RADIUS*LEFT, FRAME_X_RADIUS*RIGHT)
hline.next_to(numeric, DOWN) hline.next_to(numeric, DOWN)
hline.to_edge(LEFT, buff = 0) hline.to_edge(LEFT, buff = 0)
vline = Line(SPACE_Y_RADIUS*UP, SPACE_Y_RADIUS*DOWN) vline = Line(FRAME_Y_RADIUS*UP, FRAME_Y_RADIUS*DOWN)
for mob in hline, vline: for mob in hline, vline:
mob.highlight(GREEN) mob.highlight(GREEN)
@ -294,7 +294,7 @@ class NumericVsGeometric(Scene):
"\\\\ &=", "\\\\ &=",
matrix_to_tex_string([[1], [-1]]), matrix_to_tex_string([[1], [-1]]),
])) ]))
matrix_vector_product.scale_to_fit_width(SPACE_X_RADIUS-0.5) matrix_vector_product.scale_to_fit_width(FRAME_X_RADIUS-0.5)
matrix_vector_product.next_to(self.vline, LEFT) matrix_vector_product.next_to(self.vline, LEFT)
self.play( self.play(
@ -309,15 +309,15 @@ class NumericVsGeometric(Scene):
digest_locals(self) digest_locals(self)
def clear_way_for_geometric(self): def clear_way_for_geometric(self):
new_line = Line(SPACE_Y_RADIUS*LEFT, SPACE_Y_RADIUS*RIGHT) new_line = Line(FRAME_Y_RADIUS*LEFT, FRAME_Y_RADIUS*RIGHT)
new_line.shift((SPACE_Y_RADIUS+1)*DOWN) new_line.shift((FRAME_Y_RADIUS+1)*DOWN)
self.play( self.play(
Transform(self.vline, new_line), Transform(self.vline, new_line),
Transform(self.hline, new_line), Transform(self.hline, new_line),
ApplyMethod(self.numeric.shift, (2*SPACE_Y_RADIUS+1)*DOWN), ApplyMethod(self.numeric.shift, (FRAME_HEIGHT+1)*DOWN),
ApplyMethod( ApplyMethod(
self.matrix_vector_product.shift, self.matrix_vector_product.shift,
(2*SPACE_Y_RADIUS+1)*DOWN (FRAME_HEIGHT+1)*DOWN
), ),
ApplyMethod(self.geometric.to_edge, LEFT) ApplyMethod(self.geometric.to_edge, LEFT)
) )
@ -671,7 +671,7 @@ class LinearAlgebraIntuitions(Scene):
def construct(self): def construct(self):
title = TextMobject("Preview of core visual intuitions") title = TextMobject("Preview of core visual intuitions")
title.to_edge(UP) title.to_edge(UP)
h_line = Line(SPACE_X_RADIUS*LEFT, SPACE_X_RADIUS*RIGHT) h_line = Line(FRAME_X_RADIUS*LEFT, FRAME_X_RADIUS*RIGHT)
h_line.next_to(title, DOWN) h_line.next_to(title, DOWN)
h_line.highlight(BLUE_E) h_line.highlight(BLUE_E)
intuitions = [ intuitions = [
@ -832,7 +832,7 @@ class TableOfContents(Scene):
title = TextMobject("Essence of Linear Algebra") title = TextMobject("Essence of Linear Algebra")
title.highlight(BLUE) title.highlight(BLUE)
title.to_corner(UP+LEFT) title.to_corner(UP+LEFT)
h_line = Line(SPACE_X_RADIUS*LEFT, SPACE_X_RADIUS*RIGHT) h_line = Line(FRAME_X_RADIUS*LEFT, FRAME_X_RADIUS*RIGHT)
h_line.next_to(title, DOWN) h_line.next_to(title, DOWN)
h_line.to_edge(LEFT, buff = 0) h_line.to_edge(LEFT, buff = 0)
chapters = VMobject(*map(TextMobject, [ chapters = VMobject(*map(TextMobject, [
@ -884,7 +884,7 @@ class TableOfContents(Scene):
def series_of_videos(self, chapters): def series_of_videos(self, chapters):
icon = SVGMobject("video_icon") icon = SVGMobject("video_icon")
icon.center() icon.center()
icon.scale_to_fit_width(2*SPACE_X_RADIUS/12.) icon.scale_to_fit_width(FRAME_WIDTH/12.)
icon.set_stroke(color = WHITE, width = 0) icon.set_stroke(color = WHITE, width = 0)
icons = [icon.copy() for chapter in chapters.split()] icons = [icon.copy() for chapter in chapters.split()]
colors = Color(BLUE_A).range_to(BLUE_D, len(icons)) colors = Color(BLUE_A).range_to(BLUE_D, len(icons))

View file

@ -28,7 +28,7 @@ import random
def plane_wave_homotopy(x, y, z, t): def plane_wave_homotopy(x, y, z, t):
norm = np.linalg.norm([x, y]) norm = np.linalg.norm([x, y])
tau = interpolate(5, -5, t) + norm/SPACE_X_RADIUS tau = interpolate(5, -5, t) + norm/FRAME_X_RADIUS
alpha = sigmoid(tau) alpha = sigmoid(tau)
return [x, y + 0.5*np.sin(2*np.pi*alpha)-t*SMALL_BUFF/2, z] return [x, y + 0.5*np.sin(2*np.pi*alpha)-t*SMALL_BUFF/2, z]
@ -299,7 +299,7 @@ class DifferentConceptions(Scene):
house, square_footage, price, brackets, brace, house, square_footage, price, brackets, brace,
two_dimensional, title two_dimensional, title
) )
self.play(ApplyMethod(everything.shift, 2*SPACE_X_RADIUS*LEFT)) self.play(ApplyMethod(everything.shift, FRAME_WIDTH*LEFT))
self.remove(everything) self.remove(everything)
@ -1101,10 +1101,10 @@ class FollowingVideos(UpcomingSeriesOfVidoes):
everything.remove(last_video) everything.remove(last_video)
big_last_video = last_video.copy() big_last_video = last_video.copy()
big_last_video.center() big_last_video.center()
big_last_video.scale_to_fit_height(2.5*SPACE_Y_RADIUS) big_last_video.scale_to_fit_height(2.5*FRAME_Y_RADIUS)
big_last_video.set_fill(opacity = 0) big_last_video.set_fill(opacity = 0)
self.play( self.play(
ApplyMethod(everything.shift, 2*SPACE_X_RADIUS*LEFT), ApplyMethod(everything.shift, FRAME_WIDTH*LEFT),
Transform(last_video, big_last_video), Transform(last_video, big_last_video),
run_time = 2 run_time = 2
) )

View file

@ -42,7 +42,7 @@ class OpeningQuote(Scene):
) )
words.highlight_by_tex("mathematics", BLUE) words.highlight_by_tex("mathematics", BLUE)
words.highlight_by_tex("music", BLUE) words.highlight_by_tex("music", BLUE)
words.scale_to_fit_width(2*SPACE_X_RADIUS - 2) words.scale_to_fit_width(FRAME_WIDTH - 2)
words.to_edge(UP) words.to_edge(UP)
author = TextMobject("-Serge Lang") author = TextMobject("-Serge Lang")
author.highlight(YELLOW) author.highlight(YELLOW)
@ -127,13 +127,13 @@ class ManyPrerequisites(Scene):
def construct(self): def construct(self):
title = TextMobject("Many prerequisites") title = TextMobject("Many prerequisites")
title.to_edge(UP) title.to_edge(UP)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
h_line.next_to(title, DOWN) h_line.next_to(title, DOWN)
self.add(title) self.add(title)
self.play(ShowCreation(h_line)) self.play(ShowCreation(h_line))
rect = Rectangle(height = 9, width = 16, color = BLUE) rect = Rectangle(height = 9, width = 16, color = BLUE)
rect.scale_to_fit_width(SPACE_X_RADIUS-2) rect.scale_to_fit_width(FRAME_X_RADIUS-2)
rects = [rect]+[rect.copy() for i in range(3)] rects = [rect]+[rect.copy() for i in range(3)]
words = [ words = [
"Linear transformations", "Linear transformations",
@ -148,7 +148,7 @@ class ManyPrerequisites(Scene):
Matrix(np.array(rects).reshape((2, 2))) Matrix(np.array(rects).reshape((2, 2)))
rects = VGroup(*rects) rects = VGroup(*rects)
rects.scale_to_fit_height(2*SPACE_Y_RADIUS - 1.5) rects.scale_to_fit_height(FRAME_HEIGHT - 1.5)
rects.next_to(h_line, DOWN, buff = MED_SMALL_BUFF) rects.next_to(h_line, DOWN, buff = MED_SMALL_BUFF)
self.play(Write(rects[0])) self.play(Write(rects[0]))
@ -290,7 +290,7 @@ class IHatAsEigenVector(ExampleTranformationScene):
x_axis = self.plane.axes[0] x_axis = self.plane.axes[0]
targets = [ targets = [
self.i_hat.copy().scale(val) self.i_hat.copy().scale(val)
for val in -SPACE_X_RADIUS, SPACE_X_RADIUS, 1 for val in -FRAME_X_RADIUS, FRAME_X_RADIUS, 1
] ]
lines = [ lines = [
Line(v1.get_end(), v2.get_end(), color = YELLOW) Line(v1.get_end(), v2.get_end(), color = YELLOW)
@ -329,7 +329,7 @@ class AllXAxisVectorsAreEigenvectors(ExampleTranformationScene):
def construct(self): def construct(self):
vectors = VGroup(*[ vectors = VGroup(*[
self.add_vector(u*x*RIGHT, animate = False) self.add_vector(u*x*RIGHT, animate = False)
for x in reversed(range(1, int(SPACE_X_RADIUS)+1)) for x in reversed(range(1, int(FRAME_X_RADIUS)+1))
for u in -1, 1 for u in -1, 1
]) ])
vectors.gradient_highlight(YELLOW, X_COLOR) vectors.gradient_highlight(YELLOW, X_COLOR)
@ -411,14 +411,14 @@ class NameEigenvectorsAndEigenvalues(ExampleTranformationScene):
self.foreground_mobjects.remove(self.matrix) self.foreground_mobjects.remove(self.matrix)
x_vectors = VGroup(*[ x_vectors = VGroup(*[
self.add_vector(u*x*RIGHT, animate = False) self.add_vector(u*x*RIGHT, animate = False)
for x in range(int(SPACE_X_RADIUS)+1, 0, -1) for x in range(int(FRAME_X_RADIUS)+1, 0, -1)
for u in -1, 1 for u in -1, 1
]) ])
x_vectors.gradient_highlight(YELLOW, X_COLOR) x_vectors.gradient_highlight(YELLOW, X_COLOR)
self.remove(x_vectors) self.remove(x_vectors)
sneak_vectors = VGroup(*[ sneak_vectors = VGroup(*[
self.add_vector(u*x*(LEFT+UP), animate = False) self.add_vector(u*x*(LEFT+UP), animate = False)
for x in np.arange(int(SPACE_Y_RADIUS), 0, -0.5) for x in np.arange(int(FRAME_Y_RADIUS), 0, -0.5)
for u in -1, 1 for u in -1, 1
]) ])
sneak_vectors.gradient_highlight(MAROON_B, YELLOW) sneak_vectors.gradient_highlight(MAROON_B, YELLOW)
@ -452,8 +452,8 @@ class NameEigenvectorsAndEigenvalues(ExampleTranformationScene):
non_eigen = Vector([1, 1], color = PINK) non_eigen = Vector([1, 1], color = PINK)
non_eigen_span = Line( non_eigen_span = Line(
-SPACE_Y_RADIUS*non_eigen.get_end(), -FRAME_Y_RADIUS*non_eigen.get_end(),
SPACE_Y_RADIUS*non_eigen.get_end(), FRAME_Y_RADIUS*non_eigen.get_end(),
color = RED color = RED
) )
non_eigen_words = TextMobject(""" non_eigen_words = TextMobject("""
@ -504,8 +504,8 @@ class EigenvalueNegativeOneHalf(LinearTransformationScene):
CONFIG = { CONFIG = {
"t_matrix" : [[0.5, -1], [-1, 0.5]], "t_matrix" : [[0.5, -1], [-1, 0.5]],
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_X_RADIUS, "y_radius" : FRAME_WIDTH,
"secondary_line_ratio" : 0 "secondary_line_ratio" : 0
}, },
"include_background_plane" : False "include_background_plane" : False
@ -523,8 +523,8 @@ class EigenvalueNegativeOneHalf(LinearTransformationScene):
words.add_background_rectangle() words.add_background_rectangle()
words.next_to(vector.get_end(), RIGHT) words.next_to(vector.get_end(), RIGHT)
span = Line( span = Line(
-SPACE_Y_RADIUS*vector.get_end(), -FRAME_Y_RADIUS*vector.get_end(),
SPACE_Y_RADIUS*vector.get_end(), FRAME_Y_RADIUS*vector.get_end(),
color = MAROON_B color = MAROON_B
) )
@ -1029,8 +1029,8 @@ class TweakLambda(LinearTransformationScene):
"t_matrix" : [[2, 1], [2, 3]], "t_matrix" : [[2, 1], [2, 3]],
"include_background_plane" : False, "include_background_plane" : False,
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_X_RADIUS, "y_radius" : FRAME_WIDTH,
"secondary_line_ratio" : 1 "secondary_line_ratio" : 1
}, },
} }
@ -1155,8 +1155,8 @@ class ShowEigenVectorAfterComputing(LinearTransformationScene):
"v_coords" : [2, -1], "v_coords" : [2, -1],
"include_background_plane" : False, "include_background_plane" : False,
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_X_RADIUS, "y_radius" : FRAME_WIDTH,
"secondary_line_ratio" : 1 "secondary_line_ratio" : 1
}, },
} }
@ -1624,7 +1624,7 @@ class SolveRotationEigenvalues(Rotate90Degrees):
transformation. transformation.
""", alignment = "") """, alignment = "")
interesting_tidbit.add_background_rectangle() interesting_tidbit.add_background_rectangle()
interesting_tidbit.scale_to_fit_height(SPACE_Y_RADIUS-0.5) interesting_tidbit.scale_to_fit_height(FRAME_Y_RADIUS-0.5)
interesting_tidbit.to_corner(DOWN+RIGHT) interesting_tidbit.to_corner(DOWN+RIGHT)
self.play(FadeIn(interesting_tidbit)) self.play(FadeIn(interesting_tidbit))
self.wait() self.wait()
@ -1634,8 +1634,8 @@ class ShearExample(RevisitExampleTransformation):
"t_matrix" : [[1, 0], [1, 1]], "t_matrix" : [[1, 0], [1, 1]],
"include_background_plane" : False, "include_background_plane" : False,
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_Y_RADIUS, "y_radius" : FRAME_HEIGHT,
"secondary_line_ratio" : 1 "secondary_line_ratio" : 1
}, },
} }
@ -1655,7 +1655,7 @@ class ShearExample(RevisitExampleTransformation):
def point_out_eigenvectors(self): def point_out_eigenvectors(self):
vectors = VGroup(*[ vectors = VGroup(*[
self.add_vector(u*x*RIGHT, animate = False) self.add_vector(u*x*RIGHT, animate = False)
for x in range(int(SPACE_X_RADIUS)+1, 0, -1) for x in range(int(FRAME_X_RADIUS)+1, 0, -1)
for u in -1, 1 for u in -1, 1
]) ])
vectors.gradient_highlight(YELLOW, X_COLOR) vectors.gradient_highlight(YELLOW, X_COLOR)
@ -2115,8 +2115,8 @@ class ChangeToEigenBasis(ExampleTranformationScene):
"show_basis_vectors" : False, "show_basis_vectors" : False,
"include_background_plane" : False, "include_background_plane" : False,
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_Y_RADIUS, "y_radius" : FRAME_HEIGHT,
"secondary_line_ratio" : 0 "secondary_line_ratio" : 0
}, },
} }

View file

@ -62,7 +62,7 @@ class OpeningQuote(Scene):
) )
words.highlight_by_tex("axioms,", BLUE) words.highlight_by_tex("axioms,", BLUE)
words.highlight_by_tex("difficult for the uninitiated", RED) words.highlight_by_tex("difficult for the uninitiated", RED)
words.scale_to_fit_width(2*SPACE_X_RADIUS - 2) words.scale_to_fit_width(FRAME_WIDTH - 2)
words.to_edge(UP) words.to_edge(UP)
author = TextMobject("-Vladmir Arnold") author = TextMobject("-Vladmir Arnold")
author.highlight(YELLOW) author.highlight(YELLOW)
@ -96,8 +96,8 @@ class WhatIsA2DVector(LinearTransformationScene):
"show_basis_vectors" : False, "show_basis_vectors" : False,
"include_background_plane" : False, "include_background_plane" : False,
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_Y_RADIUS, "y_radius" : FRAME_HEIGHT,
"secondary_line_ratio" : 1 "secondary_line_ratio" : 1
}, },
} }
@ -340,8 +340,8 @@ class ManyCoordinateSystems(LinearTransformationScene):
"v_coords" : [2, 1], "v_coords" : [2, 1],
"include_background_plane" : False, "include_background_plane" : False,
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_X_RADIUS, "y_radius" : FRAME_WIDTH,
"secondary_line_ratio" : 1 "secondary_line_ratio" : 1
}, },
} }
@ -422,8 +422,8 @@ class DeterminantAndEigenvectorDontCare(LinearTransformationScene):
"include_background_plane" : False, "include_background_plane" : False,
"show_basis_vectors" : False, "show_basis_vectors" : False,
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_Y_RADIUS, "y_radius" : FRAME_HEIGHT,
"secondary_line_ratio" : 1 "secondary_line_ratio" : 1
}, },
} }
@ -679,7 +679,7 @@ class AddTwoFunctions(FunctionGraphScene):
curr_x_point = f_lines[0].get_start() curr_x_point = f_lines[0].get_start()
sum_def = self.get_sum_definition(DecimalNumber(curr_x_point[0])) sum_def = self.get_sum_definition(DecimalNumber(curr_x_point[0]))
# sum_def.scale_to_fit_width(SPACE_X_RADIUS-1) # sum_def.scale_to_fit_width(FRAME_X_RADIUS-1)
sum_def.to_corner(UP+LEFT) sum_def.to_corner(UP+LEFT)
arrow = Arrow(sum_def[2].get_bottom(), curr_x_point, color = WHITE) arrow = Arrow(sum_def[2].get_bottom(), curr_x_point, color = WHITE)
prefix = sum_def[0] prefix = sum_def[0]
@ -924,7 +924,7 @@ class FromVectorsToFunctions(VectorScene):
def bring_in_functions(self): def bring_in_functions(self):
everything = VGroup(*self.get_mobjects()) everything = VGroup(*self.get_mobjects())
axes = Axes() axes = Axes()
axes.shift(2*SPACE_X_RADIUS*LEFT) axes.shift(FRAME_WIDTH*LEFT)
fg_scene_config = FunctionGraphScene.CONFIG fg_scene_config = FunctionGraphScene.CONFIG
graph = FunctionGraph(fg_scene_config["default_functions"][0]) graph = FunctionGraph(fg_scene_config["default_functions"][0])
@ -952,7 +952,7 @@ class FromVectorsToFunctions(VectorScene):
)) ))
self.wait() self.wait()
self.play(*[ self.play(*[
ApplyMethod(mob.shift, 2*SPACE_X_RADIUS*RIGHT) ApplyMethod(mob.shift, FRAME_WIDTH*RIGHT)
for mob in axes, everything for mob in axes, everything
] + [Animation(words)] ] + [Animation(words)]
) )
@ -1055,8 +1055,8 @@ class ManyFunctions(FunctionGraphScene):
def func(x): def func(x):
return sum([c*x**(i) for i, c, in enumerate(coefs)]) return sum([c*x**(i) for i, c, in enumerate(coefs)])
graph = self.get_function_graph(func, animate = False) graph = self.get_function_graph(func, animate = False)
if graph.get_height() > 2*SPACE_Y_RADIUS: if graph.get_height() > FRAME_HEIGHT:
graph.stretch_to_fit_height(2*SPACE_Y_RADIUS) graph.stretch_to_fit_height(FRAME_HEIGHT)
graph.shift(graph.point_from_proportion(0.5)[1]*DOWN) graph.shift(graph.point_from_proportion(0.5)[1]*DOWN)
graph.shift(interpolate(-3, 3, random.random())*UP) graph.shift(interpolate(-3, 3, random.random())*UP)
graph.highlight(random_bright_color()) graph.highlight(random_bright_color())
@ -1086,8 +1086,8 @@ class FormalDefinitionOfLinear(LinearTransformationScene):
"w_coords" : [1, 1], "w_coords" : [1, 1],
"v_coords" : [1, -2], "v_coords" : [1, -2],
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_Y_RADIUS, "y_radius" : FRAME_HEIGHT,
"secondary_line_ratio" : 1 "secondary_line_ratio" : 1
}, },
} }
@ -1104,7 +1104,7 @@ class FormalDefinitionOfLinear(LinearTransformationScene):
) )
title.add_background_rectangle() title.add_background_rectangle()
title.to_edge(UP) title.to_edge(UP)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
h_line.next_to(title, DOWN) h_line.next_to(title, DOWN)
v_tex, w_tex = ["\\vec{\\textbf{%s}}"%s for s in "vw"] v_tex, w_tex = ["\\vec{\\textbf{%s}}"%s for s in "vw"]
@ -1449,7 +1449,7 @@ class PolynomialsHaveArbitrarilyLargeDegree(Scene):
arrow = TexMobject("\\Rightarrow").scale(1.5) arrow = TexMobject("\\Rightarrow").scale(1.5)
brace = Brace( brace = Brace(
Line(UP, DOWN).scale(SPACE_Y_RADIUS).shift(SPACE_X_RADIUS*RIGHT), Line(UP, DOWN).scale(FRAME_Y_RADIUS).shift(FRAME_X_RADIUS*RIGHT),
LEFT LEFT
) )
words = TextMobject("Infinitely many") words = TextMobject("Infinitely many")
@ -1936,12 +1936,12 @@ class CompareTermsInLinearAlgebraToFunction(Scene):
r_title = TextMobject("Alternate names when \\\\ applied to functions") r_title = TextMobject("Alternate names when \\\\ applied to functions")
for title, vect in (l_title, LEFT), (r_title, RIGHT): for title, vect in (l_title, LEFT), (r_title, RIGHT):
title.to_edge(UP) title.to_edge(UP)
title.shift(vect*SPACE_X_RADIUS/2) title.shift(vect*FRAME_X_RADIUS/2)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
h_line.shift( h_line.shift(
VGroup(l_title, r_title).get_bottom()[1]*UP + SMALL_BUFF*DOWN VGroup(l_title, r_title).get_bottom()[1]*UP + SMALL_BUFF*DOWN
) )
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS) v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
VGroup(h_line, v_line).highlight(BLUE) VGroup(h_line, v_line).highlight(BLUE)
self.add(l_title, r_title) self.add(l_title, r_title)
@ -1961,7 +1961,7 @@ class CompareTermsInLinearAlgebraToFunction(Scene):
for concepts, vect in (lin_alg_concepts, LEFT), (function_concepts, RIGHT): for concepts, vect in (lin_alg_concepts, LEFT), (function_concepts, RIGHT):
concepts.arrange_submobjects(DOWN, buff = MED_LARGE_BUFF, aligned_edge = LEFT) concepts.arrange_submobjects(DOWN, buff = MED_LARGE_BUFF, aligned_edge = LEFT)
concepts.next_to(h_line, DOWN, buff = LARGE_BUFF) concepts.next_to(h_line, DOWN, buff = LARGE_BUFF)
concepts.shift(vect*SPACE_X_RADIUS/2) concepts.shift(vect*FRAME_X_RADIUS/2)
concepts.gradient_highlight(YELLOW_B, YELLOW_C) concepts.gradient_highlight(YELLOW_B, YELLOW_C)
for concept in concepts: for concept in concepts:
@ -2049,20 +2049,20 @@ class ShowVectorSpaces(Scene):
def construct(self): def construct(self):
title = TextMobject("Vector spaces") title = TextMobject("Vector spaces")
title.to_edge(UP) title.to_edge(UP)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
h_line.next_to(title, DOWN) h_line.next_to(title, DOWN)
v_lines = [ v_lines = [
Line( Line(
h_line.get_center(), SPACE_Y_RADIUS*DOWN h_line.get_center(), FRAME_Y_RADIUS*DOWN
).shift(vect*SPACE_X_RADIUS/3.) ).shift(vect*FRAME_X_RADIUS/3.)
for vect in LEFT, RIGHT for vect in LEFT, RIGHT
] ]
vectors = self.get_vectors() vectors = self.get_vectors()
vectors.shift(LEFT*SPACE_X_RADIUS*(2./3)) vectors.shift(LEFT*FRAME_X_RADIUS*(2./3))
arrays = self.get_arrays() arrays = self.get_arrays()
functions = self.get_functions() functions = self.get_functions()
functions.shift(RIGHT*SPACE_X_RADIUS*(2./3)) functions.shift(RIGHT*FRAME_X_RADIUS*(2./3))
self.add(h_line, *v_lines) self.add(h_line, *v_lines)
self.play(ShowCreation( self.play(ShowCreation(
@ -2112,7 +2112,7 @@ class ShowVectorSpaces(Scene):
lambda x : x**2 - 1, lambda x : x**2 - 1,
] ]
]) ])
functions.stretch_to_fit_width(SPACE_X_RADIUS/2.) functions.stretch_to_fit_width(FRAME_X_RADIUS/2.)
functions.stretch_to_fit_height(6) functions.stretch_to_fit_height(6)
functions.gradient_highlight(YELLOW, MAROON_B) functions.gradient_highlight(YELLOW, MAROON_B)
functions.center() functions.center()
@ -2185,7 +2185,7 @@ class ListAxioms(Scene):
def construct(self): def construct(self):
title = TextMobject("Rules for vectors addition and scaling") title = TextMobject("Rules for vectors addition and scaling")
title.to_edge(UP) title.to_edge(UP)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
h_line.next_to(title, DOWN) h_line.next_to(title, DOWN)
self.add(title, h_line) self.add(title, h_line)
@ -2244,7 +2244,7 @@ class ListAxioms(Scene):
DOWN, buff = MED_LARGE_BUFF, DOWN, buff = MED_LARGE_BUFF,
aligned_edge = LEFT aligned_edge = LEFT
) )
axioms.scale_to_fit_width(2*SPACE_X_RADIUS-1) axioms.scale_to_fit_width(FRAME_WIDTH-1)
axioms.next_to(h_line, DOWN, buff = MED_SMALL_BUFF) axioms.next_to(h_line, DOWN, buff = MED_SMALL_BUFF)
self.play(FadeIn( self.play(FadeIn(
@ -2256,7 +2256,7 @@ class ListAxioms(Scene):
axioms_word = TextMobject("``Axioms''") axioms_word = TextMobject("``Axioms''")
axioms_word.highlight(YELLOW) axioms_word.highlight(YELLOW)
axioms_word.scale(2) axioms_word.scale(2)
axioms_word.shift(SPACE_X_RADIUS*RIGHT/2, SPACE_Y_RADIUS*DOWN/2) axioms_word.shift(FRAME_X_RADIUS*RIGHT/2, FRAME_Y_RADIUS*DOWN/2)
self.play(Write(axioms_word, run_time = 3)) self.play(Write(axioms_word, run_time = 3))
self.wait() self.wait()
@ -2324,7 +2324,7 @@ class VectorSpaceOfPiCreatures(Scene):
for y in range(4) for y in range(4)
]).arrange_submobjects(DOWN, buff = 1.5) ]).arrange_submobjects(DOWN, buff = 1.5)
creatures = VGroup(*it.chain(*creatures)) creatures = VGroup(*it.chain(*creatures))
creatures.scale_to_fit_height(2*SPACE_Y_RADIUS-1) creatures.scale_to_fit_height(FRAME_HEIGHT-1)
for pi in creatures: for pi in creatures:
pi.change_mode(random.choice([ pi.change_mode(random.choice([
"pondering", "pondering", "pondering", "pondering",

View file

@ -206,7 +206,7 @@ class CoordinatesAsScalarsExample2(CoordinatesAsScalars):
are the ``basis vectors'' \\\\ are the ``basis vectors'' \\\\
of the $xy$ coordinate system of the $xy$ coordinate system
""") """)
text.scale_to_fit_width(SPACE_X_RADIUS-1) text.scale_to_fit_width(FRAME_X_RADIUS-1)
text.to_corner(UP+RIGHT) text.to_corner(UP+RIGHT)
VMobject(*text.split()[:2]).highlight(X_COLOR) VMobject(*text.split()[:2]).highlight(X_COLOR)
VMobject(*text.split()[5:7]).highlight(Y_COLOR) VMobject(*text.split()[5:7]).highlight(Y_COLOR)
@ -460,7 +460,7 @@ class NameLinearCombinations(Scene):
]) ])
words.split()[1].highlight(v_color) words.split()[1].highlight(v_color)
words.split()[3].highlight(w_color) words.split()[3].highlight(w_color)
words.scale_to_fit_width(2*SPACE_X_RADIUS - 1) words.scale_to_fit_width(FRAME_WIDTH - 1)
words.to_edge(UP) words.to_edge(UP)
equation = TexMobject([ equation = TexMobject([
@ -601,7 +601,7 @@ class DefineSpan(Scene):
$\\vec{\\textbf{w}}$ is the \\\\ set of all their $\\vec{\\textbf{w}}$ is the \\\\ set of all their
linear combinations. linear combinations.
""") """)
definition.scale_to_fit_width(2*SPACE_X_RADIUS-1) definition.scale_to_fit_width(FRAME_WIDTH-1)
definition.to_edge(UP) definition.to_edge(UP)
def_mobs = np.array(definition.split()) def_mobs = np.array(definition.split())
VMobject(*def_mobs[4:4+4]).highlight(PINK) VMobject(*def_mobs[4:4+4]).highlight(PINK)
@ -708,7 +708,7 @@ class VectorsOnALine(VectorsToDotsScene):
return [ return [
Vector(a*np.array([1.5, 1])) Vector(a*np.array([1.5, 1]))
for a in np.linspace( for a in np.linspace(
-SPACE_Y_RADIUS, SPACE_Y_RADIUS, self.num_vectors -FRAME_Y_RADIUS, FRAME_Y_RADIUS, self.num_vectors
) )
] ]
@ -732,18 +732,18 @@ class VectorsInThePlane(VectorsToDotsScene):
def get_vectors(self): def get_vectors(self):
return [ return [
Vector([x, y]) Vector([x, y])
for x in np.arange(-int(SPACE_X_RADIUS)-0.5, int(SPACE_X_RADIUS)+0.5) for x in np.arange(-int(FRAME_X_RADIUS)-0.5, int(FRAME_X_RADIUS)+0.5)
for y in np.arange(-int(SPACE_Y_RADIUS)-0.5, int(SPACE_Y_RADIUS)+0.5) for y in np.arange(-int(FRAME_Y_RADIUS)-0.5, int(FRAME_Y_RADIUS)+0.5)
] ]
def play_final_animation(self, vectors, rate_functions): def play_final_animation(self, vectors, rate_functions):
h_line = Line( h_line = Line(
SPACE_X_RADIUS*RIGHT, SPACE_X_RADIUS*LEFT, FRAME_X_RADIUS*RIGHT, FRAME_X_RADIUS*LEFT,
stroke_width = 0.5, stroke_width = 0.5,
color = BLUE_E color = BLUE_E
) )
v_line = Line( v_line = Line(
SPACE_Y_RADIUS*UP, SPACE_Y_RADIUS*DOWN, FRAME_Y_RADIUS*UP, FRAME_Y_RADIUS*DOWN,
stroke_width = 0.5, stroke_width = 0.5,
color = BLUE_E color = BLUE_E
) )
@ -834,7 +834,7 @@ class LinearCombinationOfThreeVectorsText(Scene):
VMobject(*text.split()[-9:-7]).highlight(BLUE) VMobject(*text.split()[-9:-7]).highlight(BLUE)
VMobject(*text.split()[-3:-1]).highlight(RED_C) VMobject(*text.split()[-3:-1]).highlight(RED_C)
VMobject(*text.split()[:17]).highlight(GREEN) VMobject(*text.split()[:17]).highlight(GREEN)
text.scale_to_fit_width(2*SPACE_X_RADIUS - 1) text.scale_to_fit_width(FRAME_WIDTH - 1)
text.to_edge(UP) text.to_edge(UP)
equation = TextMobject("""$ equation = TextMobject("""$
@ -896,7 +896,7 @@ class SpanCasesWords(Scene):
VMobject(*words2.split()[10:13]).highlight(RED) VMobject(*words2.split()[10:13]).highlight(RED)
for words in words1, words2: for words in words1, words2:
words.scale_to_fit_width(2*SPACE_X_RADIUS - 1) words.scale_to_fit_width(FRAME_WIDTH - 1)
self.play(Write(words1)) self.play(Write(words1))
self.wait() self.wait()
self.play(Transform(words1, words2)) self.play(Transform(words1, words2))
@ -933,7 +933,7 @@ class LinearDependentWords(Scene):
rest.highlight(YELLOW) rest.highlight(YELLOW)
for words in words1, words2: for words in words1, words2:
words.scale_to_fit_width(2*SPACE_X_RADIUS - 1) words.scale_to_fit_width(FRAME_WIDTH - 1)
self.play(Write(words1)) self.play(Write(words1))
self.wait() self.wait()
@ -1253,7 +1253,7 @@ class TechnicalDefinitionOfBasis(Scene):
b.highlight(BLUE) b.highlight(BLUE)
li.highlight(GREEN) li.highlight(GREEN)
s.highlight(YELLOW) s.highlight(YELLOW)
definition.scale_to_fit_width(2*SPACE_X_RADIUS-1) definition.scale_to_fit_width(FRAME_WIDTH-1)
self.add(title) self.add(title)
self.play(Write(definition)) self.play(Write(definition))

View file

@ -33,7 +33,7 @@ class OpeningQuote(Scene):
"is. You have to", "is. You have to",
"see it for yourself.", "see it for yourself.",
]) ])
words.scale_to_fit_width(2*SPACE_X_RADIUS - 2) words.scale_to_fit_width(FRAME_WIDTH - 2)
words.to_edge(UP) words.to_edge(UP)
words.split()[1].highlight(GREEN) words.split()[1].highlight(GREEN)
words.split()[3].highlight(BLUE) words.split()[3].highlight(BLUE)
@ -71,7 +71,7 @@ class Introduction(TeacherStudentsScene):
everything = VMobject(*self.get_mobjects()) everything = VMobject(*self.get_mobjects())
def spread_out(p): def spread_out(p):
p = p + 2*DOWN p = p + 2*DOWN
return (SPACE_X_RADIUS+SPACE_Y_RADIUS)*p/np.linalg.norm(p) return (FRAME_X_RADIUS+FRAME_Y_RADIUS)*p/np.linalg.norm(p)
self.play( self.play(
ApplyPointwiseFunction(spread_out, everything), ApplyPointwiseFunction(spread_out, everything),
ApplyFunction( ApplyFunction(
@ -216,7 +216,7 @@ class ThinkinfOfFunctionsAsGraphs(VectorScene):
self.wait() self.wait()
def collapse_func(p): def collapse_func(p):
return np.dot(p, [RIGHT, RIGHT, OUT]) + (SPACE_Y_RADIUS+1)*DOWN return np.dot(p, [RIGHT, RIGHT, OUT]) + (FRAME_Y_RADIUS+1)*DOWN
self.play( self.play(
ApplyPointwiseFunction(collapse_func, axes), ApplyPointwiseFunction(collapse_func, axes),
ApplyPointwiseFunction(collapse_func, graph), ApplyPointwiseFunction(collapse_func, graph),
@ -267,8 +267,8 @@ class TransformManyVectors(LinearTransformationScene):
self.lock_in_faded_grid() self.lock_in_faded_grid()
vectors = VMobject(*[ vectors = VMobject(*[
Vector([x, y]) Vector([x, y])
for x in np.arange(-int(SPACE_X_RADIUS)+0.5, int(SPACE_X_RADIUS)+0.5) for x in np.arange(-int(FRAME_X_RADIUS)+0.5, int(FRAME_X_RADIUS)+0.5)
for y in np.arange(-int(SPACE_Y_RADIUS)+0.5, int(SPACE_Y_RADIUS)+0.5) for y in np.arange(-int(FRAME_Y_RADIUS)+0.5, int(FRAME_Y_RADIUS)+0.5)
]) ])
vectors.submobject_gradient_highlight(PINK, YELLOW) vectors.submobject_gradient_highlight(PINK, YELLOW)
t_matrix = self.transposed_matrix t_matrix = self.transposed_matrix
@ -325,8 +325,8 @@ class TransformInfiniteGrid(LinearTransformationScene):
CONFIG = { CONFIG = {
"include_background_plane" : False, "include_background_plane" : False,
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_Y_RADIUS, "y_radius" : FRAME_HEIGHT,
}, },
"show_basis_vectors" : False "show_basis_vectors" : False
} }
@ -343,8 +343,8 @@ class TransformInfiniteGridWithBackground(TransformInfiniteGrid):
CONFIG = { CONFIG = {
"include_background_plane" : True, "include_background_plane" : True,
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_Y_RADIUS, "y_radius" : FRAME_HEIGHT,
"secondary_line_ratio" : 0 "secondary_line_ratio" : 0
}, },
@ -355,8 +355,8 @@ class ApplyComplexFunction(LinearTransformationScene):
"function" : lambda z : 0.5*z**2, "function" : lambda z : 0.5*z**2,
"show_basis_vectors" : False, "show_basis_vectors" : False,
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : SPACE_X_RADIUS, "x_radius" : FRAME_X_RADIUS,
"y_radius" : SPACE_Y_RADIUS, "y_radius" : FRAME_Y_RADIUS,
"secondary_line_ratio" : 0 "secondary_line_ratio" : 0
}, },
} }
@ -507,8 +507,8 @@ class SneakyNonlinearTransformation(SimpleNonlinearTransformationScene):
} }
def func(self, point): def func(self, point):
x, y, z = point x, y, z = point
new_x = np.sign(x)*SPACE_X_RADIUS*smooth(abs(x) / SPACE_X_RADIUS) new_x = np.sign(x)*FRAME_X_RADIUS*smooth(abs(x) / FRAME_X_RADIUS)
new_y = np.sign(y)*SPACE_Y_RADIUS*smooth(abs(y) / SPACE_Y_RADIUS) new_y = np.sign(y)*FRAME_Y_RADIUS*smooth(abs(y) / FRAME_Y_RADIUS)
return [new_x, new_y, 0] return [new_x, new_y, 0]
class SneakyNonlinearTransformationExplained(SneakyNonlinearTransformation): class SneakyNonlinearTransformationExplained(SneakyNonlinearTransformation):
@ -518,8 +518,8 @@ class SneakyNonlinearTransformationExplained(SneakyNonlinearTransformation):
def setup(self): def setup(self):
LinearTransformationScene.setup(self) LinearTransformationScene.setup(self)
diag = Line( diag = Line(
SPACE_Y_RADIUS*LEFT+SPACE_Y_RADIUS*DOWN, FRAME_Y_RADIUS*LEFT+FRAME_Y_RADIUS*DOWN,
SPACE_Y_RADIUS*RIGHT + SPACE_Y_RADIUS*UP FRAME_Y_RADIUS*RIGHT + FRAME_Y_RADIUS*UP
) )
diag.insert_n_anchor_points(20) diag.insert_n_anchor_points(20)
diag.change_anchor_mode("smooth") diag.change_anchor_mode("smooth")
@ -788,8 +788,8 @@ class WatchManyVectorsMove(TransformManyVectors):
self.setup() self.setup()
vectors = VMobject(*[ vectors = VMobject(*[
Vector([x, y]) Vector([x, y])
for x in np.arange(-int(SPACE_X_RADIUS)+0.5, int(SPACE_X_RADIUS)+0.5) for x in np.arange(-int(FRAME_X_RADIUS)+0.5, int(FRAME_X_RADIUS)+0.5)
for y in np.arange(-int(SPACE_Y_RADIUS)+0.5, int(SPACE_Y_RADIUS)+0.5) for y in np.arange(-int(FRAME_Y_RADIUS)+0.5, int(FRAME_Y_RADIUS)+0.5)
]) ])
vectors.submobject_gradient_highlight(PINK, YELLOW) vectors.submobject_gradient_highlight(PINK, YELLOW)
dots = self.vectors_to_dots(vectors) dots = self.vectors_to_dots(vectors)
@ -1327,7 +1327,7 @@ class FinalSlide(Scene):
definition is actually equivalent to the two properties definition is actually equivalent to the two properties
above. above.
""", enforce_new_line_structure = False) """, enforce_new_line_structure = False)
text.scale_to_fit_height(2*SPACE_Y_RADIUS - 2) text.scale_to_fit_height(FRAME_HEIGHT - 2)
text.to_edge(UP) text.to_edge(UP)
self.add(text) self.add(text)
self.wait() self.wait()
@ -1421,7 +1421,7 @@ class UsedToThinkinfOfFunctionsAsGraphs(VectorScene):
self.wait() self.wait()
def collapse_func(p): def collapse_func(p):
return np.dot(p, [RIGHT, RIGHT, OUT]) + (SPACE_Y_RADIUS+1)*DOWN return np.dot(p, [RIGHT, RIGHT, OUT]) + (FRAME_Y_RADIUS+1)*DOWN
self.play( self.play(
ApplyPointwiseFunction( ApplyPointwiseFunction(
collapse_func, axes, collapse_func, axes,
@ -1648,8 +1648,8 @@ class MoveAroundAllVectors(LinearTransformationScene):
self.setup() self.setup()
vectors = VMobject(*[ vectors = VMobject(*[
Vector([x, y]) Vector([x, y])
for x in np.arange(-int(SPACE_X_RADIUS)+0.5, int(SPACE_X_RADIUS)+0.5) for x in np.arange(-int(FRAME_X_RADIUS)+0.5, int(FRAME_X_RADIUS)+0.5)
for y in np.arange(-int(SPACE_Y_RADIUS)+0.5, int(SPACE_Y_RADIUS)+0.5) for y in np.arange(-int(FRAME_Y_RADIUS)+0.5, int(FRAME_Y_RADIUS)+0.5)
]) ])
vectors.submobject_gradient_highlight(PINK, YELLOW) vectors.submobject_gradient_highlight(PINK, YELLOW)
dots = self.get_dots(vectors) dots = self.get_dots(vectors)

View file

@ -31,7 +31,7 @@ class OpeningQuote(Scene):
"can be shortened by 50\\% if one", "can be shortened by 50\\% if one",
"throws the matrices out." "throws the matrices out."
]) ])
words.scale_to_fit_width(2*SPACE_X_RADIUS - 2) words.scale_to_fit_width(FRAME_WIDTH - 2)
words.to_edge(UP) words.to_edge(UP)
words.split()[1].highlight(GREEN) words.split()[1].highlight(GREEN)
words.split()[3].highlight(BLUE) words.split()[3].highlight(BLUE)
@ -235,8 +235,8 @@ class RecapOver(TeacherStudentsScene):
class TwoSuccessiveTransformations(LinearTransformationScene): class TwoSuccessiveTransformations(LinearTransformationScene):
CONFIG = { CONFIG = {
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_X_RADIUS, "y_radius" : FRAME_WIDTH,
"secondary_line_ratio" : 0 "secondary_line_ratio" : 0
}, },
} }
@ -249,8 +249,8 @@ class TwoSuccessiveTransformations(LinearTransformationScene):
class RotationThenShear(LinearTransformationScene): class RotationThenShear(LinearTransformationScene):
CONFIG = { CONFIG = {
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : SPACE_X_RADIUS, "x_radius" : FRAME_X_RADIUS,
"y_radius" : 2*SPACE_X_RADIUS, "y_radius" : FRAME_WIDTH,
"secondary_line_ratio" : 0 "secondary_line_ratio" : 0
}, },
} }
@ -817,8 +817,8 @@ class FirstShearThenRotation(LinearTransformationScene):
"t_matrix1" : [[1, 0], [1, 1]], "t_matrix1" : [[1, 0], [1, 1]],
"t_matrix2" : [[0, 1], [-1, 0]], "t_matrix2" : [[0, 1], [-1, 0]],
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_X_RADIUS, "y_radius" : FRAME_WIDTH,
"secondary_line_ratio" : 0 "secondary_line_ratio" : 0
}, },
} }
@ -1078,7 +1078,7 @@ class NextVideo(Scene):
title = TextMobject(""" title = TextMobject("""
Next video: Linear transformations in three dimensions Next video: Linear transformations in three dimensions
""") """)
title.scale_to_fit_width(2*SPACE_X_RADIUS - 2) title.scale_to_fit_width(FRAME_WIDTH - 2)
title.to_edge(UP) title.to_edge(UP)
rect = Rectangle(width = 16, height = 9, color = BLUE) rect = Rectangle(width = 16, height = 9, color = BLUE)
rect.scale_to_fit_height(6) rect.scale_to_fit_height(6)

View file

@ -88,7 +88,7 @@ class OpeningQuote(Scene):
"numbers.", "numbers.",
"''", "''",
], arg_separator = "") ], arg_separator = "")
# words.scale_to_fit_width(2*SPACE_X_RADIUS - 2) # words.scale_to_fit_width(FRAME_WIDTH - 2)
words.to_edge(UP) words.to_edge(UP)
words.split()[1].highlight(BLUE) words.split()[1].highlight(BLUE)
words.split()[3].highlight(GREEN) words.split()[3].highlight(GREEN)
@ -131,8 +131,8 @@ class StretchingTransformation(LinearTransformationScene):
class SquishingTransformation(LinearTransformationScene): class SquishingTransformation(LinearTransformationScene):
CONFIG = { CONFIG = {
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : 3*SPACE_X_RADIUS, "x_radius" : 3*FRAME_X_RADIUS,
"y_radius" : 3*SPACE_X_RADIUS, "y_radius" : 3*FRAME_X_RADIUS,
"secondary_line_ratio" : 0 "secondary_line_ratio" : 0
}, },
} }
@ -430,8 +430,8 @@ class DeterminantIsOneHalf(NameDeterminant):
CONFIG = { CONFIG = {
"t_matrix" : [[0.5, -0.5], [0.5, 0.5]], "t_matrix" : [[0.5, -0.5], [0.5, 0.5]],
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_X_RADIUS, "y_radius" : FRAME_WIDTH,
"secondary_line_ratio" : 0 "secondary_line_ratio" : 0
}, },
} }
@ -451,7 +451,7 @@ class NextFewVideos(Scene):
def construct(self): def construct(self):
icon = SVGMobject("video_icon") icon = SVGMobject("video_icon")
icon.center() icon.center()
icon.scale_to_fit_width(2*SPACE_X_RADIUS/12.) icon.scale_to_fit_width(FRAME_WIDTH/12.)
icon.set_stroke(color = WHITE, width = 0) icon.set_stroke(color = WHITE, width = 0)
icon.set_fill(WHITE, opacity = 1) icon.set_fill(WHITE, opacity = 1)
icons = VMobject(*[icon.copy() for x in range(10)]) icons = VMobject(*[icon.copy() for x in range(10)])
@ -511,9 +511,9 @@ class NegativeDeterminant(Scene):
class FlipSpaceOver(Scene): class FlipSpaceOver(Scene):
def construct(self): def construct(self):
plane1 = NumberPlane(y_radius = SPACE_X_RADIUS) plane1 = NumberPlane(y_radius = FRAME_X_RADIUS)
plane2 = NumberPlane( plane2 = NumberPlane(
y_radius = SPACE_X_RADIUS, y_radius = FRAME_X_RADIUS,
color = RED_D, secondary_color = RED_E color = RED_D, secondary_color = RED_E
) )
axis = UP axis = UP
@ -1057,7 +1057,7 @@ class FullFormulaExplanation(LinearTransformationScene):
formula.next_to(det_text, RIGHT) formula.next_to(det_text, RIGHT)
everyone = VMobject(det_text, matrix, formula) everyone = VMobject(det_text, matrix, formula)
everyone.scale_to_fit_width(2*SPACE_X_RADIUS - 1) everyone.scale_to_fit_width(FRAME_WIDTH - 1)
everyone.next_to(DOWN, DOWN) everyone.next_to(DOWN, DOWN)
background_rect = BackgroundRectangle(everyone) background_rect = BackgroundRectangle(everyone)
self.play( self.play(
@ -1150,7 +1150,7 @@ class NextVideo(Scene):
title = TextMobject(""" title = TextMobject("""
Next video: Inverse matrices, column space and null space Next video: Inverse matrices, column space and null space
""") """)
title.scale_to_fit_width(2*SPACE_X_RADIUS - 2) title.scale_to_fit_width(FRAME_WIDTH - 2)
title.to_edge(UP) title.to_edge(UP)
rect = Rectangle(width = 16, height = 9, color = BLUE) rect = Rectangle(width = 16, height = 9, color = BLUE)
rect.scale_to_fit_height(6) rect.scale_to_fit_height(6)

View file

@ -187,8 +187,8 @@ class StockPrices(Scene):
def construct(self): def construct(self):
self.add(TextMobject("Stock prices").to_edge(UP)) self.add(TextMobject("Stock prices").to_edge(UP))
x_axis = Line(ORIGIN, SPACE_X_RADIUS*RIGHT) x_axis = Line(ORIGIN, FRAME_X_RADIUS*RIGHT)
y_axis = Line(ORIGIN, SPACE_Y_RADIUS*UP) y_axis = Line(ORIGIN, FRAME_Y_RADIUS*UP)
everyone = VMobject(x_axis, y_axis) everyone = VMobject(x_axis, y_axis)
stock_lines = [] stock_lines = []
for color in TEAL, PINK, YELLOW, RED, BLUE: for color in TEAL, PINK, YELLOW, RED, BLUE:
@ -673,7 +673,7 @@ class ShowBijectivity(LinearTransformationScene):
Vector([x, y]) Vector([x, y])
for x, y in it.product(*[ for x, y in it.product(*[
np.arange(-int(val)+0.5, int(val)+0.5) np.arange(-int(val)+0.5, int(val)+0.5)
for val in SPACE_X_RADIUS, SPACE_Y_RADIUS for val in FRAME_X_RADIUS, FRAME_Y_RADIUS
]) ])
]) ])
vectors.submobject_gradient_highlight(BLUE_E, PINK) vectors.submobject_gradient_highlight(BLUE_E, PINK)
@ -833,8 +833,8 @@ class DescribeInverse(LinearTransformationScene):
label_mob.add_background_rectangle() label_mob.add_background_rectangle()
m.add(brace, label_mob) m.add(brace, label_mob)
text.add(m) text.add(m)
if text.get_width() > 2*SPACE_X_RADIUS-1: if text.get_width() > FRAME_WIDTH-1:
text.scale_to_fit_width(2*SPACE_X_RADIUS-1) text.scale_to_fit_width(FRAME_WIDTH-1)
text.center().to_corner(UP+RIGHT) text.center().to_corner(UP+RIGHT)
matrix.highlight(PINK) matrix.highlight(PINK)
inv_matrix.highlight(YELLOW) inv_matrix.highlight(YELLOW)
@ -1530,8 +1530,8 @@ class NameColumnSpace(Scene):
class IHatShear(LinearTransformationScene): class IHatShear(LinearTransformationScene):
CONFIG = { CONFIG = {
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_X_RADIUS, "y_radius" : FRAME_WIDTH,
"secondary_line_ratio" : 0 "secondary_line_ratio" : 0
}, },
} }
@ -1631,8 +1631,8 @@ class OriginIsAlwaysInColumnSpace(LinearTransformationScene):
class FullRankCase(LinearTransformationScene): class FullRankCase(LinearTransformationScene):
CONFIG = { CONFIG = {
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_X_RADIUS, "y_radius" : FRAME_WIDTH,
"secondary_line_ratio" : 0 "secondary_line_ratio" : 0
}, },
} }
@ -2024,7 +2024,7 @@ class NextVideo(Scene):
title = TextMobject(""" title = TextMobject("""
Next video: Nonsquare matrices Next video: Nonsquare matrices
""") """)
title.scale_to_fit_width(2*SPACE_X_RADIUS - 2) title.scale_to_fit_width(FRAME_WIDTH - 2)
title.to_edge(UP) title.to_edge(UP)
rect = Rectangle(width = 16, height = 9, color = BLUE) rect = Rectangle(width = 16, height = 9, color = BLUE)
rect.scale_to_fit_height(6) rect.scale_to_fit_height(6)

View file

@ -55,7 +55,7 @@ class OpeningQuote(Scene):
"No one can say how it happens. " "No one can say how it happens. "
"You either believe it or you don't.", "You either believe it or you don't.",
) )
words.scale_to_fit_width(2*SPACE_X_RADIUS - 1) words.scale_to_fit_width(FRAME_WIDTH - 1)
words.to_edge(UP) words.to_edge(UP)
words[0].highlight(YELLOW) words[0].highlight(YELLOW)
words[2].highlight("#fd9c2b") words[2].highlight("#fd9c2b")
@ -105,7 +105,7 @@ class ThisSeriesOrdering(RandolphScene):
self.randy.rotate(np.pi, UP) self.randy.rotate(np.pi, UP)
title.scale(1.2).highlight(BLUE) title.scale(1.2).highlight(BLUE)
title.to_corner(UP+LEFT) title.to_corner(UP+LEFT)
line = Line(SPACE_X_RADIUS*LEFT, SPACE_X_RADIUS*RIGHT, color = WHITE) line = Line(FRAME_X_RADIUS*LEFT, FRAME_X_RADIUS*RIGHT, color = WHITE)
line.next_to(title, DOWN, buff = SMALL_BUFF) line.next_to(title, DOWN, buff = SMALL_BUFF)
line.to_edge(LEFT, buff = 0) line.to_edge(LEFT, buff = 0)
@ -128,7 +128,7 @@ class ThisSeriesOrdering(RandolphScene):
chapters.arrange_submobjects( chapters.arrange_submobjects(
DOWN, buff = SMALL_BUFF, aligned_edge = LEFT DOWN, buff = SMALL_BUFF, aligned_edge = LEFT
) )
chapters.scale_to_fit_height(1.5*SPACE_Y_RADIUS) chapters.scale_to_fit_height(1.5*FRAME_Y_RADIUS)
chapters.next_to(line, DOWN, buff = SMALL_BUFF) chapters.next_to(line, DOWN, buff = SMALL_BUFF)
chapters.to_edge(RIGHT) chapters.to_edge(RIGHT)
@ -316,7 +316,7 @@ class GeometricInterpretation(VectorScene):
self.proj_vect = self.w if self.project_onto_v else self.v self.proj_vect = self.w if self.project_onto_v else self.v
def line(self): def line(self):
line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
line.rotate(self.stable_vect.get_angle()) line.rotate(self.stable_vect.get_angle())
self.play(ShowCreation(line), Animation(self.stable_vect)) self.play(ShowCreation(line), Animation(self.stable_vect))
self.wait() self.wait()
@ -473,7 +473,7 @@ class ShowQualitativeDotProductValues(VectorScene):
) )
shadow_opposite = shadow.copy().scale(-1) shadow_opposite = shadow.copy().scale(-1)
line = Line(LEFT, RIGHT, color = WHITE) line = Line(LEFT, RIGHT, color = WHITE)
line.scale(SPACE_X_RADIUS) line.scale(FRAME_X_RADIUS)
line.rotate(v.get_angle()) line.rotate(v.get_angle())
proj_line = Line(w.get_end(), shadow.get_end(), color = GREY) proj_line = Line(w.get_end(), shadow.get_end(), color = GREY)
@ -551,7 +551,7 @@ class SymmetricVAndW(VectorScene):
v1.proj_line = Line( v1.proj_line = Line(
v1.get_end(), v1.proj.get_end(), color = GREY v1.get_end(), v1.proj.get_end(), color = GREY
) )
line_of_symmetry = DashedLine(SPACE_X_RADIUS*LEFT, SPACE_X_RADIUS*RIGHT) line_of_symmetry = DashedLine(FRAME_X_RADIUS*LEFT, FRAME_X_RADIUS*RIGHT)
line_of_symmetry.rotate(np.mean([v.get_angle(), w.get_angle()])) line_of_symmetry.rotate(np.mean([v.get_angle(), w.get_angle()]))
line_of_symmetry_words = TextMobject("Line of symmetry") line_of_symmetry_words = TextMobject("Line of symmetry")
line_of_symmetry_words.add_background_rectangle() line_of_symmetry_words.add_background_rectangle()
@ -700,8 +700,8 @@ class TwoDToOneDScene(LinearTransformationScene):
CONFIG = { CONFIG = {
"include_background_plane" : False, "include_background_plane" : False,
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : SPACE_X_RADIUS, "x_radius" : FRAME_X_RADIUS,
"y_radius" : SPACE_Y_RADIUS, "y_radius" : FRAME_Y_RADIUS,
"secondary_line_ratio" : 1 "secondary_line_ratio" : 1
}, },
"t_matrix" : [[2, 0], [1, 0]] "t_matrix" : [[2, 0], [1, 0]]
@ -797,7 +797,7 @@ class OkayToIgnoreFormalProperties(Scene):
def construct(self): def construct(self):
title = TextMobject("Formal linearity properties") title = TextMobject("Formal linearity properties")
title.to_edge(UP) title.to_edge(UP)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
h_line.next_to(title, DOWN) h_line.next_to(title, DOWN)
v_tex, w_tex = ["\\vec{\\textbf{%s}}"%s for s in "v", "w"] v_tex, w_tex = ["\\vec{\\textbf{%s}}"%s for s in "v", "w"]
additivity = TexMobject( additivity = TexMobject(
@ -841,14 +841,14 @@ class FormalVsVisual(Scene):
title = TextMobject("Linearity") title = TextMobject("Linearity")
title.highlight(BLUE) title.highlight(BLUE)
title.to_edge(UP) title.to_edge(UP)
line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
line.next_to(title, DOWN) line.next_to(title, DOWN)
v_line = Line(line.get_center(), SPACE_Y_RADIUS*DOWN) v_line = Line(line.get_center(), FRAME_Y_RADIUS*DOWN)
formal = TextMobject("Formal definition") formal = TextMobject("Formal definition")
visual = TextMobject("Visual intuition") visual = TextMobject("Visual intuition")
formal.next_to(line, DOWN).shift(SPACE_X_RADIUS*LEFT/2) formal.next_to(line, DOWN).shift(FRAME_X_RADIUS*LEFT/2)
visual.next_to(line, DOWN).shift(SPACE_X_RADIUS*RIGHT/2) visual.next_to(line, DOWN).shift(FRAME_X_RADIUS*RIGHT/2)
v_tex, w_tex = ["\\vec{\\textbf{%s}}"%c for c in "v", "w"] v_tex, w_tex = ["\\vec{\\textbf{%s}}"%c for c in "v", "w"]
additivity = TexMobject( additivity = TexMobject(
@ -1358,14 +1358,14 @@ class SomeKindOfConnection(Scene):
"v_coords" : [2, 3] "v_coords" : [2, 3]
} }
def construct(self): def construct(self):
width = SPACE_X_RADIUS-1 width = FRAME_X_RADIUS-1
plane = NumberPlane(x_radius = 4, y_radius = 6) plane = NumberPlane(x_radius = 4, y_radius = 6)
squish_plane = plane.copy() squish_plane = plane.copy()
i_hat = Vector([1, 0], color = X_COLOR) i_hat = Vector([1, 0], color = X_COLOR)
j_hat = Vector([0, 1], color = Y_COLOR) j_hat = Vector([0, 1], color = Y_COLOR)
vect = Vector(self.v_coords, color = YELLOW) vect = Vector(self.v_coords, color = YELLOW)
plane.add(vect, i_hat, j_hat) plane.add(vect, i_hat, j_hat)
plane.scale_to_fit_width(SPACE_X_RADIUS) plane.scale_to_fit_width(FRAME_X_RADIUS)
plane.to_edge(LEFT, buff = 0) plane.to_edge(LEFT, buff = 0)
plane.remove(vect, i_hat, j_hat) plane.remove(vect, i_hat, j_hat)
@ -1374,7 +1374,7 @@ class SomeKindOfConnection(Scene):
) )
squish_plane.add(Vector(self.v_coords[1]*RIGHT, color = Y_COLOR)) squish_plane.add(Vector(self.v_coords[1]*RIGHT, color = Y_COLOR))
squish_plane.add(Vector(self.v_coords[0]*RIGHT, color = X_COLOR)) squish_plane.add(Vector(self.v_coords[0]*RIGHT, color = X_COLOR))
squish_plane.scale(width/(2*SPACE_X_RADIUS)) squish_plane.scale(width/(FRAME_WIDTH))
plane.add(j_hat, i_hat) plane.add(j_hat, i_hat)
number_line = NumberLine().stretch_to_fit_width(width) number_line = NumberLine().stretch_to_fit_width(width)
@ -1382,7 +1382,7 @@ class SomeKindOfConnection(Scene):
squish_plane.move_to(number_line) squish_plane.move_to(number_line)
numbers = number_line.get_numbers(*range(-6, 8, 2)) numbers = number_line.get_numbers(*range(-6, 8, 2))
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS) v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
v_line.highlight(GREY) v_line.highlight(GREY)
v_line.set_stroke(width = 10) v_line.set_stroke(width = 10)
@ -1514,8 +1514,8 @@ class ProjectOntoUnitVectorNumberline(VectorScene):
def get_vectors(self, num_vectors = 10, randomize = True): def get_vectors(self, num_vectors = 10, randomize = True):
x_max = SPACE_X_RADIUS - 1 x_max = FRAME_X_RADIUS - 1
y_max = SPACE_Y_RADIUS - 1 y_max = FRAME_Y_RADIUS - 1
x_vals = np.linspace(-x_max, x_max, num_vectors) x_vals = np.linspace(-x_max, x_max, num_vectors)
y_vals = np.linspace(y_max, -y_max, num_vectors) y_vals = np.linspace(y_max, -y_max, num_vectors)
if randomize: if randomize:
@ -1743,7 +1743,7 @@ class ProjectBasisVectors(ProjectOntoUnitVectorNumberline):
def show_symmetry(self, vect, coord, coord_landing_spot): def show_symmetry(self, vect, coord, coord_landing_spot):
starting_mobjects = list(self.get_mobjects()) starting_mobjects = list(self.get_mobjects())
line = DashedLine(SPACE_X_RADIUS*LEFT, SPACE_X_RADIUS*RIGHT) line = DashedLine(FRAME_X_RADIUS*LEFT, FRAME_X_RADIUS*RIGHT)
words = TextMobject("Line of symmetry") words = TextMobject("Line of symmetry")
words.next_to(ORIGIN, UP+LEFT) words.next_to(ORIGIN, UP+LEFT)
words.shift(LEFT) words.shift(LEFT)
@ -2046,14 +2046,14 @@ class TwoDOneDTransformationSeparateSpace(Scene):
"v_coords" : [4, 1] "v_coords" : [4, 1]
} }
def construct(self): def construct(self):
width = SPACE_X_RADIUS-1 width = FRAME_X_RADIUS-1
plane = NumberPlane(x_radius = 6, y_radius = 7) plane = NumberPlane(x_radius = 6, y_radius = 7)
squish_plane = plane.copy() squish_plane = plane.copy()
i_hat = Vector([1, 0], color = X_COLOR) i_hat = Vector([1, 0], color = X_COLOR)
j_hat = Vector([0, 1], color = Y_COLOR) j_hat = Vector([0, 1], color = Y_COLOR)
vect = Vector(self.v_coords, color = YELLOW) vect = Vector(self.v_coords, color = YELLOW)
plane.add(vect, i_hat, j_hat) plane.add(vect, i_hat, j_hat)
plane.scale_to_fit_width(SPACE_X_RADIUS) plane.scale_to_fit_width(FRAME_X_RADIUS)
plane.to_edge(LEFT, buff = 0) plane.to_edge(LEFT, buff = 0)
plane.remove(vect, i_hat, j_hat) plane.remove(vect, i_hat, j_hat)
@ -2062,7 +2062,7 @@ class TwoDOneDTransformationSeparateSpace(Scene):
) )
squish_plane.add(Vector(self.v_coords[0]*RIGHT, color = X_COLOR)) squish_plane.add(Vector(self.v_coords[0]*RIGHT, color = X_COLOR))
squish_plane.add(Vector(self.v_coords[1]*RIGHT, color = Y_COLOR)) squish_plane.add(Vector(self.v_coords[1]*RIGHT, color = Y_COLOR))
squish_plane.scale(width/(2*SPACE_X_RADIUS)) squish_plane.scale(width/(FRAME_WIDTH))
plane.add(i_hat, j_hat) plane.add(i_hat, j_hat)
number_line = NumberLine().stretch_to_fit_width(width) number_line = NumberLine().stretch_to_fit_width(width)
@ -2070,7 +2070,7 @@ class TwoDOneDTransformationSeparateSpace(Scene):
squish_plane.move_to(number_line) squish_plane.move_to(number_line)
numbers = number_line.get_numbers(*range(-6, 8, 2)) numbers = number_line.get_numbers(*range(-6, 8, 2))
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS) v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
v_line.highlight(GREY) v_line.highlight(GREY)
v_line.set_stroke(width = 10) v_line.set_stroke(width = 10)
@ -2234,14 +2234,14 @@ class WhatTheVectorWantsToBe(Scene):
"v_coords" : [2, 4] "v_coords" : [2, 4]
} }
def construct(self): def construct(self):
width = SPACE_X_RADIUS-1 width = FRAME_X_RADIUS-1
plane = NumberPlane(x_radius = 6, y_radius = 7) plane = NumberPlane(x_radius = 6, y_radius = 7)
squish_plane = plane.copy() squish_plane = plane.copy()
i_hat = Vector([1, 0], color = X_COLOR) i_hat = Vector([1, 0], color = X_COLOR)
j_hat = Vector([0, 1], color = Y_COLOR) j_hat = Vector([0, 1], color = Y_COLOR)
vect = Vector(self.v_coords, color = YELLOW) vect = Vector(self.v_coords, color = YELLOW)
plane.add(vect, i_hat, j_hat) plane.add(vect, i_hat, j_hat)
plane.scale_to_fit_width(SPACE_X_RADIUS) plane.scale_to_fit_width(FRAME_X_RADIUS)
plane.to_edge(LEFT, buff = 0) plane.to_edge(LEFT, buff = 0)
plane.remove(vect, i_hat, j_hat) plane.remove(vect, i_hat, j_hat)
@ -2250,7 +2250,7 @@ class WhatTheVectorWantsToBe(Scene):
) )
squish_plane.add(Vector(self.v_coords[1]*RIGHT, color = Y_COLOR)) squish_plane.add(Vector(self.v_coords[1]*RIGHT, color = Y_COLOR))
squish_plane.add(Vector(self.v_coords[0]*RIGHT, color = X_COLOR)) squish_plane.add(Vector(self.v_coords[0]*RIGHT, color = X_COLOR))
squish_plane.scale(width/(2*SPACE_X_RADIUS)) squish_plane.scale(width/(FRAME_WIDTH))
plane.add(j_hat, i_hat) plane.add(j_hat, i_hat)
number_line = NumberLine().stretch_to_fit_width(width) number_line = NumberLine().stretch_to_fit_width(width)
@ -2258,7 +2258,7 @@ class WhatTheVectorWantsToBe(Scene):
squish_plane.move_to(number_line) squish_plane.move_to(number_line)
numbers = number_line.get_numbers(*range(-6, 8, 2)) numbers = number_line.get_numbers(*range(-6, 8, 2))
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS) v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
v_line.highlight(GREY) v_line.highlight(GREY)
v_line.set_stroke(width = 10) v_line.set_stroke(width = 10)

View file

@ -82,7 +82,7 @@ class ListSteps(Scene):
def construct(self): def construct(self):
title = TextMobject("Two part chapter") title = TextMobject("Two part chapter")
title.to_edge(UP) title.to_edge(UP)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
h_line.next_to(title, DOWN) h_line.next_to(title, DOWN)
randy = Randolph().flip().to_corner(DOWN+RIGHT) randy = Randolph().flip().to_corner(DOWN+RIGHT)
randy.look(UP+LEFT) randy.look(UP+LEFT)
@ -445,19 +445,19 @@ class ContrastDotAndCross(Scene):
def add_t_chart(self): def add_t_chart(self):
for word, vect, color in ("Dot", LEFT, BLUE_C), ("Cross", RIGHT, YELLOW): for word, vect, color in ("Dot", LEFT, BLUE_C), ("Cross", RIGHT, YELLOW):
title = TextMobject("%s product"%word) title = TextMobject("%s product"%word)
title.shift(vect*SPACE_X_RADIUS/2) title.shift(vect*FRAME_X_RADIUS/2)
title.to_edge(UP) title.to_edge(UP)
title.highlight(color) title.highlight(color)
self.add(title) self.add(title)
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS) v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
l_h_line = Line(LEFT, ORIGIN).scale(SPACE_X_RADIUS) l_h_line = Line(LEFT, ORIGIN).scale(FRAME_X_RADIUS)
r_h_line = Line(ORIGIN, RIGHT).scale(SPACE_X_RADIUS) r_h_line = Line(ORIGIN, RIGHT).scale(FRAME_X_RADIUS)
r_h_line.next_to(title, DOWN) r_h_line.next_to(title, DOWN)
l_h_line.next_to(r_h_line, LEFT, buff = 0) l_h_line.next_to(r_h_line, LEFT, buff = 0)
self.add(v_line, l_h_line, r_h_line) self.add(v_line, l_h_line, r_h_line)
self.l_h_line, self.r_h_line = l_h_line, r_h_line self.l_h_line, self.r_h_line = l_h_line, r_h_line
def add_dot_products(self, max_width = SPACE_X_RADIUS-1, dims = [2, 5]): def add_dot_products(self, max_width = FRAME_X_RADIUS-1, dims = [2, 5]):
colors = [X_COLOR, Y_COLOR, Z_COLOR, MAROON_B, TEAL] colors = [X_COLOR, Y_COLOR, Z_COLOR, MAROON_B, TEAL]
last_mob = self.l_h_line last_mob = self.l_h_line
dot_products = [] dot_products = []
@ -593,7 +593,7 @@ class ContrastDotAndCross(Scene):
self.only_3d_text = brace_text self.only_3d_text = brace_text
def add_2d_cross_product(self): def add_2d_cross_product(self):
h_line = DashedLine(ORIGIN, SPACE_X_RADIUS*RIGHT) h_line = DashedLine(ORIGIN, FRAME_X_RADIUS*RIGHT)
h_line.next_to(self.only_3d_text, DOWN, buff = MED_SMALL_BUFF/2) h_line.next_to(self.only_3d_text, DOWN, buff = MED_SMALL_BUFF/2)
h_line.to_edge(RIGHT, buff = 0) h_line.to_edge(RIGHT, buff = 0)
arrays = np.random.randint(0, 9, (2, 2)) arrays = np.random.randint(0, 9, (2, 2))
@ -653,7 +653,7 @@ class PrereqDeterminant(Scene):
title = TextMobject(""" title = TextMobject("""
Prerequisite: Understanding determinants Prerequisite: Understanding determinants
""") """)
title.scale_to_fit_width(2*SPACE_X_RADIUS - 2) title.scale_to_fit_width(FRAME_WIDTH - 2)
title.to_edge(UP) title.to_edge(UP)
rect = Rectangle(width = 16, height = 9, color = BLUE) rect = Rectangle(width = 16, height = 9, color = BLUE)
rect.scale_to_fit_height(6) rect.scale_to_fit_height(6)
@ -970,7 +970,7 @@ class Define2dCrossProduct(LinearTransformationScene):
anticommute = TexMobject( anticommute = TexMobject(
v_tex, "\\times", w_tex, "=-", w_tex, "\\times", v_tex v_tex, "\\times", w_tex, "=-", w_tex, "\\times", v_tex
) )
anticommute.shift(SPACE_X_RADIUS*RIGHT/2) anticommute.shift(FRAME_X_RADIUS*RIGHT/2)
anticommute.to_edge(UP) anticommute.to_edge(UP)
anticommute.highlight_by_tex(v_tex, V_COLOR) anticommute.highlight_by_tex(v_tex, V_COLOR)
anticommute.highlight_by_tex(w_tex, W_COLOR) anticommute.highlight_by_tex(w_tex, W_COLOR)
@ -1326,14 +1326,14 @@ class WriteCrossProductProperties(Scene):
"(parallelogram's area)" "(parallelogram's area)"
) )
length_words.highlight_by_tex(p_cash, P_COLOR) length_words.highlight_by_tex(p_cash, P_COLOR)
length_words.scale_to_fit_width(SPACE_X_RADIUS - 1) length_words.scale_to_fit_width(FRAME_X_RADIUS - 1)
length_words.highlight_by_tex("(parallelogram's area)", BLUE) length_words.highlight_by_tex("(parallelogram's area)", BLUE)
length_words.next_to(VGroup(cross_product, vector), DOWN, buff = LARGE_BUFF) length_words.next_to(VGroup(cross_product, vector), DOWN, buff = LARGE_BUFF)
perpendicular = TextMobject( perpendicular = TextMobject(
"\\centering Perpendicular to", "\\centering Perpendicular to",
v_cash, "and", w_cash v_cash, "and", w_cash
) )
perpendicular.scale_to_fit_width(SPACE_X_RADIUS - 1) perpendicular.scale_to_fit_width(FRAME_X_RADIUS - 1)
perpendicular.highlight_by_tex(v_cash, V_COLOR) perpendicular.highlight_by_tex(v_cash, V_COLOR)
perpendicular.highlight_by_tex(w_cash, W_COLOR) perpendicular.highlight_by_tex(w_cash, W_COLOR)
perpendicular.next_to(length_words, DOWN, buff = LARGE_BUFF) perpendicular.next_to(length_words, DOWN, buff = LARGE_BUFF)

View file

@ -38,7 +38,7 @@ class OpeningQuote(Scene):
) )
words.highlight_by_tex("difficulty of a proof:", RED) words.highlight_by_tex("difficulty of a proof:", RED)
words.highlight_by_tex("paint a landscape", GREEN) words.highlight_by_tex("paint a landscape", GREEN)
words.scale_to_fit_width(2*SPACE_X_RADIUS - 2) words.scale_to_fit_width(FRAME_WIDTH - 2)
words.to_edge(UP) words.to_edge(UP)
author = TextMobject("-Pierre Deligne") author = TextMobject("-Pierre Deligne")
author.highlight(YELLOW) author.highlight(YELLOW)
@ -103,13 +103,13 @@ class BruteForceVerification(Scene):
verify computationally verify computationally
""") """)
computation_words.scale(0.75) computation_words.scale(0.75)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS) v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
computation_words.to_edge(UP, buff = MED_SMALL_BUFF/2) computation_words.to_edge(UP, buff = MED_SMALL_BUFF/2)
h_line.next_to(computation_words, DOWN) h_line.next_to(computation_words, DOWN)
formula_word.next_to(h_line, UP, buff = MED_SMALL_BUFF) formula_word.next_to(h_line, UP, buff = MED_SMALL_BUFF)
computation_words.shift(SPACE_X_RADIUS*RIGHT/2) computation_words.shift(FRAME_X_RADIUS*RIGHT/2)
formula_word.shift(SPACE_X_RADIUS*LEFT/2) formula_word.shift(FRAME_X_RADIUS*LEFT/2)
cross_product.next_to(formula_word, DOWN, buff = LARGE_BUFF) cross_product.next_to(formula_word, DOWN, buff = LARGE_BUFF)
@ -141,8 +141,8 @@ class BruteForceVerification(Scene):
"(||", w_tex, "||)", "(||", w_tex, "||)",
"\\sin(", "\\theta", ")" "\\sin(", "\\theta", ")"
) )
last_point = h_line.get_center()+SPACE_X_RADIUS*RIGHT/2 last_point = h_line.get_center()+FRAME_X_RADIUS*RIGHT/2
max_width = SPACE_X_RADIUS-1 max_width = FRAME_X_RADIUS-1
for mob in v_dot, w_dot, theta_def, length_check: for mob in v_dot, w_dot, theta_def, length_check:
mob.highlight_by_tex(v_tex, V_COLOR) mob.highlight_by_tex(v_tex, V_COLOR)
mob.highlight_by_tex(w_tex, W_COLOR) mob.highlight_by_tex(w_tex, W_COLOR)
@ -167,7 +167,7 @@ class Prerequisites(Scene):
title.highlight(YELLOW) title.highlight(YELLOW)
rect = Rectangle(width = 16, height = 9, color = BLUE) rect = Rectangle(width = 16, height = 9, color = BLUE)
rect.scale_to_fit_width(SPACE_X_RADIUS - 1) rect.scale_to_fit_width(FRAME_X_RADIUS - 1)
left_rect, right_rect = [ left_rect, right_rect = [
rect.copy().shift(DOWN/2).to_edge(edge) rect.copy().shift(DOWN/2).to_edge(edge)
for edge in LEFT, RIGHT for edge in LEFT, RIGHT
@ -308,7 +308,7 @@ class ThreeStepPlan(Scene):
title = TextMobject("The plan") title = TextMobject("The plan")
title.highlight(YELLOW) title.highlight(YELLOW)
title.to_edge(UP) title.to_edge(UP)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
h_line.next_to(title, DOWN) h_line.next_to(title, DOWN)
v_tex, w_tex = get_vect_tex(*"vw") v_tex, w_tex = get_vect_tex(*"vw")
@ -395,7 +395,7 @@ class DefineDualTransform(Scene):
title = TextMobject("What a student might think") title = TextMobject("What a student might think")
title.not_real = TextMobject("Not the real cross product") title.not_real = TextMobject("Not the real cross product")
for mob in title, title.not_real: for mob in title, title.not_real:
mob.scale_to_fit_width(SPACE_X_RADIUS - 1) mob.scale_to_fit_width(FRAME_X_RADIUS - 1)
mob.highlight(RED) mob.highlight(RED)
mob.to_edge(UP) mob.to_edge(UP)
self.add(title) self.add(title)
@ -446,7 +446,7 @@ class DefineDualTransform(Scene):
final_mobs.next_to(self.title, DOWN, buff = MED_SMALL_BUFF) final_mobs.next_to(self.title, DOWN, buff = MED_SMALL_BUFF)
for mob in definitions, final_mobs: for mob in definitions, final_mobs:
mob.scale_to_fit_width(SPACE_X_RADIUS - 1) mob.scale_to_fit_width(FRAME_X_RADIUS - 1)
for array in arrays: for array in arrays:
brackets = array.get_brackets() brackets = array.get_brackets()
@ -844,7 +844,7 @@ class DotProductWords(Scene):
times.next_to(words[0], RIGHT) times.next_to(words[0], RIGHT)
everyone = VGroup(dot_product, equals, times, words) everyone = VGroup(dot_product, equals, times, words)
everyone.center().scale_to_fit_width(SPACE_X_RADIUS - 1) everyone.center().scale_to_fit_width(FRAME_X_RADIUS - 1)
self.add(dot_product) self.add(dot_product)
self.play(Write(equals)) self.play(Write(equals))
self.play(Write(words[0])) self.play(Write(words[0]))
@ -876,7 +876,7 @@ class GeometricVolumeWords(Scene):
words[1].highlight_by_tex(v_tex, ORANGE) words[1].highlight_by_tex(v_tex, ORANGE)
words[1].highlight_by_tex(w_tex, W_COLOR) words[1].highlight_by_tex(w_tex, W_COLOR)
words.arrange_submobjects(RIGHT) words.arrange_submobjects(RIGHT)
words.scale_to_fit_width(2*SPACE_X_RADIUS - 1) words.scale_to_fit_width(FRAME_WIDTH - 1)
words.to_edge(DOWN, buff = SMALL_BUFF) words.to_edge(DOWN, buff = SMALL_BUFF)
for word in words: for word in words:
self.play(Write(word)) self.play(Write(word))
@ -923,8 +923,8 @@ class ChangeOfBasisPreview(LinearTransformationScene):
CONFIG = { CONFIG = {
"include_background_plane" : False, "include_background_plane" : False,
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_X_RADIUS, "y_radius" : FRAME_WIDTH,
"secondary_line_ratio" : 0 "secondary_line_ratio" : 0
}, },
"t_matrix" : [[2, 1], [-1, 1]], "t_matrix" : [[2, 1], [-1, 1]],

View file

@ -67,7 +67,7 @@ class OpeningQuote(Scene):
) )
words.highlight_by_tex("same name ", BLUE) words.highlight_by_tex("same name ", BLUE)
words.highlight_by_tex("different things", MAROON_B) words.highlight_by_tex("different things", MAROON_B)
# words.scale_to_fit_width(2*SPACE_X_RADIUS - 2) # words.scale_to_fit_width(FRAME_WIDTH - 2)
words.to_edge(UP) words.to_edge(UP)
author = TextMobject("-Henri Poincar\\'e.") author = TextMobject("-Henri Poincar\\'e.")
author.highlight(YELLOW) author.highlight(YELLOW)
@ -82,8 +82,8 @@ class LinearCombinationScene(LinearTransformationScene):
CONFIG = { CONFIG = {
"include_background_plane" : False, "include_background_plane" : False,
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : SPACE_X_RADIUS, "x_radius" : FRAME_X_RADIUS,
"y_radius" : SPACE_Y_RADIUS, "y_radius" : FRAME_Y_RADIUS,
"secondary_line_ratio" : 1 "secondary_line_ratio" : 1
}, },
} }
@ -340,8 +340,8 @@ class JenniferScene(LinearCombinationScene):
"b1_coords" : [2, 1], "b1_coords" : [2, 1],
"b2_coords" : [-1, 1], "b2_coords" : [-1, 1],
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : SPACE_X_RADIUS, "x_radius" : FRAME_X_RADIUS,
"y_radius" : SPACE_X_RADIUS, "y_radius" : FRAME_X_RADIUS,
}, },
} }
def setup(self): def setup(self):
@ -1437,7 +1437,7 @@ class Prerequisites(Scene):
def construct(self): def construct(self):
title = TextMobject("Prerequisites") title = TextMobject("Prerequisites")
title.to_edge(UP) title.to_edge(UP)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
h_line.next_to(title, DOWN) h_line.next_to(title, DOWN)
self.add(title, h_line) self.add(title, h_line)
@ -1741,7 +1741,7 @@ class HowToTranslateAMatrix(Scene):
def add_title(self): def add_title(self):
title = TextMobject("How to translate a matrix") title = TextMobject("How to translate a matrix")
title.to_edge(UP) title.to_edge(UP)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
h_line.next_to(title, DOWN) h_line.next_to(title, DOWN)
self.add(title) self.add(title)
self.play(ShowCreation(h_line)) self.play(ShowCreation(h_line))

View file

@ -33,7 +33,7 @@ class OpeningQuote(Scene):
into...(dramatic pause)...""", into...(dramatic pause)...""",
"the third dimension." "the third dimension."
]) ])
words.scale_to_fit_width(2*SPACE_X_RADIUS - 2) words.scale_to_fit_width(FRAME_WIDTH - 2)
words.to_edge(UP) words.to_edge(UP)
words.split()[0].highlight(YELLOW) words.split()[0].highlight(YELLOW)
words.split()[2].highlight(YELLOW) words.split()[2].highlight(YELLOW)
@ -146,7 +146,7 @@ class PutTogether3x3Matrix(Scene):
k_to, k_array, TexMobject("=").highlight(BLACK), k_to, k_array, TexMobject("=").highlight(BLACK),
) )
everything.arrange_submobjects(RIGHT, buff = 0.1) everything.arrange_submobjects(RIGHT, buff = 0.1)
everything.scale_to_fit_width(2*SPACE_X_RADIUS-1) everything.scale_to_fit_width(FRAME_WIDTH-1)
everything.to_edge(DOWN) everything.to_edge(DOWN)
i_array.highlight(X_COLOR) i_array.highlight(X_COLOR)
@ -238,7 +238,7 @@ class ShowVCoordinateMeaning(Scene):
everything = VMobject(v, eq, coords, eq2, lin_comb) everything = VMobject(v, eq, coords, eq2, lin_comb)
everything.arrange_submobjects(buff = 0.2) everything.arrange_submobjects(buff = 0.2)
everything.scale_to_fit_width(2*SPACE_X_RADIUS - 1) everything.scale_to_fit_width(FRAME_WIDTH - 1)
everything.to_edge(DOWN) everything.to_edge(DOWN)
if not self.post_transform: if not self.post_transform:
lin_comb.shift(0.35*UP) lin_comb.shift(0.35*UP)
@ -287,7 +287,7 @@ class ShowMatrixVectorMultiplication(Scene):
z, col3 z, col3
) )
everything.arrange_submobjects(buff = 0.1) everything.arrange_submobjects(buff = 0.1)
everything.scale_to_fit_width(2*SPACE_X_RADIUS-1) everything.scale_to_fit_width(FRAME_WIDTH-1)
result = VMobject(x, col1, plus1, y, col2, plus2, z, col3) result = VMobject(x, col1, plus1, y, col2, plus2, z, col3)
trips = [ trips = [
@ -361,7 +361,7 @@ class ShowMatrixMultiplication(Scene):
braces.append(brace) braces.append(brace)
right_brace, left_brace = braces right_brace, left_brace = braces
VMobject(*self.get_mobjects()).scale_to_fit_width(2*SPACE_X_RADIUS-1) VMobject(*self.get_mobjects()).scale_to_fit_width(FRAME_WIDTH-1)
self.add(right, left) self.add(right, left)
self.play(Write(right_brace)) self.play(Write(right_brace))
@ -423,7 +423,7 @@ class NextVideo(Scene):
title = TextMobject(""" title = TextMobject("""
Next video: The determinant Next video: The determinant
""") """)
title.scale_to_fit_width(2*SPACE_X_RADIUS - 2) title.scale_to_fit_width(FRAME_WIDTH - 2)
title.to_edge(UP) title.to_edge(UP)
rect = Rectangle(width = 16, height = 9, color = BLUE) rect = Rectangle(width = 16, height = 9, color = BLUE)
rect.scale_to_fit_height(6) rect.scale_to_fit_height(6)

View file

@ -30,7 +30,7 @@ class OpeningQuote(Scene):
"2x3 matrix.", "2x3 matrix.",
"Some of you, to my great amusement, actually tried to do this.''" "Some of you, to my great amusement, actually tried to do this.''"
) )
words.scale_to_fit_width(2*SPACE_X_RADIUS - 2) words.scale_to_fit_width(FRAME_WIDTH - 2)
words.to_edge(UP) words.to_edge(UP)
words[1].highlight(GREEN) words[1].highlight(GREEN)
author = TextMobject("-(Via mathprofessorquotes.com, no name listed)") author = TextMobject("-(Via mathprofessorquotes.com, no name listed)")
@ -355,8 +355,8 @@ class ThreeDToTwoDOutput(LinearTransformationScene):
"show_basis_vectors" : False, "show_basis_vectors" : False,
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"color" : GREY, "color" : GREY,
"x_radius" : SPACE_X_RADIUS, "x_radius" : FRAME_X_RADIUS,
"y_radius" : SPACE_Y_RADIUS, "y_radius" : FRAME_Y_RADIUS,
"secondary_line_ratio" : 0 "secondary_line_ratio" : 0
}, },
} }
@ -441,8 +441,8 @@ class TwoDTo1DTransform(LinearTransformationScene):
CONFIG = { CONFIG = {
"include_background_plane" : False, "include_background_plane" : False,
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : SPACE_X_RADIUS, "x_radius" : FRAME_X_RADIUS,
"y_radius" : SPACE_Y_RADIUS, "y_radius" : FRAME_Y_RADIUS,
"secondary_line_ratio" : 1 "secondary_line_ratio" : 1
}, },
"t_matrix" : [[1, 0], [2, 0]], "t_matrix" : [[1, 0], [2, 0]],
@ -534,7 +534,7 @@ class NextVideo(Scene):
title = TextMobject(""" title = TextMobject("""
Next video: Dot products and duality Next video: Dot products and duality
""") """)
title.scale_to_fit_width(2*SPACE_X_RADIUS - 2) title.scale_to_fit_width(FRAME_WIDTH - 2)
title.to_edge(UP) title.to_edge(UP)
rect = Rectangle(width = 16, height = 9, color = BLUE) rect = Rectangle(width = 16, height = 9, color = BLUE)
rect.scale_to_fit_height(6) rect.scale_to_fit_height(6)

View file

@ -50,8 +50,8 @@ class Chapter2(LinearTransformationScene):
self.lock_in_faded_grid() self.lock_in_faded_grid()
vectors = VMobject(*[ vectors = VMobject(*[
Vector([x, y]) Vector([x, y])
for x in np.arange(-int(SPACE_X_RADIUS)+0.5, int(SPACE_X_RADIUS)+0.5) for x in np.arange(-int(FRAME_X_RADIUS)+0.5, int(FRAME_X_RADIUS)+0.5)
for y in np.arange(-int(SPACE_Y_RADIUS)+0.5, int(SPACE_Y_RADIUS)+0.5) for y in np.arange(-int(FRAME_Y_RADIUS)+0.5, int(FRAME_Y_RADIUS)+0.5)
]) ])
vectors.submobject_gradient_highlight(PINK, BLUE_E) vectors.submobject_gradient_highlight(PINK, BLUE_E)
words = TextMobject("Span") words = TextMobject("Span")
@ -118,8 +118,8 @@ class Chapter9(Scene):
class Chapter10(LinearTransformationScene): class Chapter10(LinearTransformationScene):
CONFIG = { CONFIG = {
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_Y_RADIUS, "y_radius" : FRAME_HEIGHT,
"secondary_line_ratio" : 1 "secondary_line_ratio" : 1
}, },

View file

@ -600,8 +600,8 @@ class FacebookGraphAsAbstractSet(Scene):
friendships = TextMobject("\\textbf{Friendships}") friendships = TextMobject("\\textbf{Friendships}")
friendships.shift(3*RIGHT).to_edge(UP) friendships.shift(3*RIGHT).to_edge(UP)
lines = Mobject( lines = Mobject(
Line(UP*SPACE_Y_RADIUS, DOWN*SPACE_Y_RADIUS), Line(UP*FRAME_Y_RADIUS, DOWN*FRAME_Y_RADIUS),
Line(LEFT*SPACE_X_RADIUS + 3*UP, RIGHT*SPACE_X_RADIUS + 3*UP) Line(LEFT*FRAME_X_RADIUS + 3*UP, RIGHT*FRAME_X_RADIUS + 3*UP)
).highlight("white") ).highlight("white")
self.add(accounts, friendships, lines) self.add(accounts, friendships, lines)
@ -626,13 +626,13 @@ class ExamplesOfGraphs(GraphScene):
["Objects \\quad\\quad ", "Thing that connects objects"] ["Objects \\quad\\quad ", "Thing that connects objects"]
)).to_corner().shift(0.5*RIGHT).split() )).to_corner().shift(0.5*RIGHT).split()
horizontal_line = Line( horizontal_line = Line(
(-SPACE_X_RADIUS, SPACE_Y_RADIUS-1, 0), (-FRAME_X_RADIUS, FRAME_Y_RADIUS-1, 0),
(max(notions.points[:,0]), SPACE_Y_RADIUS-1, 0) (max(notions.points[:,0]), FRAME_Y_RADIUS-1, 0)
) )
vert_line_x_val = min(notions.points[:,0]) - buff vert_line_x_val = min(notions.points[:,0]) - buff
vertical_line = Line( vertical_line = Line(
(vert_line_x_val, SPACE_Y_RADIUS, 0), (vert_line_x_val, FRAME_Y_RADIUS, 0),
(vert_line_x_val,-SPACE_Y_RADIUS, 0) (vert_line_x_val,-FRAME_Y_RADIUS, 0)
) )
objects_and_notions = [ objects_and_notions = [
("Facebook accounts", "Friendship"), ("Facebook accounts", "Friendship"),
@ -651,7 +651,7 @@ class ExamplesOfGraphs(GraphScene):
for (obj, notion), height in zip(objects_and_notions, it.count(2, -1)): for (obj, notion), height in zip(objects_and_notions, it.count(2, -1)):
obj_mob = TextMobject(obj, size = "\\small").to_edge(LEFT) obj_mob = TextMobject(obj, size = "\\small").to_edge(LEFT)
not_mob = TextMobject(notion, size = "\\small").to_edge(LEFT) not_mob = TextMobject(notion, size = "\\small").to_edge(LEFT)
not_mob.shift((vert_line_x_val + SPACE_X_RADIUS)*RIGHT) not_mob.shift((vert_line_x_val + FRAME_X_RADIUS)*RIGHT)
obj_mob.shift(height*UP) obj_mob.shift(height*UP)
not_mob.shift(height*UP) not_mob.shift(height*UP)
@ -773,10 +773,10 @@ class DrawDualGraph(GraphScene):
outer_region_mob = region_mobs.pop() outer_region_mob = region_mobs.pop()
outer_dual_vertex = self.dual_vertices.pop() outer_dual_vertex = self.dual_vertices.pop()
internal_edges = filter( internal_edges = filter(
lambda e : abs(e.start[0]) < SPACE_X_RADIUS and \ lambda e : abs(e.start[0]) < FRAME_X_RADIUS and \
abs(e.end[0]) < SPACE_X_RADIUS and \ abs(e.end[0]) < FRAME_X_RADIUS and \
abs(e.start[1]) < SPACE_Y_RADIUS and \ abs(e.start[1]) < FRAME_Y_RADIUS and \
abs(e.end[1]) < SPACE_Y_RADIUS, abs(e.end[1]) < FRAME_Y_RADIUS,
self.dual_edges self.dual_edges
) )
external_edges = filter( external_edges = filter(
@ -794,7 +794,7 @@ class DrawDualGraph(GraphScene):
self.wait() self.wait()
self.reset_background() self.reset_background()
self.play(ApplyFunction( self.play(ApplyFunction(
lambda p : (SPACE_X_RADIUS + SPACE_Y_RADIUS)*p/np.linalg.norm(p), lambda p : (FRAME_X_RADIUS + FRAME_Y_RADIUS)*p/np.linalg.norm(p),
outer_region_mob outer_region_mob
)) ))
self.wait() self.wait()
@ -849,9 +849,9 @@ class ListOfCorrespondances(Scene):
mob.shift(height*UP) mob.shift(height*UP)
arrow_xs = this_arrow.points[:,0] arrow_xs = this_arrow.points[:,0]
left.to_edge(RIGHT) left.to_edge(RIGHT)
left.shift((min(arrow_xs) - SPACE_X_RADIUS, 0, 0)) left.shift((min(arrow_xs) - FRAME_X_RADIUS, 0, 0))
right.to_edge(LEFT) right.to_edge(LEFT)
right.shift((max(arrow_xs) + SPACE_X_RADIUS, 0, 0)) right.shift((max(arrow_xs) + FRAME_X_RADIUS, 0, 0))
lines.append(Mobject(left, right, this_arrow)) lines.append(Mobject(left, right, this_arrow))
last = None last = None
for line in lines: for line in lines:

View file

@ -348,7 +348,7 @@ class AddingPureFrequencies(PiCreatureScene):
self.play(*it.chain( self.play(*it.chain(
map(MoveToTarget, movers), map(MoveToTarget, movers),
[ [
ApplyMethod(mob.shift, SPACE_Y_RADIUS*DOWN, remover = True) ApplyMethod(mob.shift, FRAME_Y_RADIUS*DOWN, remover = True)
for mob in randy, speaker for mob in randy, speaker
] ]
)) ))
@ -374,7 +374,7 @@ class AddingPureFrequencies(PiCreatureScene):
top_axes_point = axes.coords_to_point(x, self.equilibrium_height) top_axes_point = axes.coords_to_point(x, self.equilibrium_height)
x_point = np.array(top_axes_point) x_point = np.array(top_axes_point)
x_point[1] = 0 x_point[1] = 0
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS).move_to(x_point) v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS).move_to(x_point)
self.revert_to_original_skipping_status() self.revert_to_original_skipping_status()
self.play(GrowFromCenter(v_line)) self.play(GrowFromCenter(v_line))
@ -415,7 +415,7 @@ class AddingPureFrequencies(PiCreatureScene):
D_axes = self.D_axes D_axes = self.D_axes
rect = Rectangle( rect = Rectangle(
height = 2.5*SPACE_Y_RADIUS, height = 2.5*FRAME_Y_RADIUS,
width = MED_SMALL_BUFF, width = MED_SMALL_BUFF,
stroke_width = 0, stroke_width = 0,
fill_color = YELLOW, fill_color = YELLOW,
@ -606,7 +606,7 @@ class BreakApartSum(Scene):
"unit_size" : 0.5, "unit_size" : 0.5,
}, },
) )
axes.stretch_to_fit_width(2*SPACE_X_RADIUS - 2) axes.stretch_to_fit_width(FRAME_WIDTH - 2)
axes.stretch_to_fit_height(3) axes.stretch_to_fit_height(3)
axes.center() axes.center()
axes.to_edge(LEFT) axes.to_edge(LEFT)
@ -2266,7 +2266,7 @@ class BeforeGettingToTheFullMath(TeacherStudentsScene):
self.wait() self.wait()
self.play( self.play(
ApplyMethod( ApplyMethod(
formula.next_to, SPACE_X_RADIUS*RIGHT, RIGHT, formula.next_to, FRAME_X_RADIUS*RIGHT, RIGHT,
path_arc = TAU/16, path_arc = TAU/16,
rate_func = running_start, rate_func = running_start,
), ),
@ -2402,7 +2402,7 @@ class FilterOutHighPitch(AddingPureFrequencies, ShowCommutativeDiagram):
ReplacementTransform(time_axes.labels[0].copy(), freq_label), ReplacementTransform(time_axes.labels[0].copy(), freq_label),
GrowArrow(arrow), GrowArrow(arrow),
Write(ft_words), Write(ft_words),
VGroup(randy, speaker).shift, SPACE_Y_RADIUS*DOWN, VGroup(randy, speaker).shift, FRAME_Y_RADIUS*DOWN,
) )
self.remove(randy, speaker) self.remove(randy, speaker)
self.wait() self.wait()
@ -2562,7 +2562,7 @@ class ApplyFourierToFourier(DrawFrequencyPlot):
), ),
) )
self.play( self.play(
wound_up_graph.next_to, SPACE_X_RADIUS*LEFT, LEFT, wound_up_graph.next_to, FRAME_X_RADIUS*LEFT, LEFT,
remover = True remover = True
) )
self.wait() self.wait()
@ -2611,8 +2611,8 @@ class WriteComplexExponentialExpression(DrawFrequencyPlot):
"initial_winding_frequency" : 0.1, "initial_winding_frequency" : 0.1,
"circle_plane_config" : { "circle_plane_config" : {
"unit_size" : 2, "unit_size" : 2,
"y_radius" : SPACE_Y_RADIUS+LARGE_BUFF, "y_radius" : FRAME_Y_RADIUS+LARGE_BUFF,
"x_radius" : SPACE_X_RADIUS+LARGE_BUFF "x_radius" : FRAME_X_RADIUS+LARGE_BUFF
} }
} }
def construct(self): def construct(self):
@ -3861,7 +3861,7 @@ class BoundsAtInfinity(SummarizeFormula):
graph = self.graph graph = self.graph
time_interval = self.get_time_interval(-2, 2) time_interval = self.get_time_interval(-2, 2)
wide_interval = self.get_time_interval(-SPACE_X_RADIUS, SPACE_X_RADIUS) wide_interval = self.get_time_interval(-FRAME_X_RADIUS, FRAME_X_RADIUS)
bounds = VGroup(*reversed(expression.get_parts_by_tex("t_"))) bounds = VGroup(*reversed(expression.get_parts_by_tex("t_")))
bound_rects = VGroup(*[ bound_rects = VGroup(*[
SurroundingRectangle(b, buff = 0.5*SMALL_BUFF) SurroundingRectangle(b, buff = 0.5*SMALL_BUFF)
@ -3988,8 +3988,8 @@ class ShowUncertaintyPrinciple(Scene):
title = TextMobject("Uncertainty principle") title = TextMobject("Uncertainty principle")
self.add(title) self.add(title)
top_axes = Axes( top_axes = Axes(
x_min = -SPACE_X_RADIUS, x_min = -FRAME_X_RADIUS,
x_max = SPACE_X_RADIUS, x_max = FRAME_X_RADIUS,
y_min = 0, y_min = 0,
y_max = 3, y_max = 3,
y_axis_config = { y_axis_config = {
@ -4295,7 +4295,7 @@ class Thumbnail(Scene):
self.clear() self.clear()
title.center().to_edge(UP) title.center().to_edge(UP)
pol_graphs.scale_to_fit_width(2*SPACE_X_RADIUS - 1) pol_graphs.scale_to_fit_width(FRAME_WIDTH - 1)
pol_graphs.center() pol_graphs.center()
title.move_to(pol_graphs) title.move_to(pol_graphs)
title.shift(SMALL_BUFF*LEFT) title.shift(SMALL_BUFF*LEFT)

View file

@ -327,8 +327,8 @@ class SelfSimilarFractalsAsSubset(Scene):
def add_general_fractals(self): def add_general_fractals(self):
big_rectangle = Rectangle( big_rectangle = Rectangle(
width = 2*SPACE_X_RADIUS - MED_LARGE_BUFF, width = FRAME_WIDTH - MED_LARGE_BUFF,
height = 2*SPACE_Y_RADIUS - MED_LARGE_BUFF, height = FRAME_HEIGHT - MED_LARGE_BUFF,
) )
title = TextMobject("Fractals") title = TextMobject("Fractals")
title.scale(1.5) title.scale(1.5)
@ -371,15 +371,15 @@ class ConstrastSmoothAndFractal(Scene):
"fractal_dimension" : 1.21, "fractal_dimension" : 1.21,
} }
def construct(self): def construct(self):
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS) v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
smooth = TextMobject("Smooth") smooth = TextMobject("Smooth")
smooth.shift(SPACE_X_RADIUS*LEFT/2) smooth.shift(FRAME_X_RADIUS*LEFT/2)
fractal = TextMobject("Fractal") fractal = TextMobject("Fractal")
fractal.shift(SPACE_X_RADIUS*RIGHT/2) fractal.shift(FRAME_X_RADIUS*RIGHT/2)
VGroup(smooth, fractal).to_edge(UP) VGroup(smooth, fractal).to_edge(UP)
background_rectangle = Rectangle( background_rectangle = Rectangle(
height = 2*SPACE_Y_RADIUS, height = FRAME_HEIGHT,
width = SPACE_X_RADIUS, width = FRAME_X_RADIUS,
) )
background_rectangle.to_edge(RIGHT, buff = 0) background_rectangle.to_edge(RIGHT, buff = 0)
background_rectangle.set_fill(BLACK, 1) background_rectangle.set_fill(BLACK, 1)
@ -394,13 +394,13 @@ class ConstrastSmoothAndFractal(Scene):
anchors = britain.get_anchors() anchors = britain.get_anchors()
smooth_britain = VMobject() smooth_britain = VMobject()
smooth_britain.set_points_smoothly(anchors[::10]) smooth_britain.set_points_smoothly(anchors[::10])
smooth_britain.center().shift(SPACE_X_RADIUS*LEFT/2) smooth_britain.center().shift(FRAME_X_RADIUS*LEFT/2)
index = np.argmax(smooth_britain.get_anchors()[:,0]) index = np.argmax(smooth_britain.get_anchors()[:,0])
smooth_britain.zoom_point = smooth_britain.point_from_proportion( smooth_britain.zoom_point = smooth_britain.point_from_proportion(
self.britain_zoom_point_proportion self.britain_zoom_point_proportion
) )
britain.shift(SPACE_X_RADIUS*RIGHT/2) britain.shift(FRAME_X_RADIUS*RIGHT/2)
britain.zoom_point = britain.point_from_proportion( britain.zoom_point = britain.point_from_proportion(
self.britain_zoom_point_proportion self.britain_zoom_point_proportion
) )
@ -468,7 +468,7 @@ class InfiniteKochZoom(Scene):
class ShowIdealizations(Scene): class ShowIdealizations(Scene):
def construct(self): def construct(self):
arrow = DoubleArrow(SPACE_X_RADIUS*LEFT, SPACE_X_RADIUS*RIGHT) arrow = DoubleArrow(FRAME_X_RADIUS*LEFT, FRAME_X_RADIUS*RIGHT)
arrow.shift(DOWN) arrow.shift(DOWN)
left_words = TextMobject("Idealization \\\\ as smooth") left_words = TextMobject("Idealization \\\\ as smooth")
middle_words = TextMobject("Nature") middle_words = TextMobject("Nature")
@ -635,7 +635,7 @@ class FourSelfSimilarShapes(Scene):
"Line", "Square", "Cube", "Sierpinski" "Line", "Square", "Cube", "Sierpinski"
])) ]))
for title, x in zip(titles, np.linspace(-0.75, 0.75, 4)): for title, x in zip(titles, np.linspace(-0.75, 0.75, 4)):
title.shift(x*SPACE_X_RADIUS*RIGHT) title.shift(x*FRAME_X_RADIUS*RIGHT)
titles.to_edge(UP) titles.to_edge(UP)
return titles return titles
@ -857,7 +857,7 @@ class ScaledLineMass(Scene):
shape = self.get_shape() shape = self.get_shape()
shape.scale_to_fit_width(self.shape_width) shape.scale_to_fit_width(self.shape_width)
shape.center() shape.center()
shape.shift(SPACE_X_RADIUS*RIGHT/2 + self.vert_distance*UP) shape.shift(FRAME_X_RADIUS*RIGHT/2 + self.vert_distance*UP)
big_brace = Brace(shape, self.brace_direction) big_brace = Brace(shape, self.brace_direction)
big_brace_text = big_brace.get_text("$1$") big_brace_text = big_brace.get_text("$1$")
@ -979,14 +979,14 @@ class DefineTwoDimensional(PiCreatureScene):
self.title = title self.title = title
def add_h_line(self): def add_h_line(self):
self.h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) self.h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
self.add(self.h_line) self.add(self.h_line)
def add_shape(self): def add_shape(self):
shape = self.get_shape() shape = self.get_shape()
shape.scale_to_fit_width(self.shape_width) shape.scale_to_fit_width(self.shape_width)
shape.next_to(self.title, DOWN, buff = MED_LARGE_BUFF) shape.next_to(self.title, DOWN, buff = MED_LARGE_BUFF)
# self.shape.shift(SPACE_Y_RADIUS*UP/2) # self.shape.shift(FRAME_Y_RADIUS*UP/2)
self.mass_color = shape.get_color() self.mass_color = shape.get_color()
self.add(shape) self.add(shape)
@ -1207,10 +1207,10 @@ class LengthAndAreaOfSierpinski(ShowSierpinskiCurve):
} }
def construct(self): def construct(self):
length = TextMobject("Length = $\\infty$") length = TextMobject("Length = $\\infty$")
length.shift(SPACE_X_RADIUS*LEFT/2).to_edge(UP) length.shift(FRAME_X_RADIUS*LEFT/2).to_edge(UP)
area = TextMobject("Area = $0$") area = TextMobject("Area = $0$")
area.shift(SPACE_X_RADIUS*RIGHT/2).to_edge(UP) area.shift(FRAME_X_RADIUS*RIGHT/2).to_edge(UP)
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS) v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
self.add(length, area, v_line) self.add(length, area, v_line)
curve = self.get_curve(order = self.curve_start_order) curve = self.get_curve(order = self.curve_start_order)
@ -1239,12 +1239,12 @@ class LengthAndAreaOfSierpinski(ShowSierpinskiCurve):
# curve = ShowSierpinskiCurve.get_curve(self, order) # curve = ShowSierpinskiCurve.get_curve(self, order)
curve = SierpinskiCurve(order = order) curve = SierpinskiCurve(order = order)
curve.scale_to_fit_height(4).center() curve.scale_to_fit_height(4).center()
curve.shift(SPACE_X_RADIUS*LEFT/2) curve.shift(FRAME_X_RADIUS*LEFT/2)
return curve return curve
def get_sierpinski(self, order): def get_sierpinski(self, order):
result = Sierpinski(order = order) result = Sierpinski(order = order)
result.shift(SPACE_X_RADIUS*RIGHT/2) result.shift(FRAME_X_RADIUS*RIGHT/2)
return result return result
class FractionalAnalogOfLengthAndArea(Scene): class FractionalAnalogOfLengthAndArea(Scene):
@ -1450,14 +1450,14 @@ class DimensionOfQuadraticKoch(DimensionOfKoch):
def add_curve(self): def add_curve(self):
seed_label = TextMobject("Seed") seed_label = TextMobject("Seed")
seed_label.shift(SPACE_X_RADIUS*RIGHT/2).to_edge(UP) seed_label.shift(FRAME_X_RADIUS*RIGHT/2).to_edge(UP)
seed = self.get_curve(order = 1) seed = self.get_curve(order = 1)
seed.next_to(seed_label, DOWN) seed.next_to(seed_label, DOWN)
curve = seed.copy() curve = seed.copy()
resulting_fractal = TextMobject("Resulting fractal") resulting_fractal = TextMobject("Resulting fractal")
resulting_fractal.shift(SPACE_X_RADIUS*RIGHT/2) resulting_fractal.shift(FRAME_X_RADIUS*RIGHT/2)
self.add(seed_label, seed) self.add(seed_label, seed)
self.wait() self.wait()
@ -1731,17 +1731,17 @@ class BoxCountingScene(Scene):
"corner_rect_left_extension" : 0, "corner_rect_left_extension" : 0,
} }
def setup(self): def setup(self):
self.num_rows = 2*int(SPACE_Y_RADIUS/self.box_width)+1 self.num_rows = 2*int(FRAME_Y_RADIUS/self.box_width)+1
self.num_cols = 2*int(SPACE_X_RADIUS/self.box_width)+1 self.num_cols = 2*int(FRAME_X_RADIUS/self.box_width)+1
def get_grid(self): def get_grid(self):
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS) v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
v_lines = VGroup(*[ v_lines = VGroup(*[
v_line.copy().shift(u*x*self.box_width*RIGHT) v_line.copy().shift(u*x*self.box_width*RIGHT)
for x in range(self.num_cols/2+1) for x in range(self.num_cols/2+1)
for u in [-1, 1] for u in [-1, 1]
]) ])
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
h_lines = VGroup(*[ h_lines = VGroup(*[
h_line.copy().shift(u*y*self.box_width*UP) h_line.copy().shift(u*y*self.box_width*UP)
for y in range(self.num_rows/2+1) for y in range(self.num_rows/2+1)
@ -1811,8 +1811,8 @@ class BoxCountingScene(Scene):
def get_corner_rect(self): def get_corner_rect(self):
rect = Rectangle( rect = Rectangle(
height = SPACE_Y_RADIUS/2, height = FRAME_Y_RADIUS/2,
width = SPACE_X_RADIUS+self.corner_rect_left_extension, width = FRAME_X_RADIUS+self.corner_rect_left_extension,
stroke_width = 0, stroke_width = 0,
fill_color = BLACK, fill_color = BLACK,
fill_opacity = 0.8 fill_opacity = 0.8
@ -2736,14 +2736,14 @@ class CompareBritainAndNorway(Scene):
norway.to_corner(UP+RIGHT, buff = 0) norway.to_corner(UP+RIGHT, buff = 0)
fractalify(norway, order = 1, dimension = 1.5) fractalify(norway, order = 1, dimension = 1.5)
anchors = list(norway.get_anchors()) anchors = list(norway.get_anchors())
anchors.append(SPACE_X_RADIUS*RIGHT+SPACE_Y_RADIUS*UP) anchors.append(FRAME_X_RADIUS*RIGHT+FRAME_Y_RADIUS*UP)
norway.set_points_as_corners(anchors) norway.set_points_as_corners(anchors)
britain = Britain( britain = Britain(
fill_opacity = 0, fill_opacity = 0,
stroke_width = 2 stroke_width = 2
) )
britain.shift(SPACE_X_RADIUS*LEFT/2) britain.shift(FRAME_X_RADIUS*LEFT/2)
britain.to_edge(UP) britain.to_edge(UP)
fractalify(britain, order = 1, dimension = 1.21) fractalify(britain, order = 1, dimension = 1.21)
@ -2779,8 +2779,8 @@ class CompareOceansLabels(Scene):
label1 = TextMobject("Dimension $\\approx 2.05$") label1 = TextMobject("Dimension $\\approx 2.05$")
label2 = TextMobject("Dimension $\\approx 2.3$") label2 = TextMobject("Dimension $\\approx 2.3$")
label1.shift(SPACE_X_RADIUS*LEFT/2).to_edge(UP) label1.shift(FRAME_X_RADIUS*LEFT/2).to_edge(UP)
label2.shift(SPACE_X_RADIUS*RIGHT/2).to_edge(UP) label2.shift(FRAME_X_RADIUS*RIGHT/2).to_edge(UP)
self.play(Write(label1)) self.play(Write(label1))
self.wait() self.wait()
@ -2798,8 +2798,8 @@ class FractalNonFractalFlowChart(Scene):
man_made = TextMobject("Probably \\\\ man-made") man_made = TextMobject("Probably \\\\ man-made")
is_fractal.to_edge(UP) is_fractal.to_edge(UP)
nature.shift(SPACE_X_RADIUS*LEFT/2) nature.shift(FRAME_X_RADIUS*LEFT/2)
man_made.shift(SPACE_X_RADIUS*RIGHT/2) man_made.shift(FRAME_X_RADIUS*RIGHT/2)
yes_arrow = Arrow( yes_arrow = Arrow(
is_fractal.get_bottom(), is_fractal.get_bottom(),
@ -2953,7 +2953,7 @@ class Thumbnail(Scene):
koch_curve = QuadraticKoch(order = 6, monochromatic = True) koch_curve = QuadraticKoch(order = 6, monochromatic = True)
koch_curve.set_stroke(width = 0) koch_curve.set_stroke(width = 0)
koch_curve.set_fill(BLUE) koch_curve.set_fill(BLUE)
koch_curve.scale_to_fit_height(1.5*SPACE_Y_RADIUS) koch_curve.scale_to_fit_height(1.5*FRAME_Y_RADIUS)
koch_curve.to_edge(DOWN, buff = SMALL_BUFF) koch_curve.to_edge(DOWN, buff = SMALL_BUFF)
self.add(koch_curve, title) self.add(koch_curve, title)

View file

@ -30,7 +30,7 @@ class CountingScene(Scene):
CONFIG = { CONFIG = {
"base" : 10, "base" : 10,
"power_colors" : [YELLOW, MAROON_B, RED, GREEN, BLUE, PURPLE_D], "power_colors" : [YELLOW, MAROON_B, RED, GREEN, BLUE, PURPLE_D],
"counting_dot_starting_position" : (SPACE_X_RADIUS-1)*RIGHT + (SPACE_Y_RADIUS-1)*UP, "counting_dot_starting_position" : (FRAME_X_RADIUS-1)*RIGHT + (FRAME_Y_RADIUS-1)*UP,
"count_dot_starting_radius" : 0.5, "count_dot_starting_radius" : 0.5,
"dot_configuration_height" : 2, "dot_configuration_height" : 2,
"ones_configuration_location" : UP+2*RIGHT, "ones_configuration_location" : UP+2*RIGHT,
@ -534,7 +534,7 @@ class IntroduceKeith(Scene):
keith = Keith(mode = "dance_kick") keith = Keith(mode = "dance_kick")
keith_image = ImageMobject("keith_schwarz", invert = False) keith_image = ImageMobject("keith_schwarz", invert = False)
# keith_image = Rectangle() # keith_image = Rectangle()
keith_image.scale_to_fit_height(2*SPACE_Y_RADIUS - 2) keith_image.scale_to_fit_height(FRAME_HEIGHT - 2)
keith_image.next_to(ORIGIN, LEFT) keith_image.next_to(ORIGIN, LEFT)
keith.move_to(keith_image, DOWN+RIGHT) keith.move_to(keith_image, DOWN+RIGHT)
morty.next_to(keith, buff = LARGE_BUFF, aligned_edge = DOWN) morty.next_to(keith, buff = LARGE_BUFF, aligned_edge = DOWN)
@ -992,7 +992,7 @@ class RhythmOfDecimalCounting(CountingScene):
class DecimalCountingAtHundredsScale(CountingScene): class DecimalCountingAtHundredsScale(CountingScene):
CONFIG = { CONFIG = {
"power_colors" : [RED, GREEN, BLUE, PURPLE_D], "power_colors" : [RED, GREEN, BLUE, PURPLE_D],
"counting_dot_starting_position" : (SPACE_X_RADIUS+1)*RIGHT + (SPACE_Y_RADIUS-2)*UP, "counting_dot_starting_position" : (FRAME_X_RADIUS+1)*RIGHT + (FRAME_Y_RADIUS-2)*UP,
"ones_configuration_location" : 2*UP+5.7*RIGHT, "ones_configuration_location" : 2*UP+5.7*RIGHT,
"num_start_location" : DOWN + 3*RIGHT "num_start_location" : DOWN + 3*RIGHT
} }
@ -1141,8 +1141,8 @@ class IntroduceBinaryCounting(BinaryCountingScene):
def show_self_similarity(self): def show_self_similarity(self):
cover_rect = Rectangle() cover_rect = Rectangle()
cover_rect.scale_to_fit_width(2*SPACE_X_RADIUS) cover_rect.scale_to_fit_width(FRAME_WIDTH)
cover_rect.scale_to_fit_height(2*SPACE_Y_RADIUS) cover_rect.scale_to_fit_height(FRAME_HEIGHT)
cover_rect.set_stroke(width = 0) cover_rect.set_stroke(width = 0)
cover_rect.set_fill(BLACK, opacity = 0.85) cover_rect.set_fill(BLACK, opacity = 0.85)
big_dot = self.curr_configurations[-1][0].copy() big_dot = self.curr_configurations[-1][0].copy()
@ -1152,7 +1152,7 @@ class IntroduceBinaryCounting(BinaryCountingScene):
) )
self.play( self.play(
big_dot.center, big_dot.center,
big_dot.scale_to_fit_height, 2*SPACE_Y_RADIUS-2, big_dot.scale_to_fit_height, FRAME_HEIGHT-2,
big_dot.to_edge, LEFT, big_dot.to_edge, LEFT,
run_time = 5 run_time = 5
) )
@ -2060,7 +2060,7 @@ class RecursiveSolutionToConstrained(RecursiveSolution):
] ]
sub_steps, sub_sub_steps = subdivisions[:2] sub_steps, sub_sub_steps = subdivisions[:2]
for steps in subdivisions: for steps in subdivisions:
steps.scale_to_fit_width(2*SPACE_X_RADIUS-1) steps.scale_to_fit_width(FRAME_WIDTH-1)
subdivisions.append( subdivisions.append(
TextMobject("\\tiny Move disk 0, Move disk 0").highlight(BLUE) TextMobject("\\tiny Move disk 0, Move disk 0").highlight(BLUE)
) )
@ -2219,7 +2219,7 @@ class RecursiveSolutionToConstrained(RecursiveSolution):
smaller_subdivision.set_fill(opacity = 0) smaller_subdivision.set_fill(opacity = 0)
self.play( self.play(
steps.shift, steps.shift,
(SPACE_Y_RADIUS-sub_sub_steps.get_top()[1]-MED_SMALL_BUFF)*UP, (FRAME_Y_RADIUS-sub_sub_steps.get_top()[1]-MED_SMALL_BUFF)*UP,
self.eyes.look_at_anim(steps) self.eyes.look_at_anim(steps)
) )
self.play(ApplyMethod( self.play(ApplyMethod(
@ -2388,7 +2388,7 @@ class CompareNumberSystems(Scene):
class IntroduceTernaryCounting(CountingScene): class IntroduceTernaryCounting(CountingScene):
CONFIG = { CONFIG = {
"base" : 3, "base" : 3,
"counting_dot_starting_position" : (SPACE_X_RADIUS-1)*RIGHT + (SPACE_Y_RADIUS-1)*UP, "counting_dot_starting_position" : (FRAME_X_RADIUS-1)*RIGHT + (FRAME_Y_RADIUS-1)*UP,
"count_dot_starting_radius" : 0.5, "count_dot_starting_radius" : 0.5,
"dot_configuration_height" : 1, "dot_configuration_height" : 1,
"ones_configuration_location" : UP+2*RIGHT, "ones_configuration_location" : UP+2*RIGHT,
@ -2443,7 +2443,7 @@ class TernaryCountingSelfSimilarPattern(Scene):
for i, color in enumerate(colors[:-1]): for i, color in enumerate(colors[:-1]):
step[-i-2].highlight(color) step[-i-2].highlight(color)
VGroup(*steps[1::2]).highlight(colors[-1]) VGroup(*steps[1::2]).highlight(colors[-1])
steps.scale_to_fit_width(2*SPACE_X_RADIUS-1) steps.scale_to_fit_width(FRAME_WIDTH-1)
brace = Brace(steps, UP) brace = Brace(steps, UP)
word_group = VGroup(title, brace, steps) word_group = VGroup(title, brace, steps)
word_group.arrange_submobjects(DOWN) word_group.arrange_submobjects(DOWN)
@ -2720,7 +2720,7 @@ class AnswerConfigurationsCount(TowersOfHanoiScene):
for d in range(self.num_disks) for d in range(self.num_disks)
])) ]))
parentheticals.arrange_submobjects() parentheticals.arrange_submobjects()
parentheticals.scale_to_fit_width(2*SPACE_X_RADIUS-1) parentheticals.scale_to_fit_width(FRAME_WIDTH-1)
parentheticals.next_to(top_mob, DOWN) parentheticals.next_to(top_mob, DOWN)
for parens in parentheticals: for parens in parentheticals:
brace = Brace(parens) brace = Brace(parens)
@ -2758,7 +2758,7 @@ class AnswerConfigurationsCount(TowersOfHanoiScene):
class ThisIsMostEfficientText(Scene): class ThisIsMostEfficientText(Scene):
def construct(self): def construct(self):
text = TextMobject("This is the most efficient solution") text = TextMobject("This is the most efficient solution")
text.scale_to_fit_width(2*SPACE_X_RADIUS - 1) text.scale_to_fit_width(FRAME_WIDTH - 1)
text.to_edge(DOWN) text.to_edge(DOWN)
self.play(Write(text)) self.play(Write(text))
self.wait(2) self.wait(2)
@ -2882,7 +2882,7 @@ class SierpinskiGraphScene(Scene):
self.nodes.add(node) self.nodes.add(node)
if self.include_towers: if self.include_towers:
self.add_towers_to_nodes() self.add_towers_to_nodes()
self.nodes.scale_to_fit_height(2*SPACE_Y_RADIUS-2) self.nodes.scale_to_fit_height(FRAME_HEIGHT-2)
self.nodes.to_edge(UP) self.nodes.to_edge(UP)
def get_node_circles(self, order = 3): def get_node_circles(self, order = 3):
@ -2967,10 +2967,10 @@ class SierpinskiGraphScene(Scene):
for index in node_indices for index in node_indices
]) ])
everything = VGroup(*self.get_mobjects()) everything = VGroup(*self.get_mobjects())
if nodes.get_width()/nodes.get_height() > SPACE_X_RADIUS/SPACE_Y_RADIUS: if nodes.get_width()/nodes.get_height() > FRAME_X_RADIUS/FRAME_Y_RADIUS:
scale_factor = (2*SPACE_X_RADIUS-2)/nodes.get_width() scale_factor = (FRAME_WIDTH-2)/nodes.get_width()
else: else:
scale_factor = (2*SPACE_Y_RADIUS-2)/nodes.get_height() scale_factor = (FRAME_HEIGHT-2)/nodes.get_height()
self.play( self.play(
everything.shift, -nodes.get_center(), everything.shift, -nodes.get_center(),
everything.scale, scale_factor everything.scale, scale_factor
@ -3003,7 +3003,7 @@ class IntroduceGraphStructure(SierpinskiGraphScene):
node = self.nodes[index] node = self.nodes[index]
node.save_state() node.save_state()
self.play( self.play(
node.scale_to_fit_height, 2*SPACE_Y_RADIUS-2, node.scale_to_fit_height, FRAME_HEIGHT-2,
node.next_to, ORIGIN, vect node.next_to, ORIGIN, vect
) )
self.wait() self.wait()

View file

@ -543,20 +543,20 @@ class CirclesSpheresSumsSquares(ExternallyAnimatedScene):
class BackAndForth(Scene): class BackAndForth(Scene):
def construct(self): def construct(self):
analytic = TextMobject("Analytic") analytic = TextMobject("Analytic")
analytic.shift(SPACE_X_RADIUS*LEFT/2) analytic.shift(FRAME_X_RADIUS*LEFT/2)
analytic.to_edge(UP, buff = MED_SMALL_BUFF) analytic.to_edge(UP, buff = MED_SMALL_BUFF)
geometric = TextMobject("Geometric") geometric = TextMobject("Geometric")
geometric.shift(SPACE_X_RADIUS*RIGHT/2) geometric.shift(FRAME_X_RADIUS*RIGHT/2)
geometric.to_edge(UP, buff = MED_SMALL_BUFF) geometric.to_edge(UP, buff = MED_SMALL_BUFF)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
h_line.to_edge(UP, LARGE_BUFF) h_line.to_edge(UP, LARGE_BUFF)
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS) v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
self.add(analytic, geometric, h_line, v_line) self.add(analytic, geometric, h_line, v_line)
pair = TexMobject("(", "x", ",", "y", ")") pair = TexMobject("(", "x", ",", "y", ")")
pair.shift(SPACE_X_RADIUS*LEFT/2 + SPACE_Y_RADIUS*UP/3) pair.shift(FRAME_X_RADIUS*LEFT/2 + FRAME_Y_RADIUS*UP/3)
triplet = TexMobject("(", "x", ",", "y", ",", "z", ")") triplet = TexMobject("(", "x", ",", "y", ",", "z", ")")
triplet.shift(SPACE_X_RADIUS*LEFT/2 + SPACE_Y_RADIUS*DOWN/2) triplet.shift(FRAME_X_RADIUS*LEFT/2 + FRAME_Y_RADIUS*DOWN/2)
for mob in pair, triplet: for mob in pair, triplet:
arrow = DoubleArrow(LEFT, RIGHT) arrow = DoubleArrow(LEFT, RIGHT)
arrow.move_to(mob) arrow.move_to(mob)
@ -572,7 +572,7 @@ class BackAndForth(Scene):
plane_group = VGroup(plane, circle) plane_group = VGroup(plane, circle)
plane_group.scale(0.4) plane_group.scale(0.4)
plane_group.next_to(h_line, DOWN, SMALL_BUFF) plane_group.next_to(h_line, DOWN, SMALL_BUFF)
plane_group.shift(SPACE_X_RADIUS*RIGHT/2) plane_group.shift(FRAME_X_RADIUS*RIGHT/2)
self.play(Write(pair)) self.play(Write(pair))
@ -804,20 +804,20 @@ class OfferAHybrid(SliderScene):
def construct(self): def construct(self):
self.remove(self.sliders) self.remove(self.sliders)
titles = self.get_titles() titles = self.get_titles()
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
h_line.next_to(titles, DOWN) h_line.next_to(titles, DOWN)
v_lines = VGroup(*[ v_lines = VGroup(*[
Line(UP, DOWN).scale(SPACE_Y_RADIUS) Line(UP, DOWN).scale(FRAME_Y_RADIUS)
for x in range(2) for x in range(2)
]) ])
v_lines.generate_target() v_lines.generate_target()
for line, vect in zip(v_lines.target, [LEFT, RIGHT]): for line, vect in zip(v_lines.target, [LEFT, RIGHT]):
line.shift(vect*SPACE_X_RADIUS/3) line.shift(vect*FRAME_X_RADIUS/3)
equation = TexMobject("x^2 + y^2 + z^2 = 1") equation = TexMobject("x^2 + y^2 + z^2 = 1")
equation.generate_target() equation.generate_target()
equation.shift(SPACE_X_RADIUS*LEFT/2) equation.shift(FRAME_X_RADIUS*LEFT/2)
equation.target.shift(2*SPACE_X_RADIUS*LEFT/3) equation.target.shift(FRAME_WIDTH*LEFT/3)
self.add(titles, h_line, v_lines, equation) self.add(titles, h_line, v_lines, equation)
self.wait() self.wait()
@ -836,10 +836,10 @@ class OfferAHybrid(SliderScene):
titles[1].highlight(BLUE) titles[1].highlight(BLUE)
titles.generate_target() titles.generate_target()
titles[1].scale_in_place(0.001) titles[1].scale_in_place(0.001)
titles[0].shift(SPACE_X_RADIUS*LEFT/2) titles[0].shift(FRAME_X_RADIUS*LEFT/2)
titles.target[0].shift(2*SPACE_X_RADIUS*LEFT/3) titles.target[0].shift(FRAME_WIDTH*LEFT/3)
titles[2].shift(SPACE_X_RADIUS*RIGHT/2) titles[2].shift(FRAME_X_RADIUS*RIGHT/2)
titles.target[2].shift(2*SPACE_X_RADIUS*RIGHT/3) titles.target[2].shift(FRAME_WIDTH*RIGHT/3)
return titles return titles
class TODOBoxExample(TODOStub): class TODOBoxExample(TODOStub):
@ -1766,7 +1766,7 @@ class ThreeDCubeCorners(Scene):
name = TextMobject("Corners: ") name = TextMobject("Corners: ")
name.next_to(coordinates[0], LEFT) name.next_to(coordinates[0], LEFT)
group = VGroup(name, coordinates) group = VGroup(name, coordinates)
group.scale_to_fit_height(2*SPACE_Y_RADIUS - 1) group.scale_to_fit_height(FRAME_HEIGHT - 1)
group.to_edge(LEFT) group.to_edge(LEFT)
self.play(Write(name, run_time = 2)) self.play(Write(name, run_time = 2))
@ -2480,7 +2480,7 @@ class FourDBoxExampleWithSliders(ThreeDBoxExampleWithSliders):
title = TextMobject( title = TextMobject(
"$2 \\!\\times\\! 2 \\!\\times\\! 2 \\!\\times\\! 2$ box vertices:" "$2 \\!\\times\\! 2 \\!\\times\\! 2 \\!\\times\\! 2$ box vertices:"
) )
title.shift(SPACE_X_RADIUS*LEFT/2) title.shift(FRAME_X_RADIUS*LEFT/2)
title.to_edge(UP) title.to_edge(UP)
coordinates = list(it.product(*4*[[1, -1]])) coordinates = list(it.product(*4*[[1, -1]]))
@ -3110,7 +3110,7 @@ class ThreeDOuterBoundingBoxWords(Scene):
"$4 \\!\\times\\! 4\\!\\times\\! 4$ outer\\\\", "$4 \\!\\times\\! 4\\!\\times\\! 4$ outer\\\\",
"bounding box" "bounding box"
) )
words.scale_to_fit_width(2*SPACE_X_RADIUS-1) words.scale_to_fit_width(FRAME_WIDTH-1)
words.to_edge(DOWN) words.to_edge(DOWN)
words.highlight(MAROON_B) words.highlight(MAROON_B)
@ -3544,7 +3544,7 @@ class Podcast(TeacherStudentsScene):
title = TextMobject("Podcast!") title = TextMobject("Podcast!")
title.scale(1.5) title.scale(1.5)
title.to_edge(UP) title.to_edge(UP)
title.shift(SPACE_X_RADIUS*LEFT/2) title.shift(FRAME_X_RADIUS*LEFT/2)
self.add(title) self.add(title)
q_and_a = TextMobject("Q\\&A Followup") q_and_a = TextMobject("Q\\&A Followup")

View file

@ -40,7 +40,7 @@ from helpers import *
def get_time_line(): def get_time_line():
length = 5.2*SPACE_X_RADIUS length = 2.6*FRAME_WIDTH
year_range = 400 year_range = 400
time_line = NumberLine( time_line = NumberLine(
numerical_radius = year_range/2, numerical_radius = year_range/2,
@ -123,8 +123,8 @@ class AskMathematicianFriend(Scene):
class TimeLineAboutSpaceFilling(Scene): class TimeLineAboutSpaceFilling(Scene):
def construct(self): def construct(self):
curve = PeanoCurve(order = 5) curve = PeanoCurve(order = 5)
curve.stretch_to_fit_width(2*SPACE_X_RADIUS) curve.stretch_to_fit_width(FRAME_WIDTH)
curve.stretch_to_fit_height(2*SPACE_Y_RADIUS) curve.stretch_to_fit_height(FRAME_HEIGHT)
curve_start = curve.copy() curve_start = curve.copy()
curve_start.apply_over_attr_arrays( curve_start.apply_over_attr_arrays(
lambda arr : arr[:200] lambda arr : arr[:200]
@ -525,7 +525,7 @@ class FormalDefinitionOfContinuity(Scene):
self.output.highlight(GREEN_A) self.output.highlight(GREEN_A)
self.interval = UnitInterval() self.interval = UnitInterval()
self.interval.scale_to_fit_width(SPACE_X_RADIUS-1) self.interval.scale_to_fit_width(FRAME_X_RADIUS-1)
self.interval.to_edge(LEFT) self.interval.to_edge(LEFT)
self.input_dot = Dot(color = self.input_color) self.input_dot = Dot(color = self.input_color)
@ -574,12 +574,12 @@ class FormalDefinitionOfContinuity(Scene):
def label_spaces(self): def label_spaces(self):
input_space = TextMobject("Input Space") input_space = TextMobject("Input Space")
input_space.to_edge(UP) input_space.to_edge(UP)
input_space.shift(LEFT*SPACE_X_RADIUS/2) input_space.shift(LEFT*FRAME_X_RADIUS/2)
output_space = TextMobject("Output Space") output_space = TextMobject("Output Space")
output_space.to_edge(UP) output_space.to_edge(UP)
output_space.shift(RIGHT*SPACE_X_RADIUS/2) output_space.shift(RIGHT*FRAME_X_RADIUS/2)
line = Line( line = Line(
UP*SPACE_Y_RADIUS, DOWN*SPACE_Y_RADIUS, UP*FRAME_Y_RADIUS, DOWN*FRAME_Y_RADIUS,
color = WHITE color = WHITE
) )
self.play( self.play(
@ -1012,7 +1012,7 @@ class ThreeThingsToProve(Scene):
class TilingSpace(Scene): class TilingSpace(Scene):
def construct(self): def construct(self):
coords_set = [ORIGIN] coords_set = [ORIGIN]
for n in range(int(2*SPACE_X_RADIUS)): for n in range(int(FRAME_WIDTH)):
for vect in UP, RIGHT: for vect in UP, RIGHT:
for k in range(n): for k in range(n):
new_coords = coords_set[-1]+((-1)**n)*vect new_coords = coords_set[-1]+((-1)**n)*vect

View file

@ -68,10 +68,10 @@ class InfiniteResultsFiniteWorld(Scene):
right_mobs = [right_words, right_formula] right_mobs = [right_words, right_formula]
for mob in left_mobs: for mob in left_mobs:
mob.to_edge(RIGHT, buff = 1) mob.to_edge(RIGHT, buff = 1)
mob.shift(SPACE_X_RADIUS*LEFT) mob.shift(FRAME_X_RADIUS*LEFT)
for mob in right_mobs: for mob in right_mobs:
mob.to_edge(LEFT, buff = 1) mob.to_edge(LEFT, buff = 1)
mob.shift(SPACE_X_RADIUS*RIGHT) mob.shift(FRAME_X_RADIUS*RIGHT)
arrow = Arrow(left_words, right_words) arrow = Arrow(left_words, right_words)
right_overwords.next_to(right_formula, UP) right_overwords.next_to(right_formula, UP)

View file

@ -167,7 +167,7 @@ class IntroduceDivergentSum(Scene):
brace.stretch_to_fit_width( brace.stretch_to_fit_width(
max(equation[x].points[:,0]) - min_x_coord max(equation[x].points[:,0]) - min_x_coord
) )
brace.to_edge(LEFT, buff = SPACE_X_RADIUS+min_x_coord) brace.to_edge(LEFT, buff = FRAME_X_RADIUS+min_x_coord)
if sum_value: if sum_value:
self.remove(sum_value) self.remove(sum_value)
sum_value = TexMobject(str(2**(x+1) - 1)) sum_value = TexMobject(str(2**(x+1) - 1))
@ -180,7 +180,7 @@ class IntroduceDivergentSum(Scene):
) )
end_brace = deepcopy(brace).stretch_to_fit_width( end_brace = deepcopy(brace).stretch_to_fit_width(
max(ellipses.points[:,0])-min_x_coord max(ellipses.points[:,0])-min_x_coord
).to_edge(LEFT, buff = SPACE_X_RADIUS+min_x_coord) ).to_edge(LEFT, buff = FRAME_X_RADIUS+min_x_coord)
kwargs = {"run_time" : 5.0, "rate_func" : rush_into} kwargs = {"run_time" : 5.0, "rate_func" : rush_into}
flip_through = FlipThroughNumbers( flip_through = FlipThroughNumbers(
lambda x : 2**(x+1)-1, lambda x : 2**(x+1)-1,
@ -204,7 +204,7 @@ class ClearlyNonsense(Scene):
number_line = NumberLine().add_numbers() number_line = NumberLine().add_numbers()
div_sum = divergent_sum() div_sum = divergent_sum()
this_way = TextMobject("Sum goes this way...") this_way = TextMobject("Sum goes this way...")
this_way.to_edge(LEFT).shift(RIGHT*(SPACE_X_RADIUS+1) + DOWN) this_way.to_edge(LEFT).shift(RIGHT*(FRAME_X_RADIUS+1) + DOWN)
how_here = TextMobject("How does it end up here?") how_here = TextMobject("How does it end up here?")
how_here.shift(1.5*UP+LEFT) how_here.shift(1.5*UP+LEFT)
neg_1_arrow = Arrow( neg_1_arrow = Arrow(
@ -212,7 +212,7 @@ class ClearlyNonsense(Scene):
tail=how_here.get_center()+0.5*DOWN tail=how_here.get_center()+0.5*DOWN
) )
right_arrow = Arrow( right_arrow = Arrow(
(SPACE_X_RADIUS-0.5)*RIGHT + DOWN, (FRAME_X_RADIUS-0.5)*RIGHT + DOWN,
tail = (max(this_way.points[:,0]), -1, 0) tail = (max(this_way.points[:,0]), -1, 0)
) )
how_here.highlight("red") how_here.highlight("red")
@ -303,7 +303,7 @@ class OutlineOfVideo(Scene):
# # """ # # """
# # ], size = "\\Small") # # ], size = "\\Small")
# # text.scale(1.5).to_edge(LEFT).shift(UP).highlight("white") # # text.scale(1.5).to_edge(LEFT).shift(UP).highlight("white")
# # text.highlight("green", lambda (x, y, z) : x < -SPACE_X_RADIUS + 1) # # text.highlight("green", lambda (x, y, z) : x < -FRAME_X_RADIUS + 1)
# # line_one_first, equation, line_one_last, line_two = text.split() # # line_one_first, equation, line_one_last, line_two = text.split()
# # line_two.shift(2*DOWN) # # line_two.shift(2*DOWN)
# # div_sum = divergent_sum().scale(0.5).shift(3*UP) # # div_sum = divergent_sum().scale(0.5).shift(3*UP)
@ -390,7 +390,7 @@ class YouAsMathematician(Scene):
self.clear() self.clear()
self.play( self.play(
ApplyPointwiseFunction( ApplyPointwiseFunction(
lambda p : 3*SPACE_X_RADIUS*p/np.linalg.norm(p), lambda p : 3*FRAME_X_RADIUS*p/np.linalg.norm(p),
everything everything
), ),
*[ *[
@ -779,7 +779,7 @@ class CircleZoomInOnOne(Scene):
class ZoomInOnOne(Scene): class ZoomInOnOne(Scene):
def construct(self): def construct(self):
num_iterations = 8 num_iterations = 8
number_line = NumberLine(interval_size = 1, radius = SPACE_X_RADIUS+2) number_line = NumberLine(interval_size = 1, radius = FRAME_X_RADIUS+2)
number_line.filter_out(lambda (x, y, z):abs(y)>0.1) number_line.filter_out(lambda (x, y, z):abs(y)>0.1)
nl_with_nums = deepcopy(number_line).add_numbers() nl_with_nums = deepcopy(number_line).add_numbers()
self.play(ApplyMethod(nl_with_nums.shift, 2*LEFT)) self.play(ApplyMethod(nl_with_nums.shift, 2*LEFT))
@ -860,8 +860,8 @@ class DefineInfiniteSum(Scene):
bottom = (min(expression.points[:,1]) - buff)*UP bottom = (min(expression.points[:,1]) - buff)*UP
side = (max(expression.points[:,0]) + buff)*RIGHT side = (max(expression.points[:,0]) + buff)*RIGHT
lines = [ lines = [
Line(SPACE_X_RADIUS*LEFT+bottom, side+bottom), Line(FRAME_X_RADIUS*LEFT+bottom, side+bottom),
Line(SPACE_Y_RADIUS*UP+side, side+bottom) Line(FRAME_Y_RADIUS*UP+side, side+bottom)
] ]
self.play(*[ self.play(*[
ShowCreation(line.highlight("white")) ShowCreation(line.highlight("white"))
@ -963,8 +963,8 @@ class SeekMoreGeneralTruths(Scene):
"&\\sum_{n = 0}^\\infty" + summand + "= ? \\\\" "&\\sum_{n = 0}^\\infty" + summand + "= ? \\\\"
for summand in summands for summand in summands
], size = "") ], size = "")
sums.stretch_to_fit_height(2*SPACE_Y_RADIUS-1) sums.stretch_to_fit_height(FRAME_HEIGHT-1)
sums.shift((SPACE_Y_RADIUS-0.5-max(sums.points[:,1]))*UP) sums.shift((FRAME_Y_RADIUS-0.5-max(sums.points[:,1]))*UP)
for qsum in sums.split(): for qsum in sums.split():
qsum.sort_points(lambda p : np.dot(p, DOWN+RIGHT)) qsum.sort_points(lambda p : np.dot(p, DOWN+RIGHT))
@ -1355,7 +1355,7 @@ class SumPowersOfTwoAnimation(Scene):
dot = Dot(density = 3*DEFAULT_POINT_DENSITY_1D).scale(1.5) dot = Dot(density = 3*DEFAULT_POINT_DENSITY_1D).scale(1.5)
dot_width = dot.get_width()*RIGHT dot_width = dot.get_width()*RIGHT
dot_buff = 0.2*RIGHT dot_buff = 0.2*RIGHT
left = (SPACE_X_RADIUS-1)*LEFT left = (FRAME_X_RADIUS-1)*LEFT
right = left + 2*dot_width + dot_buff right = left + 2*dot_width + dot_buff
top_brace_left = left+dot_width+dot_buff+0.3*DOWN top_brace_left = left+dot_width+dot_buff+0.3*DOWN
bottom_brace_left = left + 0.3*DOWN bottom_brace_left = left + 0.3*DOWN
@ -1739,8 +1739,8 @@ class RoomsAndSubrooms(Scene):
class RoomsAndSubroomsWithNumbers(Scene): class RoomsAndSubroomsWithNumbers(Scene):
def construct(self): def construct(self):
zero_local = (SPACE_X_RADIUS-0.5)*LEFT zero_local = (FRAME_X_RADIUS-0.5)*LEFT
zero_one_width = SPACE_X_RADIUS-0.3 zero_one_width = FRAME_X_RADIUS-0.3
zero, power_mobs = self.draw_numbers(zero_local, zero_one_width) zero, power_mobs = self.draw_numbers(zero_local, zero_one_width)
self.wait() self.wait()
@ -1782,7 +1782,7 @@ class RoomsAndSubroomsWithNumbers(Scene):
rectangles = [] rectangles = []
for n in range(4): for n in range(4):
rect = Rectangle( rect = Rectangle(
2*SPACE_Y_RADIUS-(n+2)*upper_buff, FRAME_HEIGHT-(n+2)*upper_buff,
zero_one_width/(2**n)-0.85*(n+1)*side_buff zero_one_width/(2**n)-0.85*(n+1)*side_buff
) )
rect.sort_points(np.linalg.norm) rect.sort_points(np.linalg.norm)
@ -2049,12 +2049,12 @@ class PAdicMetric(Scene):
class FuzzyDiscoveryToNewMath(Scene): class FuzzyDiscoveryToNewMath(Scene):
def construct(self): def construct(self):
fuzzy = TextMobject("Fuzzy Discovery") fuzzy = TextMobject("Fuzzy Discovery")
fuzzy.to_edge(UP).shift(SPACE_X_RADIUS*LEFT/2) fuzzy.to_edge(UP).shift(FRAME_X_RADIUS*LEFT/2)
new_math = TextMobject("New Math") new_math = TextMobject("New Math")
new_math.to_edge(UP).shift(SPACE_X_RADIUS*RIGHT/2) new_math.to_edge(UP).shift(FRAME_X_RADIUS*RIGHT/2)
lines = Mobject( lines = Mobject(
Line(DOWN*SPACE_Y_RADIUS, UP*SPACE_Y_RADIUS), Line(DOWN*FRAME_Y_RADIUS, UP*FRAME_Y_RADIUS),
Line(3*UP+LEFT*SPACE_X_RADIUS, 3*UP+RIGHT*SPACE_X_RADIUS) Line(3*UP+LEFT*FRAME_X_RADIUS, 3*UP+RIGHT*FRAME_X_RADIUS)
) )
fuzzy_discoveries = [ fuzzy_discoveries = [
TexMobject("a^2 + b^2 = c^2"), TexMobject("a^2 + b^2 = c^2"),
@ -2094,7 +2094,7 @@ class FuzzyDiscoveryToNewMath(Scene):
math.scale(0.65) math.scale(0.65)
for mob in disc, math: for mob in disc, math:
mob.to_edge(LEFT).shift(count*UP) mob.to_edge(LEFT).shift(count*UP)
math.shift(SPACE_X_RADIUS*RIGHT) math.shift(FRAME_X_RADIUS*RIGHT)
midpoints.append(count*UP) midpoints.append(count*UP)
self.add(fuzzy, lines) self.add(fuzzy, lines)

View file

@ -55,14 +55,14 @@ class LatticePointScene(Scene):
} }
def setup(self): def setup(self):
if self.x_radius is None: if self.x_radius is None:
self.x_radius = self.y_radius*SPACE_X_RADIUS/SPACE_Y_RADIUS self.x_radius = self.y_radius*FRAME_X_RADIUS/FRAME_Y_RADIUS
plane = ComplexPlane( plane = ComplexPlane(
y_radius = self.y_radius, y_radius = self.y_radius,
x_radius = self.x_radius, x_radius = self.x_radius,
secondary_line_ratio = self.secondary_line_ratio, secondary_line_ratio = self.secondary_line_ratio,
radius = self.plane_color radius = self.plane_color
) )
plane.scale_to_fit_height(2*SPACE_Y_RADIUS) plane.scale_to_fit_height(FRAME_HEIGHT)
plane.shift(self.plane_center) plane.shift(self.plane_center)
self.add(plane) self.add(plane)
self.plane = plane self.plane = plane
@ -148,8 +148,8 @@ class LatticePointScene(Scene):
]) ])
def add_axis_labels(self, spacing = 2): def add_axis_labels(self, spacing = 2):
x_max = int(self.plane.point_to_coords(SPACE_X_RADIUS*RIGHT)[0]) x_max = int(self.plane.point_to_coords(FRAME_X_RADIUS*RIGHT)[0])
y_max = int(self.plane.point_to_coords(SPACE_Y_RADIUS*UP)[1]) y_max = int(self.plane.point_to_coords(FRAME_Y_RADIUS*UP)[1])
x_range = range(spacing, x_max, spacing) x_range = range(spacing, x_max, spacing)
y_range = range(spacing, y_max, spacing) y_range = range(spacing, y_max, spacing)
for r in x_range, y_range: for r in x_range, y_range:
@ -226,7 +226,7 @@ class Introduction(PiCreatureScene):
self.play( self.play(
Write(primes, run_time = 2), Write(primes, run_time = 2),
morty.change_mode, "happy", morty.change_mode, "happy",
video.scale_to_fit_height, 2*SPACE_X_RADIUS, video.scale_to_fit_height, FRAME_WIDTH,
video.center, video.center,
video.set_fill, None, 0 video.set_fill, None, 0
) )
@ -664,7 +664,7 @@ class Outline(PiCreatureScene):
value.next_to(arrow, DOWN) value.next_to(arrow, DOWN)
numerators.add(value) numerators.add(value)
group = VGroup(chis, arrows, numerators) group = VGroup(chis, arrows, numerators)
group.scale_to_fit_width(1.3*SPACE_X_RADIUS) group.scale_to_fit_width(1.3*FRAME_X_RADIUS)
group.to_corner(DOWN+LEFT) group.to_corner(DOWN+LEFT)
self.play(FadeIn(self.steps[3])) self.play(FadeIn(self.steps[3]))
@ -1106,7 +1106,7 @@ class CountThroughRings(LatticePointScene):
]) ])
top_list.highlight(YELLOW) top_list.highlight(YELLOW)
top_list.arrange_submobjects(RIGHT, aligned_edge = DOWN) top_list.arrange_submobjects(RIGHT, aligned_edge = DOWN)
top_list.scale_to_fit_width(2*SPACE_X_RADIUS - MED_LARGE_BUFF) top_list.scale_to_fit_width(FRAME_WIDTH - MED_LARGE_BUFF)
top_list.to_edge(UP, buff = SMALL_BUFF) top_list.to_edge(UP, buff = SMALL_BUFF)
top_rect = BackgroundRectangle(top_list) top_rect = BackgroundRectangle(top_list)
@ -1351,11 +1351,11 @@ class Given2DThinkComplex(TeacherStudentsScene):
def construct(self): def construct(self):
tex = TextMobject("2D $\\Leftrightarrow$ Complex numbers") tex = TextMobject("2D $\\Leftrightarrow$ Complex numbers")
plane = ComplexPlane( plane = ComplexPlane(
x_radius = 0.6*SPACE_X_RADIUS, x_radius = 0.6*FRAME_X_RADIUS,
y_radius = 0.6*SPACE_Y_RADIUS, y_radius = 0.6*FRAME_Y_RADIUS,
) )
plane.add_coordinates() plane.add_coordinates()
plane.scale_to_fit_height(SPACE_Y_RADIUS) plane.scale_to_fit_height(FRAME_Y_RADIUS)
plane.to_corner(UP+LEFT) plane.to_corner(UP+LEFT)
self.teacher_says(tex) self.teacher_says(tex)
@ -2507,7 +2507,7 @@ class IntroduceRecipe(Scene):
for tex, color in zip(strings, colors): for tex, color in zip(strings, colors):
title.highlight_by_tex(tex, color, substring = False) title.highlight_by_tex(tex, color, substring = False)
title.to_edge(UP, buff = MED_SMALL_BUFF) title.to_edge(UP, buff = MED_SMALL_BUFF)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
h_line.next_to(title, DOWN) h_line.next_to(title, DOWN)
self.add(title, h_line) self.add(title, h_line)
N_mob = title.get_part_by_tex(self.N_string) N_mob = title.get_part_by_tex(self.N_string)
@ -2542,7 +2542,7 @@ class IntroduceRecipe(Scene):
factorization = TexMobject( factorization = TexMobject(
"=", *map(self.complex_number_to_tex, factors) "=", *map(self.complex_number_to_tex, factors)
) )
max_width = 2*SPACE_X_RADIUS - 2 max_width = FRAME_WIDTH - 2
if factorization.get_width() > max_width: if factorization.get_width() > max_width:
factorization.scale_to_fit_width(max_width) factorization.scale_to_fit_width(max_width)
factorization.next_to( factorization.next_to(
@ -3563,7 +3563,7 @@ class IntroduceChi(FactorizationPattern):
value.next_to(arrow, UP) value.next_to(arrow, UP)
numbers.add(value) numbers.add(value)
group = VGroup(chis, arrows, numbers) group = VGroup(chis, arrows, numbers)
group.scale_to_fit_width(2*SPACE_X_RADIUS - LARGE_BUFF) group.scale_to_fit_width(FRAME_WIDTH - LARGE_BUFF)
group.to_edge(DOWN, buff = LARGE_BUFF) group.to_edge(DOWN, buff = LARGE_BUFF)
self.play(*[ self.play(*[
@ -4007,7 +4007,7 @@ class ExpandCountWith45(SummarizeCountingRule):
expansion.add(plus) expansion.add(plus)
expansion.add(rp) expansion.add(rp)
expansion.arrange_submobjects(RIGHT, buff = SMALL_BUFF) expansion.arrange_submobjects(RIGHT, buff = SMALL_BUFF)
expansion.scale_to_fit_width(2*SPACE_X_RADIUS - LARGE_BUFF) expansion.scale_to_fit_width(FRAME_WIDTH - LARGE_BUFF)
expansion.next_to(ORIGIN, UP) expansion.next_to(ORIGIN, UP)
rect = BackgroundRectangle(expansion) rect = BackgroundRectangle(expansion)
rect.stretch_in_place(1.5, 1) rect.stretch_in_place(1.5, 1)
@ -4252,7 +4252,7 @@ class CountLatticePointsInBigCircle(LatticePointScene):
TexMobject("\\sqrt{R^2}") TexMobject("\\sqrt{R^2}")
) )
radicals.arrange_submobjects(DOWN, buff = MED_SMALL_BUFF) radicals.arrange_submobjects(DOWN, buff = MED_SMALL_BUFF)
radicals.scale_to_fit_height(2*SPACE_Y_RADIUS - MED_LARGE_BUFF) radicals.scale_to_fit_height(FRAME_HEIGHT - MED_LARGE_BUFF)
radicals.to_edge(DOWN, buff = MED_SMALL_BUFF) radicals.to_edge(DOWN, buff = MED_SMALL_BUFF)
radicals.to_edge(LEFT) radicals.to_edge(LEFT)
for radical in radicals: for radical in radicals:
@ -4279,7 +4279,7 @@ class AddUpGrid(Scene):
self.add(self.radicals) self.add(self.radicals)
def add_row_lines(self): def add_row_lines(self):
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS - MED_LARGE_BUFF) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS - MED_LARGE_BUFF)
h_line.set_stroke(WHITE, 1) h_line.set_stroke(WHITE, 1)
row_lines = VGroup(*[ row_lines = VGroup(*[
h_line.copy().next_to( h_line.copy().next_to(
@ -4430,7 +4430,7 @@ class AddUpGrid(Scene):
fill_color = average_color(BLUE_E, BLACK), fill_color = average_color(BLUE_E, BLACK),
fill_opacity = 1, fill_opacity = 1,
height = 1.15, height = 1.15,
width = 2*SPACE_X_RADIUS - 2*MED_SMALL_BUFF, width = FRAME_WIDTH - 2*MED_SMALL_BUFF,
) )
rect.move_to(3*LEFT, LEFT) rect.move_to(3*LEFT, LEFT)
rect.to_edge(UP, buff = SMALL_BUFF) rect.to_edge(UP, buff = SMALL_BUFF)
@ -4472,7 +4472,7 @@ class AddUpGrid(Scene):
for column, term in zip(chi_mob_columns, full_sum): for column, term in zip(chi_mob_columns, full_sum):
rect = SurroundingRectangle(column) rect = SurroundingRectangle(column)
rect.stretch_to_fit_height(2*SPACE_Y_RADIUS) rect.stretch_to_fit_height(FRAME_HEIGHT)
rect.move_to(column, UP) rect.move_to(column, UP)
rect.set_stroke(width = 0) rect.set_stroke(width = 0)
rect.set_fill(YELLOW, 0.3) rect.set_fill(YELLOW, 0.3)
@ -4492,7 +4492,7 @@ class AddUpGrid(Scene):
if term is full_sum[2]: if term is full_sum[2]:
vect = sum([ vect = sum([
self.count_rect.get_left()[0], self.count_rect.get_left()[0],
SPACE_X_RADIUS, FRAME_X_RADIUS,
-MED_SMALL_BUFF, -MED_SMALL_BUFF,
])*LEFT ])*LEFT
self.play(*[ self.play(*[
@ -4654,7 +4654,7 @@ class IntersectionOfTwoFields(TeacherStudentsScene):
circle.set_fill(color, opacity = 0.3) circle.set_fill(color, opacity = 0.3)
circle.stretch_to_fit_width(7) circle.stretch_to_fit_width(7)
circle.stretch_to_fit_height(4) circle.stretch_to_fit_height(4)
circle.shift(SPACE_X_RADIUS*vect/3.0 + LEFT) circle.shift(FRAME_X_RADIUS*vect/3.0 + LEFT)
title = TextMobject("%s \\\\ number theory"%adj) title = TextMobject("%s \\\\ number theory"%adj)
title.scale(0.7) title.scale(0.7)
title.move_to(circle) title.move_to(circle)

View file

@ -58,7 +58,7 @@ class ShowMultiplication(NumberLineScene):
"stroke_width" : 2*DEFAULT_POINT_THICKNESS "stroke_width" : 2*DEFAULT_POINT_THICKNESS
} }
if abs(num) < 1: if abs(num) < 1:
config["numerical_radius"] = SPACE_X_RADIUS/num config["numerical_radius"] = FRAME_X_RADIUS/num
NumberLineScene.construct(self, **config) NumberLineScene.construct(self, **config)
if show_original_line: if show_original_line:
@ -159,8 +159,8 @@ class ShowTwoThenThree(ShowMultiplication):
class TransformScene2D(Scene): class TransformScene2D(Scene):
def add_number_plane(self, density_factor = 1, use_faded_lines = True): def add_number_plane(self, density_factor = 1, use_faded_lines = True):
config = { config = {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_X_RADIUS, "y_radius" : FRAME_WIDTH,
"density" : DEFAULT_POINT_DENSITY_1D*density_factor, "density" : DEFAULT_POINT_DENSITY_1D*density_factor,
"stroke_width" : 2*DEFAULT_POINT_THICKNESS "stroke_width" : 2*DEFAULT_POINT_THICKNESS
} }
@ -315,8 +315,8 @@ class ExamplesOfNonlinearTwoDimensionalTransformations(Scene):
def apply_function(self, function, explanation): def apply_function(self, function, explanation):
self.clear() self.clear()
config = { config = {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_X_RADIUS, "y_radius" : FRAME_WIDTH,
"density" : 3*DEFAULT_POINT_DENSITY_1D, "density" : 3*DEFAULT_POINT_DENSITY_1D,
"stroke_width" : 2*DEFAULT_POINT_THICKNESS "stroke_width" : 2*DEFAULT_POINT_THICKNESS
} }
@ -369,8 +369,8 @@ class ExamplesOfNonlinearTwoDimensionalTransformations(Scene):
class TrickyExamplesOfNonlinearTwoDimensionalTransformations(Scene): class TrickyExamplesOfNonlinearTwoDimensionalTransformations(Scene):
def construct(self): def construct(self):
config = { config = {
"x_radius" : 1.2*SPACE_X_RADIUS, "x_radius" : 0.6*FRAME_WIDTH,
"y_radius" : 1.2*SPACE_X_RADIUS, "y_radius" : 0.6*FRAME_WIDTH,
"density" : 10*DEFAULT_POINT_DENSITY_1D, "density" : 10*DEFAULT_POINT_DENSITY_1D,
"stroke_width" : 2*DEFAULT_POINT_THICKNESS "stroke_width" : 2*DEFAULT_POINT_THICKNESS
} }
@ -381,12 +381,12 @@ class TrickyExamplesOfNonlinearTwoDimensionalTransformations(Scene):
]).to_edge(UP, buff = 1.5).split() ]).to_edge(UP, buff = 1.5).split()
phrase2.highlight(LIGHT_RED) phrase2.highlight(LIGHT_RED)
diagonal = Line( diagonal = Line(
DOWN*SPACE_Y_RADIUS+LEFT*SPACE_X_RADIUS, DOWN*FRAME_Y_RADIUS+LEFT*FRAME_X_RADIUS,
UP*SPACE_Y_RADIUS+RIGHT*SPACE_X_RADIUS, UP*FRAME_Y_RADIUS+RIGHT*FRAME_X_RADIUS,
density = 10*DEFAULT_POINT_DENSITY_1D density = 10*DEFAULT_POINT_DENSITY_1D
) )
def sunrise((x, y, z)): def sunrise((x, y, z)):
return ((SPACE_Y_RADIUS+y)*x, y, z) return ((FRAME_Y_RADIUS+y)*x, y, z)
def squished((x, y, z)): def squished((x, y, z)):
return (x + np.sin(x), y+np.sin(y), z) return (x + np.sin(x), y+np.sin(y), z)

View file

@ -12,7 +12,7 @@ from constants import *
from mobject.region import * from mobject.region import *
from scene import Scene from scene import Scene
RADIUS = SPACE_Y_RADIUS - 0.1 RADIUS = FRAME_Y_RADIUS - 0.1
CIRCLE_DENSITY = DEFAULT_POINT_DENSITY_1D*RADIUS CIRCLE_DENSITY = DEFAULT_POINT_DENSITY_1D*RADIUS
@ -231,7 +231,7 @@ def next_few_videos(*radians):
"black", "black",
lambda point : np.linalg.norm(point) < 0.5 lambda point : np.linalg.norm(point) < 0.5
) )
big_frame = deepcopy(frame).scale(SPACE_X_RADIUS) big_frame = deepcopy(frame).scale(FRAME_X_RADIUS)
frame.shift((-5, 0, 0)) frame.shift((-5, 0, 0))
sc.add(thumbnail) sc.add(thumbnail)

View file

@ -16,7 +16,7 @@ from mobject.region import *
from scene import Scene, GraphScene, PascalsTriangleScene from scene import Scene, GraphScene, PascalsTriangleScene
from script_wrapper import command_line_create_scene from script_wrapper import command_line_create_scene
RADIUS = SPACE_Y_RADIUS - 0.1 RADIUS = FRAME_Y_RADIUS - 0.1
CIRCLE_DENSITY = DEFAULT_POINT_DENSITY_1D*RADIUS CIRCLE_DENSITY = DEFAULT_POINT_DENSITY_1D*RADIUS
MOVIE_PREFIX = "moser/" MOVIE_PREFIX = "moser/"
RADIANS = np.arange(0, 6, 6.0/7) RADIANS = np.arange(0, 6, 6.0/7)
@ -53,7 +53,7 @@ class CircleScene(Scene):
self.lines = [Line(p1, p2) for p1, p2 in it.combinations(self.points, 2)] self.lines = [Line(p1, p2) for p1, p2 in it.combinations(self.points, 2)]
self.n_equals = TexMobject( self.n_equals = TexMobject(
"n=%d"%len(radians), "n=%d"%len(radians),
).shift((-SPACE_X_RADIUS+1, SPACE_Y_RADIUS-1.5, 0)) ).shift((-FRAME_X_RADIUS+1, FRAME_Y_RADIUS-1.5, 0))
self.add(self.circle, self.n_equals, *self.dots + self.lines) self.add(self.circle, self.n_equals, *self.dots + self.lines)
@ -151,7 +151,7 @@ class MoserPattern(CircleScene):
self.remove(*self.dots + self.lines + [self.n_equals]) self.remove(*self.dots + self.lines + [self.n_equals])
n_equals, num = TexMobject(["n=", "10"]).split() n_equals, num = TexMobject(["n=", "10"]).split()
for mob in n_equals, num: for mob in n_equals, num:
mob.shift((-SPACE_X_RADIUS + 1.5, SPACE_Y_RADIUS - 1.5, 0)) mob.shift((-FRAME_X_RADIUS + 1.5, FRAME_Y_RADIUS - 1.5, 0))
self.add(n_equals) self.add(n_equals)
for n in range(1, len(radians)+1): for n in range(1, len(radians)+1):
self.add(*self.dots[:n]) self.add(*self.dots[:n])
@ -206,7 +206,7 @@ class HardProblemsSimplerQuestions(Scene):
mob.scale(scale_factor) mob.scale(scale_factor)
fermat["2"].shift(right_center) fermat["2"].shift(right_center)
fermat["3"].shift(left_center) fermat["3"].shift(left_center)
fermat["n"].shift((0, SPACE_Y_RADIUS - 1, 0)) fermat["n"].shift((0, FRAME_Y_RADIUS - 1, 0))
shift_val = right_center - fermat2.get_center() shift_val = right_center - fermat2.get_center()
fermat2.shift(shift_val) fermat2.shift(shift_val)
fermat2_jargon.shift(shift_val) fermat2_jargon.shift(shift_val)
@ -269,10 +269,10 @@ class HardProblemsSimplerQuestions(Scene):
self.play( self.play(
Transform( Transform(
all_mobjects, all_mobjects,
Point((SPACE_X_RADIUS, 0, 0)) Point((FRAME_X_RADIUS, 0, 0))
), ),
Transform( Transform(
Point((-SPACE_X_RADIUS, 0, 0)), Point((-FRAME_X_RADIUS, 0, 0)),
Mobject(*CircleScene(RADIANS).mobjects) Mobject(*CircleScene(RADIANS).mobjects)
) )
) )
@ -526,7 +526,7 @@ class IllustrateNChooseK(Scene):
for mob in nrange_mobs: for mob in nrange_mobs:
mob.shift((0, 2, 0)) mob.shift((0, 2, 0))
for mob in form1, count, form2: for mob in form1, count, form2:
mob.scale(0.75).shift((0, -SPACE_Y_RADIUS + 1, 0)) mob.scale(0.75).shift((0, -FRAME_Y_RADIUS + 1, 0))
count_center = count.get_center() count_center = count.get_center()
for mob in tuple_mobs: for mob in tuple_mobs:
mob.scale(0.6) mob.scale(0.6)
@ -587,7 +587,7 @@ class IntersectionPointCorrespondances(CircleScene):
for mob in line_statement, dots_statement: for mob in line_statement, dots_statement:
mob.center() mob.center()
mob.scale(0.7) mob.scale(0.7)
mob.shift((SPACE_X_RADIUS-2, SPACE_Y_RADIUS - 1, 0)) mob.shift((FRAME_X_RADIUS-2, FRAME_Y_RADIUS - 1, 0))
fade_outs = [] fade_outs = []
line_highlights = [] line_highlights = []
dot_highlights = [] dot_highlights = []
@ -682,7 +682,7 @@ class GraphsAndEulersFormulaJoke(Scene):
lambda t : (10*t, ((10*t)**3 - 10*t), 0), lambda t : (10*t, ((10*t)**3 - 10*t), 0),
expected_measure = 40.0 expected_measure = 40.0
) )
graph.filter_out(lambda (x, y, z) : abs(y) > SPACE_Y_RADIUS) graph.filter_out(lambda (x, y, z) : abs(y) > FRAME_Y_RADIUS)
self.add(axes) self.add(axes)
self.play(ShowCreation(graph), run_time = 1.0) self.play(ShowCreation(graph), run_time = 1.0)
eulers = TexMobject("e^{\pi i} = -1").shift((0, 3, 0)) eulers = TexMobject("e^{\pi i} = -1").shift((0, 3, 0))
@ -694,11 +694,11 @@ class GraphsAndEulersFormulaJoke(Scene):
self.add(eulers) self.add(eulers)
self.play(CounterclockwiseTransform( self.play(CounterclockwiseTransform(
Mobject(axes, graph), Mobject(axes, graph),
Point((-SPACE_X_RADIUS, SPACE_Y_RADIUS, 0)) Point((-FRAME_X_RADIUS, FRAME_Y_RADIUS, 0))
)) ))
self.play(CounterclockwiseTransform( self.play(CounterclockwiseTransform(
eulers, eulers,
Point((SPACE_X_RADIUS, SPACE_Y_RADIUS, 0)) Point((FRAME_X_RADIUS, FRAME_Y_RADIUS, 0))
)) ))
class DefiningGraph(GraphScene): class DefiningGraph(GraphScene):
@ -785,7 +785,7 @@ class EulersFormula(GraphScene):
for key, mob in zip(terms, TexMobjects(terms)) for key, mob in zip(terms, TexMobjects(terms))
]) ])
for mob in form.values(): for mob in form.values():
mob.shift((0, SPACE_Y_RADIUS-0.7, 0)) mob.shift((0, FRAME_Y_RADIUS-0.7, 0))
formula = Mobject(*[form[k] for k in form.keys() if k != "=2"]) formula = Mobject(*[form[k] for k in form.keys() if k != "=2"])
new_form = dict([ new_form = dict([
(key, deepcopy(mob).shift((0, -0.7, 0))) (key, deepcopy(mob).shift((0, -0.7, 0)))
@ -882,7 +882,7 @@ class ShowMoserGraphLines(CircleScene):
r"{n \choose 2}",r"&+2{n \choose 4}\\",r"&+n" r"{n \choose 2}",r"&+2{n \choose 4}\\",r"&+n"
]).split() ]).split()
for mob in n, plus_n_choose_4, n_choose_2, plus_2_n_choose_4, plus_n: for mob in n, plus_n_choose_4, n_choose_2, plus_2_n_choose_4, plus_n:
mob.shift((SPACE_X_RADIUS - 2, SPACE_Y_RADIUS-1, 0)) mob.shift((FRAME_X_RADIUS - 2, FRAME_Y_RADIUS-1, 0))
self.chop_lines_at_intersection_points() self.chop_lines_at_intersection_points()
self.add(*self.intersection_dots) self.add(*self.intersection_dots)
small_lines = [ small_lines = [
@ -1143,7 +1143,7 @@ class ApplyEulerToMoser(CircleScene):
self.play( self.play(
Transform( Transform(
Mobject(plus2[4], n1[4], minus[4], n[4]), Mobject(plus2[4], n1[4], minus[4], n[4]),
Point((SPACE_X_RADIUS, SPACE_Y_RADIUS, 0)) Point((FRAME_X_RADIUS, FRAME_Y_RADIUS, 0))
), ),
*[ *[
Transform(d[4], d[5]) Transform(d[4], d[5])
@ -1301,7 +1301,7 @@ class PascalsTriangleNChooseKExample(PascalsTriangleScene):
formula_terms = left, n_mob, k_mob, right = TexMobject([ formula_terms = left, n_mob, k_mob, right = TexMobject([
r"\left(", str(n), r"\atop %d"%k, r"\right)" r"\left(", str(n), r"\atop %d"%k, r"\right)"
]) ])
formula_center = (SPACE_X_RADIUS - 1, SPACE_Y_RADIUS - 1, 0) formula_center = (FRAME_X_RADIUS - 1, FRAME_Y_RADIUS - 1, 0)
self.remove(*triangle_terms) self.remove(*triangle_terms)
self.add(*formula_terms) self.add(*formula_terms)
self.wait() self.wait()
@ -1486,7 +1486,7 @@ class MoserSolutionInPascal(PascalsTriangleScene):
self.remove(*above_terms) self.remove(*above_terms)
self.wait() self.wait()
terms_sum = TexMobject(str(moser_function(n))) terms_sum = TexMobject(str(moser_function(n)))
terms_sum.shift((SPACE_X_RADIUS-1, terms[0].get_center()[1], 0)) terms_sum.shift((FRAME_X_RADIUS-1, terms[0].get_center()[1], 0))
terms_sum.highlight(term_color) terms_sum.highlight(term_color)
self.play(Transform(Mobject(*terms), terms_sum)) self.play(Transform(Mobject(*terms), terms_sum))
@ -1541,7 +1541,7 @@ class ExplainNChoose2Formula(Scene):
str(n), "(%d-1)"%n, r"\over{2}" str(n), "(%d-1)"%n, r"\over{2}"
]).split() ]).split()
for part in n_mob, n_minus_1, over_2: for part in n_mob, n_minus_1, over_2:
part.shift((SPACE_X_RADIUS-1.5, SPACE_Y_RADIUS-1, 0)) part.shift((FRAME_X_RADIUS-1.5, FRAME_Y_RADIUS-1, 0))
self.add(parens, n_mob) self.add(parens, n_mob)
up_unit = np.array((0, height, 0)) up_unit = np.array((0, height, 0))
@ -1685,7 +1685,7 @@ class IntersectionChoppingExamples(Scene):
for pairs, exp in [(pairs1, "3 + 2(2) = 7"), for pairs, exp in [(pairs1, "3 + 2(2) = 7"),
(pairs2, "4 + 2(3) = 10")]: (pairs2, "4 + 2(3) = 10")]:
lines = [Line(*pair).scale(2) for pair in pairs] lines = [Line(*pair).scale(2) for pair in pairs]
self.add(TexMobject(exp).shift((0, SPACE_Y_RADIUS-1, 0))) self.add(TexMobject(exp).shift((0, FRAME_Y_RADIUS-1, 0)))
self.add(*lines) self.add(*lines)
self.wait() self.wait()
self.play(*[ self.play(*[

View file

@ -47,7 +47,7 @@ class HappyHolidays(TeacherStudentsScene):
self.add(self.get_snowflakes()) self.add(self.get_snowflakes())
self.change_student_modes( self.change_student_modes(
*["hooray"]*3, *["hooray"]*3,
look_at_arg = SPACE_Y_RADIUS*UP, look_at_arg = FRAME_Y_RADIUS*UP,
added_anims = [self.teacher.change, "hooray"] added_anims = [self.teacher.change, "hooray"]
) )
self.play(LaggedStart( self.play(LaggedStart(
@ -55,7 +55,7 @@ class HappyHolidays(TeacherStudentsScene):
), Animation(self.pi_creatures)) ), Animation(self.pi_creatures))
self.change_student_modes( self.change_student_modes(
"happy", "wave_2", "wave_1", "happy", "wave_2", "wave_1",
look_at_arg = SPACE_Y_RADIUS*UP, look_at_arg = FRAME_Y_RADIUS*UP,
) )
self.look_at(self.teacher.get_corner(UP+LEFT)) self.look_at(self.teacher.get_corner(UP+LEFT))
self.wait(2) self.wait(2)
@ -94,7 +94,7 @@ class HappyHolidays(TeacherStudentsScene):
]) ])
def random_confetti_spiral(mob, **kwargs): def random_confetti_spiral(mob, **kwargs):
return ConfettiSpiril( return ConfettiSpiril(
mob, x_start = 2*random.random()*SPACE_X_RADIUS - SPACE_X_RADIUS, mob, x_start = 2*random.random()*FRAME_X_RADIUS - FRAME_X_RADIUS,
**kwargs **kwargs
) )
snowflake_spirils = LaggedStart( snowflake_spirils = LaggedStart(
@ -286,7 +286,7 @@ class AboutToyPuzzles(UtilitiesPuzzleScene, TeacherStudentsScene, ThreeDScene):
objects.generate_target() objects.generate_target()
objects.target.scale(0.5) objects.target.scale(0.5)
objects.target.move_to( objects.target.move_to(
(SPACE_Y_RADIUS*DOWN + SPACE_X_RADIUS*LEFT)/2 (FRAME_Y_RADIUS*DOWN + FRAME_X_RADIUS*LEFT)/2
) )
eulers = TexMobject(*"V-E+F=2") eulers = TexMobject(*"V-E+F=2")
@ -1079,7 +1079,7 @@ class LightUpNodes(IntroduceRegions):
TextMobject("\\# Regions"), TextMobject("\\# Regions"),
] ]
for title, vect in zip(titles, [LEFT, ORIGIN, RIGHT]): for title, vect in zip(titles, [LEFT, ORIGIN, RIGHT]):
title.shift(SPACE_X_RADIUS*vect/2) title.shift(FRAME_X_RADIUS*vect/2)
title.to_edge(UP) title.to_edge(UP)
underline = Line(LEFT, RIGHT) underline = Line(LEFT, RIGHT)
underline.stretch_to_fit_width(title.get_width()) underline.stretch_to_fit_width(title.get_width())

View file

@ -491,7 +491,7 @@ class LongSine(Mobject1D):
class DecomposeMusicalNote(Scene): class DecomposeMusicalNote(Scene):
def construct(self): def construct(self):
line = Line(SPACE_Y_RADIUS*DOWN, SPACE_Y_RADIUS*UP) line = Line(FRAME_Y_RADIUS*DOWN, FRAME_Y_RADIUS*UP)
sine = LongSine() sine = LongSine()
kwargs = { kwargs = {
"run_time" : 4.0, "run_time" : 4.0,
@ -513,7 +513,7 @@ class DecomposeMusicalNote(Scene):
class DecomposeTwoFrequencies(Scene): class DecomposeTwoFrequencies(Scene):
def construct(self): def construct(self):
line = Line(SPACE_Y_RADIUS*DOWN, SPACE_Y_RADIUS*UP) line = Line(FRAME_Y_RADIUS*DOWN, FRAME_Y_RADIUS*UP)
sine1 = LongSine().shift(2*UP).highlight("yellow") sine1 = LongSine().shift(2*UP).highlight("yellow")
sine2 = LongSine().shift(DOWN).highlight("lightgreen") sine2 = LongSine().shift(DOWN).highlight("lightgreen")
sine1.stretch(2.0/3, 0) sine1.stretch(2.0/3, 0)
@ -556,11 +556,11 @@ class PatternInFrequencies(Scene):
return "%d_to_%d"%(num1, num2) return "%d_to_%d"%(num1, num2)
def construct(self, num1, num2, color): def construct(self, num1, num2, color):
big_line = Line(SPACE_Y_RADIUS*UP, SPACE_Y_RADIUS*DOWN) big_line = Line(FRAME_Y_RADIUS*UP, FRAME_Y_RADIUS*DOWN)
big_line.highlight("white").shift(2*LEFT) big_line.highlight("white").shift(2*LEFT)
line_template = Line(UP, DOWN) line_template = Line(UP, DOWN)
line_template.shift(2*UP+2*LEFT) line_template.shift(2*UP+2*LEFT)
setup_width = 2*SPACE_X_RADIUS setup_width = FRAME_WIDTH
num_top_lines = int(setup_width) num_top_lines = int(setup_width)
num_bot_lines = int(setup_width*num1/num2) num_bot_lines = int(setup_width*num1/num2)
top_lines = Mobject(*[ top_lines = Mobject(*[
@ -667,8 +667,8 @@ class ConstructPiano(Scene):
key.stroke_width = 1 key.stroke_width = 1
key_copy = deepcopy(key).to_corner(DOWN+LEFT) key_copy = deepcopy(key).to_corner(DOWN+LEFT)
key_copy.scale_in_place(0.25) key_copy.scale_in_place(0.25)
key_copy.shift(1.8*random.random()*SPACE_X_RADIUS*RIGHT) key_copy.shift(1.8*random.random()*FRAME_X_RADIUS*RIGHT)
key_copy.shift(1.8*random.random()*SPACE_Y_RADIUS*UP) key_copy.shift(1.8*random.random()*FRAME_Y_RADIUS*UP)
key_copy.rotate(2*np.pi*random.random()) key_copy.rotate(2*np.pi*random.random())
anims.append(Transform(key_copy, key)) anims.append(Transform(key_copy, key))
self.play(*anims, run_time = 3.0) self.play(*anims, run_time = 3.0)
@ -762,7 +762,7 @@ class PianoTuning(Scene):
class PowersOfTwelfthRoot(Scene): class PowersOfTwelfthRoot(Scene):
def construct(self): def construct(self):
max_height = SPACE_Y_RADIUS-0.5 max_height = FRAME_Y_RADIUS-0.5
min_height = -max_height min_height = -max_height
num_terms = 11 num_terms = 11
mob_list = [] mob_list = []
@ -883,9 +883,9 @@ class AllValuesBetween1And2(NumberLineScene):
self.wait(0.5) self.wait(0.5)
points = map(self.number_line.number_to_point, [approx, irrational]) points = map(self.number_line.number_to_point, [approx, irrational])
distance = np.linalg.norm(points[1]-points[0]) distance = np.linalg.norm(points[1]-points[0])
if distance < 0.3*SPACE_X_RADIUS and num_zooms < max_num_zooms: if distance < 0.3*FRAME_X_RADIUS and num_zooms < max_num_zooms:
num_zooms += 1 num_zooms += 1
new_distance = 0.75*SPACE_X_RADIUS new_distance = 0.75*FRAME_X_RADIUS
self.zoom_in_on(irrational, new_distance/distance) self.zoom_in_on(irrational, new_distance/distance)
for mob in irr_mob, bot_arrow: for mob in irr_mob, bot_arrow:
mob.shift(mob.get_center()[0]*LEFT) mob.shift(mob.get_center()[0]*LEFT)
@ -1005,7 +1005,7 @@ class SumOfIntervalsMustBeLessThan1(IntervalScene):
IntervalScene.construct(self) IntervalScene.construct(self)
self.add_fraction_ticks() self.add_fraction_ticks()
anims = [] anims = []
last_plus = Point((SPACE_X_RADIUS-0.5)*LEFT+2*UP) last_plus = Point((FRAME_X_RADIUS-0.5)*LEFT+2*UP)
for num in np.arange(0, 1.1, .1): for num in np.arange(0, 1.1, .1):
open_interval, line = self.add_open_interval(num, 0.1) open_interval, line = self.add_open_interval(num, 0.1)
self.remove(line) self.remove(line)
@ -1159,7 +1159,7 @@ class StepsToSolution(IntervalScene):
denom_to_mobs[frac.denominator].append(mob) denom_to_mobs[frac.denominator].append(mob)
mob_copy = deepcopy(mob).center() mob_copy = deepcopy(mob).center()
mob_copy.shift((2.4-mob_copy.get_bottom()[1])*UP) mob_copy.shift((2.4-mob_copy.get_bottom()[1])*UP)
mob_copy.shift((-SPACE_X_RADIUS+self.spacing*count)*RIGHT) mob_copy.shift((-FRAME_X_RADIUS+self.spacing*count)*RIGHT)
comma = TextMobject(",").next_to(mob_copy, buff = 0.1, aligned_edge = DOWN) comma = TextMobject(",").next_to(mob_copy, buff = 0.1, aligned_edge = DOWN)
anims.append(Transform(mob, mob_copy)) anims.append(Transform(mob, mob_copy))
commas.add(comma) commas.add(comma)
@ -1167,7 +1167,7 @@ class StepsToSolution(IntervalScene):
new_ticks = [] new_ticks = []
for tick, count in zip(ticks.split(), it.count(1)): for tick, count in zip(ticks.split(), it.count(1)):
tick_copy = deepcopy(tick).center().shift(1.6*UP) tick_copy = deepcopy(tick).center().shift(1.6*UP)
tick_copy.shift((-SPACE_X_RADIUS+self.spacing*count)*RIGHT) tick_copy.shift((-FRAME_X_RADIUS+self.spacing*count)*RIGHT)
new_ticks.append(tick_copy) new_ticks.append(tick_copy)
new_ticks = Mobject(*new_ticks) new_ticks = Mobject(*new_ticks)
anims.append(DelayByOrder(Transform(ticks, new_ticks))) anims.append(DelayByOrder(Transform(ticks, new_ticks)))
@ -1194,7 +1194,7 @@ class StepsToSolution(IntervalScene):
self.wait() self.wait()
to_remove = [self.number_line] + self.number_mobs to_remove = [self.number_line] + self.number_mobs
self.play(*[ self.play(*[
ApplyMethod(mob.shift, 2*SPACE_X_RADIUS*RIGHT) ApplyMethod(mob.shift, FRAME_WIDTH*RIGHT)
for mob in to_remove for mob in to_remove
]) ])
self.remove(*to_remove) self.remove(*to_remove)

View file

@ -438,7 +438,7 @@ class ExampleThrees(PiCreatureScene):
alt_threes = VGroup(*self.three_mobs[1:]) alt_threes = VGroup(*self.three_mobs[1:])
alt_threes.arrange_submobjects(DOWN) alt_threes.arrange_submobjects(DOWN)
alt_threes.scale_to_fit_height(2*SPACE_Y_RADIUS - 2) alt_threes.scale_to_fit_height(FRAME_HEIGHT - 2)
alt_threes.to_edge(RIGHT) alt_threes.to_edge(RIGHT)
for alt_three in alt_threes: for alt_three in alt_threes:
@ -604,7 +604,7 @@ class WriteAProgram(Scene):
choices = VGroup(*[TexMobject(str(n)) for n in range(10)]) choices = VGroup(*[TexMobject(str(n)) for n in range(10)])
choices.arrange_submobjects(DOWN) choices.arrange_submobjects(DOWN)
choices.scale_to_fit_height(2*SPACE_Y_RADIUS - 1) choices.scale_to_fit_height(FRAME_HEIGHT - 1)
choices.next_to(arrow, RIGHT) choices.next_to(arrow, RIGHT)
self.play( self.play(
@ -885,7 +885,7 @@ class AlternateNeuralNetworks(PiCreatureScene):
ex[0].next_to(arrow, LEFT) ex[0].next_to(arrow, LEFT)
ex[1].next_to(arrow, RIGHT) ex[1].next_to(arrow, RIGHT)
ex.submobjects.insert(1, arrow) ex.submobjects.insert(1, arrow)
examples.scale_to_fit_width(2*SPACE_X_RADIUS - 1) examples.scale_to_fit_width(FRAME_WIDTH - 1)
examples.next_to(morty, UP).to_edge(RIGHT) examples.next_to(morty, UP).to_edge(RIGHT)
maybe_words = TextMobject("Maybe future videos?") maybe_words = TextMobject("Maybe future videos?")
@ -1826,7 +1826,7 @@ class BreakUpMicroPatterns(BreakUpMacroPatterns):
edge.save_state() edge.save_state()
edge[1].set_opacity(0) edge[1].set_opacity(0)
equation = self.get_equation(loop.target, *edges.target) equation = self.get_equation(loop.target, *edges.target)
equation.scale_to_fit_width(2*SPACE_X_RADIUS - 1) equation.scale_to_fit_width(FRAME_WIDTH - 1)
equation.to_edge(UP) equation.to_edge(UP)
symbols = VGroup(*equation[1::2]) symbols = VGroup(*equation[1::2])
@ -2153,7 +2153,7 @@ class ManyTasksBreakDownLikeThis(TeacherStudentsScene):
word word
) )
sequence.arrange_submobjects(RIGHT) sequence.arrange_submobjects(RIGHT)
sequence.scale_to_fit_width(2*SPACE_X_RADIUS - 1) sequence.scale_to_fit_width(FRAME_WIDTH - 1)
sequence.to_edge(UP) sequence.to_edge(UP)
audio_label.next_to(audio, DOWN) audio_label.next_to(audio, DOWN)
@ -2982,7 +2982,7 @@ class BiasForInactiviyWords(Scene):
def construct(self): def construct(self):
words = TextMobject("Bias for inactivity") words = TextMobject("Bias for inactivity")
words.highlight(BLUE) words.highlight(BLUE)
words.scale_to_fit_width(2*SPACE_X_RADIUS - 1) words.scale_to_fit_width(FRAME_WIDTH - 1)
words.to_edge(UP) words.to_edge(UP)
self.play(Write(words)) self.play(Write(words))
@ -3931,7 +3931,7 @@ class SigmoidAppliedToVector(Scene):
\\sigma(x) \\\\ \\sigma(y) \\\\ \\sigma(z) \\sigma(x) \\\\ \\sigma(y) \\\\ \\sigma(z)
\\end{array}\\right] \\end{array}\\right]
""") """)
tex.scale_to_fit_width(2*SPACE_X_RADIUS - 1) tex.scale_to_fit_width(FRAME_WIDTH - 1)
tex.to_edge(DOWN) tex.to_edge(DOWN)
indices = it.chain( indices = it.chain(
[0], range(1, 5), range(16, 16+4), [0], range(1, 5), range(16, 16+4),
@ -4421,7 +4421,7 @@ class IntroduceReLU(IntroduceSigmoid):
self.play( self.play(
ApplyMethod( ApplyMethod(
VGroup(cross, sigmoid_title).shift, VGroup(cross, sigmoid_title).shift,
SPACE_X_RADIUS*RIGHT, FRAME_X_RADIUS*RIGHT,
rate_func = running_start rate_func = running_start
), ),
FadeOut(old_school), FadeOut(old_school),
@ -4447,7 +4447,7 @@ class IntroduceReLU(IntroduceSigmoid):
graph.highlight(YELLOW) graph.highlight(YELLOW)
char = self.x_axis_label.replace("$", "") char = self.x_axis_label.replace("$", "")
equation = TextMobject("ReLU($%s$) = max$(0, %s)$"%(char, char)) equation = TextMobject("ReLU($%s$) = max$(0, %s)$"%(char, char))
equation.shift(SPACE_X_RADIUS*LEFT/2) equation.shift(FRAME_X_RADIUS*LEFT/2)
equation.to_edge(UP) equation.to_edge(UP)
equation.add_background_rectangle() equation.add_background_rectangle()
name = TextMobject("Rectified linear unit") name = TextMobject("Rectified linear unit")
@ -4556,9 +4556,9 @@ class CompareSigmoidReLUOnDeepNetworks(PiCreatureScene):
### ###
def create_pi_creatures(self): def create_pi_creatures(self):
morty = Mortimer() morty = Mortimer()
morty.shift(SPACE_X_RADIUS*RIGHT/2).to_edge(DOWN) morty.shift(FRAME_X_RADIUS*RIGHT/2).to_edge(DOWN)
lisha = PiCreature(color = BLUE_C) lisha = PiCreature(color = BLUE_C)
lisha.shift(SPACE_X_RADIUS*LEFT/2).to_edge(DOWN) lisha.shift(FRAME_X_RADIUS*LEFT/2).to_edge(DOWN)
self.morty, self.lisha = morty, lisha self.morty, self.lisha = morty, lisha
return morty, lisha return morty, lisha
@ -4588,7 +4588,7 @@ class Thumbnail(NetworkScene):
} }
def construct(self): def construct(self):
network_mob = self.network_mob network_mob = self.network_mob
network_mob.scale_to_fit_height(2*SPACE_Y_RADIUS - 1) network_mob.scale_to_fit_height(FRAME_HEIGHT - 1)
for layer in network_mob.layers: for layer in network_mob.layers:
layer.neurons.set_stroke(width = 5) layer.neurons.set_stroke(width = 5)

View file

@ -123,7 +123,7 @@ class ShowPlan(Scene):
def construct(self): def construct(self):
title = TextMobject("Plan").scale(1.5) title = TextMobject("Plan").scale(1.5)
title.to_edge(UP) title.to_edge(UP)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
h_line.highlight(WHITE) h_line.highlight(WHITE)
h_line.next_to(title, DOWN) h_line.next_to(title, DOWN)
self.add(title, h_line) self.add(title, h_line)
@ -354,7 +354,7 @@ class PreviewLearning(NetworkScene):
class BackpropComingLaterWords(Scene): class BackpropComingLaterWords(Scene):
def construct(self): def construct(self):
words = TextMobject("(Backpropagation be \\\\ the next video)") words = TextMobject("(Backpropagation be \\\\ the next video)")
words.scale_to_fit_width(2*SPACE_X_RADIUS-1) words.scale_to_fit_width(FRAME_WIDTH-1)
words.to_edge(DOWN) words.to_edge(DOWN)
self.add(words) self.add(words)
@ -499,7 +499,7 @@ class MNistDescription(Scene):
group.arrange_submobjects_in_grid( group.arrange_submobjects_in_grid(
n_rows = self.n_rows_per_grid, n_rows = self.n_rows_per_grid,
) )
group.scale_to_fit_height(2*SPACE_Y_RADIUS - 1) group.scale_to_fit_height(FRAME_HEIGHT - 1)
if i == 0: if i == 0:
self.play( self.play(
LaggedStart(FadeIn, group), LaggedStart(FadeIn, group),
@ -1253,9 +1253,9 @@ class EmphasizeComplexityOfCostFunction(IntroduceCostFunction):
self.show_cost_function() self.show_cost_function()
def setup_sides(self): def setup_sides(self):
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS) v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
network_mob = self.network_mob network_mob = self.network_mob
network_mob.scale_to_fit_width(SPACE_X_RADIUS - 1) network_mob.scale_to_fit_width(FRAME_X_RADIUS - 1)
network_mob.to_corner(DOWN+LEFT) network_mob.to_corner(DOWN+LEFT)
self.add(v_line) self.add(v_line)
@ -1263,7 +1263,7 @@ class EmphasizeComplexityOfCostFunction(IntroduceCostFunction):
def show_network_as_a_function(self): def show_network_as_a_function(self):
title = TextMobject("Neural network function") title = TextMobject("Neural network function")
title.shift(SPACE_X_RADIUS*RIGHT/2) title.shift(FRAME_X_RADIUS*RIGHT/2)
title.to_edge(UP) title.to_edge(UP)
underline = Line(LEFT, RIGHT) underline = Line(LEFT, RIGHT)
underline.stretch_to_fit_width(title.get_width()) underline.stretch_to_fit_width(title.get_width())
@ -1855,7 +1855,7 @@ class TwoVariableInputSpace(Scene):
def add_plane(self): def add_plane(self):
plane = NumberPlane( plane = NumberPlane(
x_radius = SPACE_X_RADIUS/2 x_radius = FRAME_X_RADIUS/2
) )
plane.add_coordinates() plane.add_coordinates()
name = TextMobject("Input space") name = TextMobject("Input space")
@ -1877,7 +1877,7 @@ class TwoVariableInputSpace(Scene):
point = self.plane.coords_to_point(2, 1) point = self.plane.coords_to_point(2, 1)
dot = Dot(point, color = YELLOW) dot = Dot(point, color = YELLOW)
dot.save_state() dot.save_state()
dot.move_to(SPACE_Y_RADIUS*UP + SPACE_X_RADIUS*RIGHT/2) dot.move_to(FRAME_Y_RADIUS*UP + FRAME_X_RADIUS*RIGHT/2)
dot.fade(1) dot.fade(1)
arrows = VGroup(*[ arrows = VGroup(*[
Arrow(ORIGIN, vect).shift(point) Arrow(ORIGIN, vect).shift(point)
@ -1982,7 +1982,7 @@ class GradientDescentAlgorithm(Scene):
TextMobject("Repeat."), TextMobject("Repeat."),
) )
words.arrange_submobjects(DOWN, aligned_edge = LEFT) words.arrange_submobjects(DOWN, aligned_edge = LEFT)
words.scale_to_fit_width(2*SPACE_X_RADIUS - 1) words.scale_to_fit_width(FRAME_WIDTH - 1)
words.to_corner(DOWN+LEFT) words.to_corner(DOWN+LEFT)
for word in words[:2]: for word in words[:2]:
@ -1996,7 +1996,7 @@ class GradientDescentName(Scene):
def construct(self): def construct(self):
words = TextMobject("Gradient descent") words = TextMobject("Gradient descent")
words.highlight(BLUE) words.highlight(BLUE)
words.scale_to_fit_width(2*SPACE_X_RADIUS - 1) words.scale_to_fit_width(FRAME_WIDTH - 1)
words.to_edge(DOWN) words.to_edge(DOWN)
self.play(Write(words, run_time = 2)) self.play(Write(words, run_time = 2))
@ -2118,7 +2118,7 @@ class ShowFullCostFunctionGradient(PreviewLearning):
class DotsInsert(Scene): class DotsInsert(Scene):
def construct(self): def construct(self):
dots = TexMobject("\\vdots") dots = TexMobject("\\vdots")
dots.scale_to_fit_height(2*SPACE_Y_RADIUS - 1) dots.scale_to_fit_height(FRAME_HEIGHT - 1)
self.add(dots) self.add(dots)
class HowMinimizingCostMeansBetterTrainingPerformance(IntroduceCostFunction): class HowMinimizingCostMeansBetterTrainingPerformance(IntroduceCostFunction):
@ -2193,7 +2193,7 @@ class NonSpatialGradientIntuition(Scene):
"w_color" : YELLOW, "w_color" : YELLOW,
"positive_color" : BLUE, "positive_color" : BLUE,
"negative_color" : RED, "negative_color" : RED,
"vect_height" : SPACE_Y_RADIUS - MED_LARGE_BUFF, "vect_height" : FRAME_Y_RADIUS - MED_LARGE_BUFF,
"text_scale_value" : 0.7, "text_scale_value" : 0.7,
} }
def construct(self): def construct(self):
@ -2483,7 +2483,7 @@ class TwoGradientInterpretationsIn2D(Scene):
"C(", "x, y", ")", "=", "C(", "x, y", ")", "=",
"\\frac{3}{2}x^2", "+", "\\frac{1}{2}y^2", "\\frac{3}{2}x^2", "+", "\\frac{1}{2}y^2",
) )
func.shift(SPACE_X_RADIUS*LEFT/2).to_edge(UP) func.shift(FRAME_X_RADIUS*LEFT/2).to_edge(UP)
grad = TexMobject("\\nabla", "C(", "1, 1", ")", "=") grad = TexMobject("\\nabla", "C(", "1, 1", ")", "=")
vect = TexMobject( vect = TexMobject(
@ -3051,7 +3051,7 @@ class InterpretFirstWeightMatrixRows(TestPerformance):
network_mob.edge_groups[0], network_mob.edge_groups[0],
network_mob.layers[:2] network_mob.layers[:2]
)) ))
shift_val = SPACE_X_RADIUS*LEFT + MED_LARGE_BUFF*RIGHT - \ shift_val = FRAME_X_RADIUS*LEFT + MED_LARGE_BUFF*RIGHT - \
to_keep.get_left() to_keep.get_left()
self.play( self.play(
to_fade.shift, shift_val, to_fade.shift, shift_val,
@ -3075,7 +3075,7 @@ class InterpretFirstWeightMatrixRows(TestPerformance):
pixel.set_fill(color, opacity = abs(shade)**(0.3)) pixel.set_fill(color, opacity = abs(shade)**(0.3))
pixel_arrays.add(pixel_array) pixel_arrays.add(pixel_array)
pixel_arrays.arrange_submobjects_in_grid(buff = MED_LARGE_BUFF) pixel_arrays.arrange_submobjects_in_grid(buff = MED_LARGE_BUFF)
pixel_arrays.scale_to_fit_height(2*SPACE_Y_RADIUS - 2.5) pixel_arrays.scale_to_fit_height(FRAME_HEIGHT - 2.5)
pixel_arrays.to_corner(DOWN+RIGHT) pixel_arrays.to_corner(DOWN+RIGHT)
for pixel_array in pixel_arrays: for pixel_array in pixel_arrays:
@ -3486,7 +3486,7 @@ class ConvolutionalNetworkPreview(Scene):
vect = get_organized_images()[9][0] vect = get_organized_images()[9][0]
image = PixelsFromVect(vect) image = PixelsFromVect(vect)
image.set_stroke(width = 1) image.set_stroke(width = 1)
image.scale_to_fit_height(2*SPACE_Y_RADIUS - 1) image.scale_to_fit_height(FRAME_HEIGHT - 1)
self.add(image) self.add(image)
kernels = [ kernels = [
@ -3544,7 +3544,7 @@ class RandomlyLabeledImageData(Scene):
x = i//5 x = i//5
y = i%5 y = i%5
group = self.get_training_group(image_name, label_name) group = self.get_training_group(image_name, label_name)
group.shift(4.5*LEFT + x*SPACE_X_RADIUS*RIGHT) group.shift(4.5*LEFT + x*FRAME_X_RADIUS*RIGHT)
group.shift(3*UP + 1.5*y*DOWN) group.shift(3*UP + 1.5*y*DOWN)
groups.add(group) groups.add(group)
labels.add(group[-1]) labels.add(group[-1])
@ -3728,7 +3728,7 @@ class ManyMinimaWords(Scene):
"Many local minima,\\\\", "Many local minima,\\\\",
"roughly equal quality" "roughly equal quality"
) )
words.scale_to_fit_width(2*SPACE_X_RADIUS - 1) words.scale_to_fit_width(FRAME_WIDTH - 1)
words.to_edge(UP) words.to_edge(UP)
self.play(Write(words)) self.play(Write(words))
self.wait() self.wait()

View file

@ -7,7 +7,7 @@ class LayOutPlan(Scene):
title = TextMobject("Plan") title = TextMobject("Plan")
title.scale(1.5) title.scale(1.5)
title.to_edge(UP) title.to_edge(UP)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS - 1) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS - 1)
h_line.next_to(title, DOWN) h_line.next_to(title, DOWN)
items = BulletedList( items = BulletedList(
@ -19,7 +19,7 @@ class LayOutPlan(Scene):
self.add(items) self.add(items)
rect = ScreenRectangle() rect = ScreenRectangle()
rect.scale_to_fit_width(2*SPACE_X_RADIUS - items.get_width() - 2) rect.scale_to_fit_width(FRAME_WIDTH - items.get_width() - 2)
rect.next_to(items, RIGHT, MED_LARGE_BUFF) rect.next_to(items, RIGHT, MED_LARGE_BUFF)
self.play( self.play(
@ -381,7 +381,7 @@ class GetLostInNotation(PiCreatureScene):
DOWN, buff = MED_LARGE_BUFF, aligned_edge = LEFT DOWN, buff = MED_LARGE_BUFF, aligned_edge = LEFT
) )
circle = Circle(radius = 3*SPACE_X_RADIUS) circle = Circle(radius = 3*FRAME_X_RADIUS)
circle.set_fill(WHITE, 0) circle.set_fill(WHITE, 0)
circle.set_stroke(WHITE, 0) circle.set_stroke(WHITE, 0)
@ -1390,7 +1390,7 @@ class WalkThroughTwoExample(ShowAveragingCost):
class WriteHebbian(Scene): class WriteHebbian(Scene):
def construct(self): def construct(self):
words = TextMobject("Hebbian theory") words = TextMobject("Hebbian theory")
words.scale_to_fit_width(2*SPACE_X_RADIUS - 1) words.scale_to_fit_width(FRAME_WIDTH - 1)
words.to_edge(UP) words.to_edge(UP)
self.play(Write(words)) self.play(Write(words))
self.wait() self.wait()
@ -1477,7 +1477,7 @@ class ConstructGradientFromAllTrainingExamples(Scene):
def setup_grid(self): def setup_grid(self):
h_lines = VGroup(*[ h_lines = VGroup(*[
Line(LEFT, RIGHT).scale(0.85*SPACE_X_RADIUS) Line(LEFT, RIGHT).scale(0.85*FRAME_X_RADIUS)
for x in range(6) for x in range(6)
]) ])
h_lines.arrange_submobjects(DOWN, buff = 1) h_lines.arrange_submobjects(DOWN, buff = 1)
@ -1486,7 +1486,7 @@ class ConstructGradientFromAllTrainingExamples(Scene):
h_lines.to_edge(LEFT, buff = 0) h_lines.to_edge(LEFT, buff = 0)
v_lines = VGroup(*[ v_lines = VGroup(*[
Line(UP, DOWN).scale(SPACE_Y_RADIUS - MED_LARGE_BUFF) Line(UP, DOWN).scale(FRAME_Y_RADIUS - MED_LARGE_BUFF)
for x in range(self.n_examples + 1) for x in range(self.n_examples + 1)
]) ])
v_lines.arrange_submobjects(RIGHT, buff = 1.4) v_lines.arrange_submobjects(RIGHT, buff = 1.4)

View file

@ -61,7 +61,7 @@ class Test(Scene):
# h_group.arrange_submobjects(LEFT) # h_group.arrange_submobjects(LEFT)
# group.add(h_group) # group.add(h_group)
# group.arrange_submobjects(DOWN) # group.arrange_submobjects(DOWN)
# group.scale_to_fit_height(2*SPACE_Y_RADIUS - 1) # group.scale_to_fit_height(FRAME_HEIGHT - 1)
# self.add(group) # self.add(group)
@ -75,7 +75,7 @@ class Test(Scene):
]).arrange_submobjects(RIGHT) ]).arrange_submobjects(RIGHT)
for x in range(10) for x in range(10)
]).arrange_submobjects(DOWN) ]).arrange_submobjects(DOWN)
group.scale_to_fit_height(2*SPACE_Y_RADIUS - 1) group.scale_to_fit_height(FRAME_HEIGHT - 1)
self.add(group) self.add(group)
def show_weight_rows(self, network, index): def show_weight_rows(self, network, index):
@ -88,7 +88,7 @@ class Test(Scene):
pixel.set_fill(color, opacity = opacity) pixel.set_fill(color, opacity = opacity)
group.add(mob) group.add(mob)
group.arrange_submobjects_in_grid() group.arrange_submobjects_in_grid()
group.scale_to_fit_height(2*SPACE_Y_RADIUS - 1) group.scale_to_fit_height(FRAME_HEIGHT - 1)
self.add(group) self.add(group)
def show_all_activation_images(self, network, test_data): def show_all_activation_images(self, network, test_data):
@ -99,7 +99,7 @@ class Test(Scene):
image_samples.arrange_submobjects_in_grid( image_samples.arrange_submobjects_in_grid(
n_rows = 2, buff = LARGE_BUFF n_rows = 2, buff = LARGE_BUFF
) )
image_samples.scale_to_fit_height(2*SPACE_Y_RADIUS - 1) image_samples.scale_to_fit_height(FRAME_HEIGHT - 1)
self.add(image_samples) self.add(image_samples)
def get_activation_images(self, digit, network, test_data, n_examples = 8): def get_activation_images(self, digit, network, test_data, n_examples = 8):
@ -115,7 +115,7 @@ class Test(Scene):
]).arrange_submobjects(RIGHT) ]).arrange_submobjects(RIGHT)
for vect in input_vectors[:n_examples] for vect in input_vectors[:n_examples]
]).arrange_submobjects(DOWN) ]).arrange_submobjects(DOWN)
activation_iamges.scale_to_fit_height(2*SPACE_Y_RADIUS - 1) activation_iamges.scale_to_fit_height(FRAME_HEIGHT - 1)
return activation_iamges return activation_iamges
def show_two_blend(self): def show_two_blend(self):
@ -142,7 +142,7 @@ class Test(Scene):
group.arrange_submobjects(DOWN+RIGHT, SMALL_BUFF) group.arrange_submobjects(DOWN+RIGHT, SMALL_BUFF)
groups.add(group) groups.add(group)
groups.arrange_submobjects_in_grid() groups.arrange_submobjects_in_grid()
groups.scale_to_fit_height(2*SPACE_Y_RADIUS - 1) groups.scale_to_fit_height(FRAME_HEIGHT - 1)
self.add(groups) self.add(groups)
def show_test_input(self, network): def show_test_input(self, network):
@ -153,7 +153,7 @@ class Test(Scene):
if test[1] in [4, 9] if test[1] in [4, 9]
]) ])
group.arrange_submobjects(DOWN, buff = MED_LARGE_BUFF) group.arrange_submobjects(DOWN, buff = MED_LARGE_BUFF)
group.scale_to_fit_height(2*SPACE_Y_RADIUS - 1) group.scale_to_fit_height(FRAME_HEIGHT - 1)
self.play(FadeIn(group)) self.play(FadeIn(group))
def get_set(self, network, test): def get_set(self, network, test):

View file

@ -1,6 +1,6 @@
import numpy as np import numpy as np
from animation.transform import ApplyMethod, Transform from animation.transform import ApplyMethod, Transform
from constants import RIGHT, SPACE_X_RADIUS, UP from constants import RIGHT, FRAME_X_RADIUS, UP
from helpers import counterclockwise_path, straight_path from helpers import counterclockwise_path, straight_path
from point_cloud_mobject import Point from point_cloud_mobject import Point
from scene import Scene from scene import Scene
@ -16,7 +16,7 @@ class NumberLineScene(Scene):
def zoom_in_on(self, number, zoom_factor, run_time = 2.0): def zoom_in_on(self, number, zoom_factor, run_time = 2.0):
unit_length_to_spatial_width = self.number_line.unit_length_to_spatial_width*zoom_factor unit_length_to_spatial_width = self.number_line.unit_length_to_spatial_width*zoom_factor
radius = SPACE_X_RADIUS/unit_length_to_spatial_width radius = FRAME_X_RADIUS/unit_length_to_spatial_width
tick_frequency = 10**(np.floor(np.log10(radius))) tick_frequency = 10**(np.floor(np.log10(radius)))
left_tick = tick_frequency*(np.ceil((number-radius)/tick_frequency)) left_tick = tick_frequency*(np.ceil((number-radius)/tick_frequency))
new_number_line = NumberLine( new_number_line = NumberLine(

View file

@ -92,7 +92,7 @@ class SideGigToFullTime(Scene):
self.play( self.play(
ApplyMethod( ApplyMethod(
dollar_signs.shift, dollar_signs.shift,
(SPACE_Y_RADIUS+1)*DOWN, (FRAME_Y_RADIUS+1)*DOWN,
submobject_mode = "lagged_start" submobject_mode = "lagged_start"
), ),
morty.change_mode, "guilty", morty.change_mode, "guilty",
@ -195,10 +195,10 @@ class TwoTypesOfVideos(Scene):
def construct(self): def construct(self):
morty = Mortimer().shift(2*DOWN) morty = Mortimer().shift(2*DOWN)
stand_alone = TextMobject("Standalone videos") stand_alone = TextMobject("Standalone videos")
stand_alone.shift(SPACE_X_RADIUS*LEFT/2) stand_alone.shift(FRAME_X_RADIUS*LEFT/2)
stand_alone.to_edge(UP) stand_alone.to_edge(UP)
series = TextMobject("Series") series = TextMobject("Series")
series.shift(SPACE_X_RADIUS*RIGHT/2) series.shift(FRAME_X_RADIUS*RIGHT/2)
series.to_edge(UP) series.to_edge(UP)
box = Rectangle(width = 16, height = 9, color = WHITE) box = Rectangle(width = 16, height = 9, color = WHITE)
box.scale_to_fit_height(3) box.scale_to_fit_height(3)
@ -215,7 +215,7 @@ class TwoTypesOfVideos(Scene):
] ]
]) ])
series_list.arrange_submobjects(DOWN, aligned_edge = LEFT, buff = MED_SMALL_BUFF) series_list.arrange_submobjects(DOWN, aligned_edge = LEFT, buff = MED_SMALL_BUFF)
series_list.scale_to_fit_width(SPACE_X_RADIUS-2) series_list.scale_to_fit_width(FRAME_X_RADIUS-2)
series_list.next_to(series, DOWN, buff = MED_SMALL_BUFF) series_list.next_to(series, DOWN, buff = MED_SMALL_BUFF)
series_list.to_edge(RIGHT) series_list.to_edge(RIGHT)

View file

@ -385,7 +385,7 @@ class HartlAndPalais(Scene):
color = WHITE, color = WHITE,
stroke_width = 1, stroke_width = 1,
) )
hartl_rect.scale_to_fit_width(SPACE_X_RADIUS - 1) hartl_rect.scale_to_fit_width(FRAME_X_RADIUS - 1)
hartl_rect.to_edge(LEFT) hartl_rect.to_edge(LEFT)
palais_rect = hartl_rect.copy() palais_rect = hartl_rect.copy()
palais_rect.to_edge(RIGHT) palais_rect.to_edge(RIGHT)
@ -505,7 +505,7 @@ class EulerWrites628(Scene):
} }
def construct(self): def construct(self):
image = ImageMobject(os.path.join(RESOURCE_DIR, "dalembert_zoom")) image = ImageMobject(os.path.join(RESOURCE_DIR, "dalembert_zoom"))
image.scale_to_fit_width(2*SPACE_X_RADIUS - 1) image.scale_to_fit_width(FRAME_WIDTH - 1)
image.to_edge(UP, buff = MED_SMALL_BUFF) image.to_edge(UP, buff = MED_SMALL_BUFF)
image.fade(0.15) image.fade(0.15)
rect = Rectangle( rect = Rectangle(
@ -591,8 +591,8 @@ class HeroAndVillain(Scene):
for mob in pictures: for mob in pictures:
mob.scale_to_fit_height(5) mob.scale_to_fit_height(5)
good_euler.move_to(SPACE_X_RADIUS*LEFT/2) good_euler.move_to(FRAME_X_RADIUS*LEFT/2)
bad_euler.move_to(SPACE_X_RADIUS*RIGHT/2) bad_euler.move_to(FRAME_X_RADIUS*RIGHT/2)
bad_euler_pixelated.move_to(bad_euler) bad_euler_pixelated.move_to(bad_euler)
good_euler_label = TextMobject("Leonhard Euler") good_euler_label = TextMobject("Leonhard Euler")
@ -626,7 +626,7 @@ class HeroAndVillain(Scene):
class AnalysisQuote(Scene): class AnalysisQuote(Scene):
def construct(self): def construct(self):
analysis = get_image("Analysis_page_showing_pi") analysis = get_image("Analysis_page_showing_pi")
analysis.scale_to_fit_height(2*SPACE_Y_RADIUS) analysis.scale_to_fit_height(FRAME_HEIGHT)
analysis.to_edge(LEFT, buff = 0) analysis.to_edge(LEFT, buff = 0)
text = TextMobject( text = TextMobject(
@ -642,7 +642,7 @@ class AnalysisQuote(Scene):
pi_formula = TexMobject( pi_formula = TexMobject(
"\\pi", "=", "{ \\text{semicircumference}", "\\over", "\\text{radius}}" "\\pi", "=", "{ \\text{semicircumference}", "\\over", "\\text{radius}}"
) )
text.scale_to_fit_width(SPACE_X_RADIUS) text.scale_to_fit_width(FRAME_X_RADIUS)
text.next_to(analysis, RIGHT, LARGE_BUFF) text.next_to(analysis, RIGHT, LARGE_BUFF)
text.to_edge(UP) text.to_edge(UP)
@ -767,7 +767,7 @@ class ThingsNamedAfterEuler(Scene):
"Euler totient function (number theory)", "Euler totient function (number theory)",
])) ]))
group.arrange_submobjects(DOWN, aligned_edge = LEFT) group.arrange_submobjects(DOWN, aligned_edge = LEFT)
group.scale_to_fit_height(2*SPACE_Y_RADIUS - 1) group.scale_to_fit_height(FRAME_HEIGHT - 1)
self.play(LaggedStart(FadeIn, group, lag_ratio = 0.2, run_time = 12)) self.play(LaggedStart(FadeIn, group, lag_ratio = 0.2, run_time = 12))
self.wait() self.wait()
@ -1036,7 +1036,7 @@ class EndScene(PatreonEndScreen):
self.add(watch_basel) self.add(watch_basel)
# self.add(basel_screen) # self.add(basel_screen)
line = DashedLine(SPACE_X_RADIUS*LEFT, SPACE_X_RADIUS*RIGHT) line = DashedLine(FRAME_X_RADIUS*LEFT, FRAME_X_RADIUS*RIGHT)
line.next_to(watch_basel, DOWN) line.next_to(watch_basel, DOWN)
self.add(line) self.add(line)
@ -1061,7 +1061,7 @@ class EndScene(PatreonEndScreen):
instagram_logo.next_to(instagram_line, LEFT, SMALL_BUFF) instagram_logo.next_to(instagram_line, LEFT, SMALL_BUFF)
instagram = Group(instagram_logo, instagram_line) instagram = Group(instagram_logo, instagram_line)
instagram.next_to(line, DOWN) instagram.next_to(line, DOWN)
instagram.shift(SPACE_X_RADIUS*RIGHT/2) instagram.shift(FRAME_X_RADIUS*RIGHT/2)
self.add(instagram) self.add(instagram)
@ -1096,7 +1096,7 @@ class Thumbnail(Scene):
formula.scale(2) formula.scale(2)
pi.scale(1.5, about_edge = RIGHT) pi.scale(1.5, about_edge = RIGHT)
formula.set_stroke(BLUE, 1) formula.set_stroke(BLUE, 1)
formula.scale_to_fit_width(2*SPACE_X_RADIUS - 2) formula.scale_to_fit_width(FRAME_WIDTH - 2)
# formula.shift(0.5*RIGHT) # formula.shift(0.5*RIGHT)
self.add(formula) self.add(formula)

View file

@ -48,9 +48,9 @@ class IntroducePutnam(Scene):
for mob in six_hours, three_hours: for mob in six_hours, three_hours:
mob.next_to(title, DOWN, MED_LARGE_BUFF) mob.next_to(title, DOWN, MED_LARGE_BUFF)
# mob.highlight(BLUE) # mob.highlight(BLUE)
three_hours.shift(SPACE_X_RADIUS*LEFT/2) three_hours.shift(FRAME_X_RADIUS*LEFT/2)
three_hours_copy = three_hours.copy() three_hours_copy = three_hours.copy()
three_hours_copy.shift(SPACE_X_RADIUS*RIGHT) three_hours_copy.shift(FRAME_X_RADIUS*RIGHT)
question_groups = VGroup(*[ question_groups = VGroup(*[
VGroup(*[ VGroup(*[
@ -58,7 +58,7 @@ class IntroducePutnam(Scene):
for i in range(1, 7) for i in range(1, 7)
]).arrange_submobjects(DOWN, buff = MED_LARGE_BUFF) ]).arrange_submobjects(DOWN, buff = MED_LARGE_BUFF)
for c in "A", "B" for c in "A", "B"
]).arrange_submobjects(RIGHT, buff = SPACE_X_RADIUS - MED_SMALL_BUFF) ]).arrange_submobjects(RIGHT, buff = FRAME_X_RADIUS - MED_SMALL_BUFF)
question_groups.to_edge(LEFT) question_groups.to_edge(LEFT)
question_groups.to_edge(DOWN, MED_LARGE_BUFF) question_groups.to_edge(DOWN, MED_LARGE_BUFF)
flat_questions = VGroup(*it.chain(*question_groups)) flat_questions = VGroup(*it.chain(*question_groups))
@ -67,7 +67,7 @@ class IntroducePutnam(Scene):
for questions in question_groups: for questions in question_groups:
rect = SurroundingRectangle(questions, buff = MED_SMALL_BUFF) rect = SurroundingRectangle(questions, buff = MED_SMALL_BUFF)
rect.set_stroke(WHITE, 2) rect.set_stroke(WHITE, 2)
rect.stretch_to_fit_width(SPACE_X_RADIUS - 1) rect.stretch_to_fit_width(FRAME_X_RADIUS - 1)
rect.move_to(questions.get_left() + MED_SMALL_BUFF*LEFT, LEFT) rect.move_to(questions.get_left() + MED_SMALL_BUFF*LEFT, LEFT)
rects.add(rect) rects.add(rect)
@ -196,7 +196,7 @@ class NatureOf5sAnd6s(TeacherStudentsScene):
) )
self.change_student_modes(*["pondering"]*3) self.change_student_modes(*["pondering"]*3)
self.play(Transform(mover[1], new_words)) self.play(Transform(mover[1], new_words))
self.look_at((SPACE_X_RADIUS*RIGHT + SPACE_Y_RADIUS*UP)/2) self.look_at((FRAME_X_RADIUS*RIGHT + FRAME_Y_RADIUS*UP)/2)
self.wait(4) self.wait(4)
@ -239,7 +239,7 @@ class IntroduceTetrahedronSupplement(Scene):
question = TextMobject("Probability that this tetrahedron \\\\ contains the sphere's center?") question = TextMobject("Probability that this tetrahedron \\\\ contains the sphere's center?")
question.next_to(title, DOWN, MED_LARGE_BUFF) question.next_to(title, DOWN, MED_LARGE_BUFF)
group = VGroup(title, question) group = VGroup(title, question)
group.scale_to_fit_width(2*SPACE_X_RADIUS-1) group.scale_to_fit_width(FRAME_WIDTH-1)
group.to_edge(DOWN) group.to_edge(DOWN)
for n in range(1, 4): for n in range(1, 4):
@ -826,7 +826,7 @@ class AverageSizeOfSphericalTriangleSectionSupplement(Scene):
arg_separator = "" arg_separator = ""
) )
words.highlight_by_tex("section", GREEN) words.highlight_by_tex("section", GREEN)
words.scale_to_fit_width(2*SPACE_X_RADIUS - 1) words.scale_to_fit_width(FRAME_WIDTH - 1)
words.to_edge(DOWN) words.to_edge(DOWN)
self.play(Write(words)) self.play(Write(words))
self.wait(3) self.wait(3)
@ -1289,7 +1289,7 @@ class ThreeDAnswer(Scene):
"Probability that the tetrahedron contains center:", "Probability that the tetrahedron contains center:",
"$\\frac{1}{8}$" "$\\frac{1}{8}$"
) )
words.scale_to_fit_width(2*SPACE_X_RADIUS - 1) words.scale_to_fit_width(FRAME_WIDTH - 1)
words.to_edge(DOWN) words.to_edge(DOWN)
words[1].highlight(BLUE) words[1].highlight(BLUE)
@ -1531,7 +1531,7 @@ class AddedPromoWords(Scene):
"First", "$2^8$", "vistors get", "First", "$2^8$", "vistors get",
"$(e^\\pi - \\pi)\\%$", "off" "$(e^\\pi - \\pi)\\%$", "off"
) )
words.scale_to_fit_width(2*SPACE_X_RADIUS - 1) words.scale_to_fit_width(FRAME_WIDTH - 1)
words.to_edge(DOWN) words.to_edge(DOWN)
words.highlight_by_tex("2^8", YELLOW) words.highlight_by_tex("2^8", YELLOW)
words.highlight_by_tex("pi", PINK) words.highlight_by_tex("pi", PINK)

View file

@ -190,7 +190,7 @@ class PiHoldingScreen(PiCreatureScene):
class QuestionsLink(Scene): class QuestionsLink(Scene):
def construct(self): def construct(self):
link = TextMobject("https://3b1b.co/questions") link = TextMobject("https://3b1b.co/questions")
link.scale_to_fit_width(2*SPACE_X_RADIUS) link.scale_to_fit_width(FRAME_WIDTH)
link.to_edge(DOWN) link.to_edge(DOWN)
self.play(Write(link)) self.play(Write(link))
self.wait() self.wait()
@ -198,12 +198,12 @@ class QuestionsLink(Scene):
class Thumbnail(Scene): class Thumbnail(Scene):
def construct(self): def construct(self):
equation = TexMobject("2^{19} = " + "{:,}".format(2**19)) equation = TexMobject("2^{19} = " + "{:,}".format(2**19))
equation.scale_to_fit_width(SPACE_X_RADIUS) equation.scale_to_fit_width(FRAME_X_RADIUS)
equation.to_edge(DOWN, buff = LARGE_BUFF) equation.to_edge(DOWN, buff = LARGE_BUFF)
q_and_a = TextMobject("Q\\&A \\\\ Round 2") q_and_a = TextMobject("Q\\&A \\\\ Round 2")
q_and_a.gradient_highlight(BLUE, YELLOW) q_and_a.gradient_highlight(BLUE, YELLOW)
q_and_a.scale_to_fit_width(SPACE_X_RADIUS) q_and_a.scale_to_fit_width(FRAME_X_RADIUS)
q_and_a.to_edge(UP, buff = LARGE_BUFF) q_and_a.to_edge(UP, buff = LARGE_BUFF)
eater = ImageMobject("eater", height = 3) eater = ImageMobject("eater", height = 3)

View file

@ -336,7 +336,7 @@ class ExplainTrigFunctionDistances(TrigRepresentationsScene, PiCreatureScene):
cot_group = self.get_line_brace_text("cot") cot_group = self.get_line_brace_text("cot")
tan_text = tan_group[-1] tan_text = tan_group[-1]
cot_text = cot_group[-1] cot_text = cot_group[-1]
line = Line(UP, DOWN).scale(SPACE_Y_RADIUS) line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
line.rotate(self.theta_value) line.rotate(self.theta_value)
line.move_to(self.theta_group[-1]) line.move_to(self.theta_group[-1])
line.set_stroke(width = 2) line.set_stroke(width = 2)
@ -537,7 +537,7 @@ class ExplainTrigFunctionDistances(TrigRepresentationsScene, PiCreatureScene):
frac2.next_to(frac1) frac2.next_to(frac1)
frac2[-2].highlight(YELLOW) frac2[-2].highlight(YELLOW)
frac_group = VGroup(opp_over_hyp, frac1, frac2) frac_group = VGroup(opp_over_hyp, frac1, frac2)
frac_group.scale_to_fit_width(SPACE_X_RADIUS-1) frac_group.scale_to_fit_width(FRAME_X_RADIUS-1)
frac_group.next_to(ORIGIN, RIGHT).to_edge(UP) frac_group.next_to(ORIGIN, RIGHT).to_edge(UP)
question = TextMobject("Why is this $\\theta$?") question = TextMobject("Why is this $\\theta$?")

View file

@ -158,7 +158,7 @@ class TauPoem(Scene):
def first_word_to_last_digit(self): def first_word_to_last_digit(self):
if self.line_num == 19: if self.line_num == 19:
shift_val = SPACE_Y_RADIUS*DOWN shift_val = FRAME_Y_RADIUS*DOWN
self.new_digit.shift(shift_val) self.new_digit.shift(shift_val)
self.play(ApplyMethod( self.play(ApplyMethod(
self.first_digits.shift, shift_val, run_time = 2.0 self.first_digits.shift, shift_val, run_time = 2.0
@ -359,9 +359,9 @@ class TauPoem(Scene):
f_copy = deepcopy(formulae) f_copy = deepcopy(formulae)
for mob, count in zip(f_copy, it.count()): for mob, count in zip(f_copy, it.count()):
if count%3 == 0: if count%3 == 0:
mob.to_edge(LEFT).shift(RIGHT*(SPACE_X_RADIUS-1)) mob.to_edge(LEFT).shift(RIGHT*(FRAME_X_RADIUS-1))
else: else:
mob.shift(2*SPACE_X_RADIUS*RIGHT) mob.shift(FRAME_WIDTH*RIGHT)
self.play(*[ self.play(*[
Transform(*mobs, run_time = 2.0) Transform(*mobs, run_time = 2.0)
for mobs in zip(formulae, f_copy) for mobs in zip(formulae, f_copy)
@ -369,9 +369,9 @@ class TauPoem(Scene):
def line12(self): def line12(self):
interval_size = 0.5 interval_size = 0.5
axes_center = SPACE_X_RADIUS*LEFT/2 axes_center = FRAME_X_RADIUS*LEFT/2
grid_center = SPACE_X_RADIUS*RIGHT/2 grid_center = FRAME_X_RADIUS*RIGHT/2
radius = SPACE_X_RADIUS / 2.0 radius = FRAME_X_RADIUS / 2.0
axes = Axes( axes = Axes(
radius = radius, radius = radius,
interval_size = interval_size interval_size = interval_size

View file

@ -8,7 +8,7 @@ from helpers import *
class Stars(Mobject1D): class Stars(Mobject1D):
CONFIG = { CONFIG = {
"stroke_width" : 1, "stroke_width" : 1,
"radius" : SPACE_X_RADIUS, "radius" : FRAME_X_RADIUS,
"num_points" : 1000, "num_points" : 1000,
} }
def generate_points(self): def generate_points(self):

View file

@ -778,7 +778,7 @@ class TowerExponentFrame(Scene):
$7{,}625{,}597{,}484{,}987$. But with the triangle $7{,}625{,}597{,}484{,}987$. But with the triangle
of power, the difference is crystal clear: of power, the difference is crystal clear:
""") """)
words.scale_to_fit_width(2*SPACE_X_RADIUS-1) words.scale_to_fit_width(FRAME_WIDTH-1)
words.to_edge(UP) words.to_edge(UP)
top1 = TOP(TOP(3, 3), 3) top1 = TOP(TOP(3, 3), 3)
top2 = TOP(3, (TOP(3, 3))) top2 = TOP(3, (TOP(3, 3)))

View file

@ -210,7 +210,7 @@ class CompareToFermatsLastTheorem(TeacherStudentsScene):
class WritePythagoreanTriple(Scene): class WritePythagoreanTriple(Scene):
def construct(self): def construct(self):
words = TextMobject("``Pythagorean triple''") words = TextMobject("``Pythagorean triple''")
words.scale_to_fit_width(2*SPACE_X_RADIUS - LARGE_BUFF) words.scale_to_fit_width(FRAME_WIDTH - LARGE_BUFF)
words.to_corner(DOWN+LEFT) words.to_corner(DOWN+LEFT)
self.play(Write(words)) self.play(Write(words))
self.wait(2) self.wait(2)
@ -252,8 +252,8 @@ class ShowManyTriples(Scene):
title.target.scale(0.5) title.target.scale(0.5)
title.target.move_to( title.target.move_to(
(-SPACE_X_RADIUS + MED_LARGE_BUFF + 2.7*(i//8))*RIGHT + \ (-FRAME_X_RADIUS + MED_LARGE_BUFF + 2.7*(i//8))*RIGHT + \
(SPACE_Y_RADIUS - MED_LARGE_BUFF - (i%8))*UP, (FRAME_Y_RADIUS - MED_LARGE_BUFF - (i%8))*UP,
UP+LEFT UP+LEFT
) )
@ -328,7 +328,7 @@ class BabylonianTablets(Scene):
triple = TexMobject(tex) triple = TexMobject(tex)
triples.add(triple) triples.add(triple)
triples.arrange_submobjects(DOWN, aligned_edge = LEFT) triples.arrange_submobjects(DOWN, aligned_edge = LEFT)
triples.scale_to_fit_height(2*SPACE_Y_RADIUS - LARGE_BUFF) triples.scale_to_fit_height(FRAME_HEIGHT - LARGE_BUFF)
triples.to_edge(RIGHT) triples.to_edge(RIGHT)
self.add(title) self.add(title)
@ -960,10 +960,10 @@ class ReframeOnLattice(PiCreatureScene):
def get_all_plane_dots(self): def get_all_plane_dots(self):
x_min, y_min = map(int, self.plane.point_to_coords( x_min, y_min = map(int, self.plane.point_to_coords(
SPACE_X_RADIUS*LEFT + SPACE_Y_RADIUS*DOWN FRAME_X_RADIUS*LEFT + FRAME_Y_RADIUS*DOWN
)) ))
x_max, y_max = map(int, self.plane.point_to_coords( x_max, y_max = map(int, self.plane.point_to_coords(
SPACE_X_RADIUS*RIGHT + SPACE_Y_RADIUS*UP FRAME_X_RADIUS*RIGHT + FRAME_Y_RADIUS*UP
)) ))
result = VGroup(*[ result = VGroup(*[
Dot( Dot(
@ -1495,7 +1495,7 @@ class WriteGeneralFormula(GeneralExample):
def show_uv_to_triples(self): def show_uv_to_triples(self):
rect = self.corner_rect.copy() rect = self.corner_rect.copy()
rect.stretch_to_fit_height(2*SPACE_Y_RADIUS) rect.stretch_to_fit_height(FRAME_HEIGHT)
rect.move_to(self.corner_rect.get_bottom(), UP) rect.move_to(self.corner_rect.get_bottom(), UP)
h_line = Line(rect.get_left(), rect.get_right()) h_line = Line(rect.get_left(), rect.get_right())
@ -1572,8 +1572,8 @@ class VisualizeZSquared(Scene):
self.show_more_triangles() self.show_more_triangles()
def add_plane(self): def add_plane(self):
width = (SPACE_X_RADIUS+abs(self.plane_center[0]))/self.final_unit_size width = (FRAME_X_RADIUS+abs(self.plane_center[0]))/self.final_unit_size
height = (SPACE_Y_RADIUS+abs(self.plane_center[1]))/self.final_unit_size height = (FRAME_Y_RADIUS+abs(self.plane_center[1]))/self.final_unit_size
background_plane = ComplexPlane( background_plane = ComplexPlane(
x_radius = width, x_radius = width,
y_radius = height, y_radius = height,
@ -1698,7 +1698,7 @@ class VisualizeZSquared(Scene):
def draw_dots(self): def draw_dots(self):
min_corner, max_corner = [ min_corner, max_corner = [
self.background_plane.point_to_coords( self.background_plane.point_to_coords(
u*SPACE_X_RADIUS*RIGHT + u*SPACE_Y_RADIUS*UP u*FRAME_X_RADIUS*RIGHT + u*FRAME_Y_RADIUS*UP
) )
for u in -1, 1 for u in -1, 1
] ]
@ -1831,8 +1831,8 @@ class VisualizeZSquared(Scene):
### ###
def get_color_grid(self): def get_color_grid(self):
width = (SPACE_X_RADIUS+abs(self.plane_center[0]))/self.initial_unit_size width = (FRAME_X_RADIUS+abs(self.plane_center[0]))/self.initial_unit_size
height = (SPACE_Y_RADIUS+abs(self.plane_center[1]))/self.initial_unit_size height = (FRAME_Y_RADIUS+abs(self.plane_center[1]))/self.initial_unit_size
color_grid = ComplexPlane( color_grid = ComplexPlane(
x_radius = width, x_radius = width,
y_radius = int(height), y_radius = int(height),
@ -2150,7 +2150,7 @@ class DrawRadialLines(PointsWeMiss):
continue continue
coord_strings.add(str(new_coords)) coord_strings.add(str(new_coords))
point = self.background_plane.coords_to_point(*new_coords) point = self.background_plane.coords_to_point(*new_coords)
if abs(point[0]) > SPACE_X_RADIUS or abs(point[1]) > SPACE_Y_RADIUS: if abs(point[0]) > FRAME_X_RADIUS or abs(point[1]) > FRAME_Y_RADIUS:
continue continue
new_dot = Dot( new_dot = Dot(
point, color = GREEN, point, color = GREEN,
@ -2159,7 +2159,7 @@ class DrawRadialLines(PointsWeMiss):
new_dots.add(new_dot) new_dots.add(new_dot)
line = Line(self.plane_center, dot.get_center()) line = Line(self.plane_center, dot.get_center())
line.scale( line.scale(
2*SPACE_X_RADIUS/line.get_length(), FRAME_WIDTH/line.get_length(),
about_point = self.plane_center about_point = self.plane_center
) )
line.set_stroke(width = 1) line.set_stroke(width = 1)
@ -2296,7 +2296,7 @@ class RationalPointsOnUnitCircle(DrawRadialLines):
top_line = TexMobject( top_line = TexMobject(
"a", "^2", "+", "b", "^2", "=", "c", "^2 \\phantom{1}" "a", "^2", "+", "b", "^2", "=", "c", "^2 \\phantom{1}"
) )
top_line.shift(SPACE_X_RADIUS*RIGHT/2) top_line.shift(FRAME_X_RADIUS*RIGHT/2)
top_line.to_corner(UP + LEFT) top_line.to_corner(UP + LEFT)
top_line.shift(RIGHT) top_line.shift(RIGHT)
top_rect = BackgroundRectangle(top_line) top_rect = BackgroundRectangle(top_line)
@ -2498,7 +2498,7 @@ class ProjectPointsOntoUnitCircle(DrawRadialLines):
def draw_infinitely_many_lines(self): def draw_infinitely_many_lines(self):
lines = VGroup(*[ lines = VGroup(*[
Line(ORIGIN, 2*SPACE_X_RADIUS*vect) Line(ORIGIN, FRAME_WIDTH*vect)
for vect in compass_directions(1000) for vect in compass_directions(1000)
]) ])

View file

@ -608,7 +608,7 @@ class ShowPlan(PiCreatureScene):
title = TextMobject("The plan") title = TextMobject("The plan")
title.scale(1.5) title.scale(1.5)
title.to_edge(UP) title.to_edge(UP)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
h_line.next_to(title, DOWN) h_line.next_to(title, DOWN)
self.add(title, h_line) self.add(title, h_line)
@ -805,7 +805,7 @@ class TwoCarsAtRedLight(Scene):
) )
car2.pi_creature.highlight(GREY_BROWN) car2.pi_creature.highlight(GREY_BROWN)
car1.start_point = car1.get_corner(DOWN+RIGHT) car1.start_point = car1.get_corner(DOWN+RIGHT)
car1.shift(SPACE_X_RADIUS*LEFT) car1.shift(FRAME_X_RADIUS*LEFT)
#Pull up car #Pull up car
self.add(cars) self.add(cars)
@ -1088,7 +1088,7 @@ class VariousMusicalNotes(Scene):
graph_update_anim, graph_update_anim,
**kwargs **kwargs
) )
change_width_anim(SPACE_X_RADIUS).update(1) change_width_anim(FRAME_X_RADIUS).update(1)
graph_update_anim.update(0) graph_update_anim.update(0)
phrases = [ phrases = [
@ -1102,7 +1102,7 @@ class VariousMusicalNotes(Scene):
#Show graphs and phrases #Show graphs and phrases
widths = [SPACE_X_RADIUS, 1, 0.2] widths = [FRAME_X_RADIUS, 1, 0.2]
for width, phrase in zip(widths, phrases): for width, phrase in zip(widths, phrases):
brace = Brace(Line(LEFT, RIGHT), UP) brace = Brace(Line(LEFT, RIGHT), UP)
brace.stretch(width, 0) brace.stretch(width, 0)
@ -1152,8 +1152,8 @@ class VariousMusicalNotes(Scene):
long_graph = FunctionGraph( long_graph = FunctionGraph(
lambda x : 0.5*np.sin(freq*x), lambda x : 0.5*np.sin(freq*x),
x_min = -2*SPACE_X_RADIUS, x_min = -FRAME_WIDTH,
x_max = 2*SPACE_X_RADIUS, x_max = FRAME_WIDTH,
num_anchor_points = 1000 num_anchor_points = 1000
) )
long_graph.highlight(BLUE) long_graph.highlight(BLUE)
@ -1471,7 +1471,7 @@ class CenterOfMassDescription(FourierRecapScene):
circle_plane = self.get_circle_plane() circle_plane = self.get_circle_plane()
circle_plane.save_state() circle_plane.save_state()
circle_plane.generate_target() circle_plane.generate_target()
circle_plane.target.scale_to_fit_height(2*SPACE_Y_RADIUS) circle_plane.target.scale_to_fit_height(FRAME_HEIGHT)
circle_plane.target.center() circle_plane.target.center()
circle_plane.target.axes.set_stroke(width = 2) circle_plane.target.axes.set_stroke(width = 2)
circle_plane.target.main_lines.set_stroke(width = 2) circle_plane.target.main_lines.set_stroke(width = 2)
@ -1728,7 +1728,7 @@ class FocusRectangleInsert(FourierRecapScene):
self.setup_axes() self.setup_axes()
self.clear() self.clear()
point = self.frequency_axes.coords_to_point(5, 0.25) point = self.frequency_axes.coords_to_point(5, 0.25)
rect = ScreenRectangle(height = 2.1*SPACE_Y_RADIUS) rect = ScreenRectangle(height = 2.1*FRAME_Y_RADIUS)
rect.set_stroke(YELLOW, 2) rect.set_stroke(YELLOW, 2)
self.add(rect) self.add(rect)
self.wait() self.wait()
@ -2381,7 +2381,7 @@ class RadarOperatorUncertainty(Scene):
echo_object = Square() echo_object = Square()
echo_object.move_to(dish) echo_object.move_to(dish)
echo_object.shift(SPACE_X_RADIUS*RIGHT) echo_object.shift(FRAME_X_RADIUS*RIGHT)
pulse = RadarPulse(dish, echo_object, speed = 6) pulse = RadarPulse(dish, echo_object, speed = 6)
plane = Plane().scale(0.5) plane = Plane().scale(0.5)
@ -2994,7 +2994,7 @@ class IntroduceDeBroglie(Scene):
numbers_with_elongated_ticks = range(1900, 1941, 10), numbers_with_elongated_ticks = range(1900, 1941, 10),
color = BLUE_D color = BLUE_D
) )
time_line.stretch_to_fit_width(2*SPACE_X_RADIUS - picture.get_width() - 2) time_line.stretch_to_fit_width(FRAME_WIDTH - picture.get_width() - 2)
time_line.add_numbers(*time_line.numbers_with_elongated_ticks) time_line.add_numbers(*time_line.numbers_with_elongated_ticks)
time_line.next_to(picture, RIGHT, MED_LARGE_BUFF, DOWN) time_line.next_to(picture, RIGHT, MED_LARGE_BUFF, DOWN)
@ -3182,7 +3182,7 @@ class ShowMomentumFormula(IntroduceDeBroglie, TeacherStudentsScene):
VGroup(xi, xi_words, added_xi_words, xi_arrow).highlight(self.xi_color) VGroup(xi, xi_words, added_xi_words, xi_arrow).highlight(self.xi_color)
axes = Axes( axes = Axes(
x_min = 0, x_max = 2*SPACE_X_RADIUS, x_min = 0, x_max = FRAME_WIDTH,
y_min = -1, y_max = 1, y_min = -1, y_max = 1,
) )
axes.center().to_edge(UP, buff = -0.5) axes.center().to_edge(UP, buff = -0.5)
@ -3386,7 +3386,7 @@ class SortOfDopplerEffect(PiCreatureScene):
} }
def setup(self): def setup(self):
PiCreatureScene.setup(self) PiCreatureScene.setup(self)
rect = self.screen_rect = ScreenRectangle(height = 2*SPACE_Y_RADIUS) rect = self.screen_rect = ScreenRectangle(height = FRAME_HEIGHT)
rect.set_stroke(width = 0) rect.set_stroke(width = 0)
self.camera = MovingCamera( self.camera = MovingCamera(
rect, **self.camera_config rect, **self.camera_config
@ -3410,8 +3410,8 @@ class SortOfDopplerEffect(PiCreatureScene):
func = lambda x : 0.5*np.cos(omega*t - k*x) func = lambda x : 0.5*np.cos(omega*t - k*x)
graph = FunctionGraph( graph = FunctionGraph(
func, func,
x_min = -5*SPACE_X_RADIUS, x_min = -5*FRAME_X_RADIUS,
x_max = SPACE_X_RADIUS, x_max = FRAME_X_RADIUS,
color = color, color = color,
) )
return VGroup(graph, *[ return VGroup(graph, *[
@ -3420,7 +3420,7 @@ class SortOfDopplerEffect(PiCreatureScene):
color = color color = color
) )
for x in np.arange( for x in np.arange(
-4*SPACE_X_RADIUS, SPACE_X_RADIUS, -4*FRAME_X_RADIUS, FRAME_X_RADIUS,
self.arrow_spacing self.arrow_spacing
) )
]) ])
@ -3475,7 +3475,7 @@ class SortOfDopplerEffect(PiCreatureScene):
), ),
) )
self.play( self.play(
screen_rect.move_to, rect.get_right()+SPACE_X_RADIUS*LEFT, screen_rect.move_to, rect.get_right()+FRAME_X_RADIUS*LEFT,
k_tracker.shift, 2*LEFT, k_tracker.shift, 2*LEFT,
) )
@ -3514,7 +3514,7 @@ class SortOfDopplerEffect(PiCreatureScene):
class HangingWeightsScene(MovingCameraScene): class HangingWeightsScene(MovingCameraScene):
CONFIG = { CONFIG = {
"frequency" : 0.5, "frequency" : 0.5,
"ceiling_radius" : 3*SPACE_X_RADIUS, "ceiling_radius" : 3*FRAME_X_RADIUS,
"n_springs" : 72, "n_springs" : 72,
"amplitude" : 0.6, "amplitude" : 0.6,
"spring_radius" : 0.15, "spring_radius" : 0.15,
@ -3669,7 +3669,7 @@ class HangingWeightsScene(MovingCameraScene):
self.einstein = einstein self.einstein = einstein
def moving_reference_frame(self): def moving_reference_frame(self):
rect = ScreenRectangle(height = 2.1*SPACE_Y_RADIUS) rect = ScreenRectangle(height = 2.1*FRAME_Y_RADIUS)
rect_movement = AmbientMovement(rect, direction = LEFT, rate = 2) rect_movement = AmbientMovement(rect, direction = LEFT, rate = 2)
camera_frame = self.camera_frame camera_frame = self.camera_frame
@ -3681,7 +3681,7 @@ class HangingWeightsScene(MovingCameraScene):
FadeOut(self.einstein), FadeOut(self.einstein),
) )
self.play(camera_frame.scale, 3, {"about_point" : 2*UP}) self.play(camera_frame.scale, 3, {"about_point" : 2*UP})
self.play(rect.shift, 2*SPACE_X_RADIUS*RIGHT, path_arc = -TAU/2) self.play(rect.shift, FRAME_WIDTH*RIGHT, path_arc = -TAU/2)
self.add(rect_movement) self.add(rect_movement)
self.wait(3) self.wait(3)
@ -3929,7 +3929,7 @@ class FourierTransformOfWaveFunction(Scene):
sinusoid = axes.get_graph( sinusoid = axes.get_graph(
lambda x : 0.5*np.cos(TAU*x), lambda x : 0.5*np.cos(TAU*x),
x_min = -SPACE_X_RADIUS, x_max = 3*SPACE_X_RADIUS, x_min = -FRAME_X_RADIUS, x_max = 3*FRAME_X_RADIUS,
) )
sinusoid.to_edge(UP, buff = SMALL_BUFF) sinusoid.to_edge(UP, buff = SMALL_BUFF)
@ -4390,7 +4390,7 @@ class ThinkOfHeisenbergUncertainty(PiCreatureScene):
dot_gdw = dot_cloud.gaussian_distribution_wrapper dot_gdw = dot_cloud.gaussian_distribution_wrapper
dot_gdw.scale_to_fit_width(1) dot_gdw.scale_to_fit_width(1)
dot_gdw.rotate(TAU/8) dot_gdw.rotate(TAU/8)
dot_gdw.move_to(SPACE_X_RADIUS*RIGHT/2), dot_gdw.move_to(FRAME_X_RADIUS*RIGHT/2),
vector_cloud = ProbabalisticVectorCloud( vector_cloud = ProbabalisticVectorCloud(
center_func = dot_gdw.get_center center_func = dot_gdw.get_center
@ -4457,7 +4457,7 @@ class ThinkOfHeisenbergUncertainty(PiCreatureScene):
self.play( self.play(
ApplyMethod( ApplyMethod(
VGroup(dot_gdw, vector_gdw ).shift, VGroup(dot_gdw, vector_gdw ).shift,
SPACE_X_RADIUS*RIGHT, FRAME_X_RADIUS*RIGHT,
rate_func = running_start rate_func = running_start
) )
) )
@ -4652,7 +4652,7 @@ class PuzzleStatement(Scene):
to determine who we send. Can we make sure we don't send to determine who we send. Can we make sure we don't send
the weakest person? the weakest person?
""", alignment = "") """, alignment = "")
words.scale_to_fit_width(2*SPACE_X_RADIUS - 2) words.scale_to_fit_width(FRAME_WIDTH - 2)
words.next_to(group, DOWN, LARGE_BUFF) words.next_to(group, DOWN, LARGE_BUFF)
self.play(LaggedStart(FadeIn, words, run_time = 5, lag_ratio = 0.2)) self.play(LaggedStart(FadeIn, words, run_time = 5, lag_ratio = 0.2))
self.wait(2) self.wait(2)

View file

@ -110,8 +110,8 @@ class EMWave(ContinualAnimationGroup):
"frequency" : 0.25, "frequency" : 0.25,
"n_vectors" : 40, "n_vectors" : 40,
"propogation_direction" : RIGHT, "propogation_direction" : RIGHT,
"start_point" : SPACE_X_RADIUS*LEFT + DOWN + OUT, "start_point" : FRAME_X_RADIUS*LEFT + DOWN + OUT,
"length" : 2*SPACE_X_RADIUS, "length" : FRAME_WIDTH,
"amplitude" : 1, "amplitude" : 1,
"rotation" : 0, "rotation" : 0,
"A_vect" : [0, 0, 1], "A_vect" : [0, 0, 1],
@ -194,7 +194,7 @@ class WavePacket(Animation):
CONFIG = { CONFIG = {
"EMWave_config" : { "EMWave_config" : {
"wave_number" : 0, "wave_number" : 0,
"start_point" : SPACE_X_RADIUS*LEFT, "start_point" : FRAME_X_RADIUS*LEFT,
"phi_vect" : np.ones(3)*np.pi/4, "phi_vect" : np.ones(3)*np.pi/4,
}, },
"em_wave" : None, "em_wave" : None,
@ -203,7 +203,7 @@ class WavePacket(Animation):
"packet_width" : 6, "packet_width" : 6,
"include_E_vects" : True, "include_E_vects" : True,
"include_M_vects" : True, "include_M_vects" : True,
"filter_distance" : SPACE_X_RADIUS, "filter_distance" : FRAME_X_RADIUS,
"get_filtered" : False, "get_filtered" : False,
"remover" : True, "remover" : True,
"width" : 2*np.pi, "width" : 2*np.pi,
@ -308,7 +308,7 @@ class FilterScene(ThreeDScene):
"filter_x_coordinates" : [0], "filter_x_coordinates" : [0],
"pol_filter_configs" : [{}], "pol_filter_configs" : [{}],
"EMWave_config" : { "EMWave_config" : {
"start_point" : SPACE_X_RADIUS*LEFT + DOWN+OUT "start_point" : FRAME_X_RADIUS*LEFT + DOWN+OUT
}, },
"axes_config" : {}, "axes_config" : {},
"start_phi" : 0.8*np.pi/2, "start_phi" : 0.8*np.pi/2,
@ -340,7 +340,7 @@ class FilterScene(ThreeDScene):
def get_filter_absorption_animation(self, pol_filter, photon): def get_filter_absorption_animation(self, pol_filter, photon):
x = pol_filter.get_center()[0] x = pol_filter.get_center()[0]
alpha = (x + SPACE_X_RADIUS) / (2*SPACE_X_RADIUS) alpha = (x + FRAME_X_RADIUS) / (FRAME_WIDTH)
return ApplyMethod( return ApplyMethod(
pol_filter.set_fill, RED, pol_filter.set_fill, RED,
run_time = photon.run_time, run_time = photon.run_time,
@ -379,7 +379,7 @@ class DirectionOfPolarizationScene(FilterScene):
def setup_rectangles(self): def setup_rectangles(self):
rect1 = Rectangle( rect1 = Rectangle(
height = 2*self.em_wave.amplitude, height = 2*self.em_wave.amplitude,
width = SPACE_X_RADIUS + 0.25, width = FRAME_X_RADIUS + 0.25,
stroke_color = BLUE, stroke_color = BLUE,
fill_color = BLUE, fill_color = BLUE,
fill_opacity = 0.2, fill_opacity = 0.2,
@ -502,7 +502,7 @@ class Goal(PiCreatureScene):
goal = TextMobject("Goal: ") goal = TextMobject("Goal: ")
goal.highlight(YELLOW) goal.highlight(YELLOW)
goal.shift(SPACE_X_RADIUS*LEFT/2 + UP) goal.shift(FRAME_X_RADIUS*LEFT/2 + UP)
weirdness = TextMobject("Eye-catching quantum weirdness") weirdness = TextMobject("Eye-catching quantum weirdness")
weirdness.next_to(goal, RIGHT) weirdness.next_to(goal, RIGHT)
cross = Cross(weirdness) cross = Cross(weirdness)
@ -791,7 +791,7 @@ class IntroduceMagneticField(IntroduceElectricField, ThreeDScene):
M_vect.shift(SMALL_BUFF*M_vect.get_vector()) M_vect.shift(SMALL_BUFF*M_vect.get_vector())
particle.save_state() particle.save_state()
particle.shift(2*SPACE_X_RADIUS*LEFT) particle.shift(FRAME_WIDTH*LEFT)
self.play( self.play(
particle.restore, particle.restore,
@ -876,7 +876,7 @@ class CurlRelationBetweenFields(ThreeDScene):
self.second_loop_in_E() self.second_loop_in_E()
def add_axes(self): def add_axes(self):
self.add(ThreeDAxes(x_axis_radius = SPACE_X_RADIUS)) self.add(ThreeDAxes(x_axis_radius = FRAME_X_RADIUS))
def loop_in_E(self): def loop_in_E(self):
E_vects = VGroup(*[ E_vects = VGroup(*[
@ -975,7 +975,7 @@ class WriteCurlEquations(Scene):
) )
eqs = VGroup(eq1, eq2) eqs = VGroup(eq1, eq2)
eqs.arrange_submobjects(DOWN, buff = LARGE_BUFF) eqs.arrange_submobjects(DOWN, buff = LARGE_BUFF)
eqs.scale_to_fit_height(2*SPACE_Y_RADIUS - 1) eqs.scale_to_fit_height(FRAME_HEIGHT - 1)
eqs.to_edge(LEFT) eqs.to_edge(LEFT)
for eq in eqs: for eq in eqs:
eq.highlight_by_tex_to_color_map({ eq.highlight_by_tex_to_color_map({
@ -1085,7 +1085,7 @@ class DirectWaveOutOfScreen(IntroduceEMWave):
"EMWave_config" : { "EMWave_config" : {
"requires_start_up" : False, "requires_start_up" : False,
"amplitude" : 2, "amplitude" : 2,
"start_point" : SPACE_X_RADIUS*LEFT, "start_point" : FRAME_X_RADIUS*LEFT,
"A_vect" : [0, 1, 0], "A_vect" : [0, 1, 0],
"start_up_time" : 0, "start_up_time" : 0,
} }
@ -1562,7 +1562,7 @@ class ChangeFromHorizontalToVerticallyPolarized(DirectionOfPolarizationScene):
CONFIG = { CONFIG = {
"filter_x_coordinates" : [], "filter_x_coordinates" : [],
"EMWave_config" : { "EMWave_config" : {
"start_point" : SPACE_X_RADIUS*LEFT, "start_point" : FRAME_X_RADIUS*LEFT,
"A_vect" : [0, 2, 0], "A_vect" : [0, 2, 0],
} }
} }
@ -1901,7 +1901,7 @@ class FromBracketFootnote(Scene):
arg_separator = "" arg_separator = ""
) )
words.highlight_by_tex("ket", YELLOW) words.highlight_by_tex("ket", YELLOW)
words.scale_to_fit_width(2*SPACE_X_RADIUS - 1) words.scale_to_fit_width(FRAME_WIDTH - 1)
self.add(words) self.add(words)
class Ay(Scene): class Ay(Scene):
@ -1959,7 +1959,7 @@ class AlternateBasis(ShowTipToTailSum):
new_plane = NumberPlane( new_plane = NumberPlane(
x_unit_size = 2, x_unit_size = 2,
y_unit_size = 2, y_unit_size = 2,
y_radius = SPACE_X_RADIUS, y_radius = FRAME_X_RADIUS,
secondary_line_ratio = 0, secondary_line_ratio = 0,
) )
new_plane.add_coordinates() new_plane.add_coordinates()
@ -2020,14 +2020,14 @@ class AlternateBasis(ShowTipToTailSum):
class WriteBasis(Scene): class WriteBasis(Scene):
def construct(self): def construct(self):
words = TextMobject("Choice of ``basis''") words = TextMobject("Choice of ``basis''")
words.scale_to_fit_width(2*SPACE_X_RADIUS-1) words.scale_to_fit_width(FRAME_WIDTH-1)
self.play(Write(words)) self.play(Write(words))
self.wait() self.wait()
class ShowPolarizingFilter(DirectionOfPolarizationScene): class ShowPolarizingFilter(DirectionOfPolarizationScene):
CONFIG = { CONFIG = {
"EMWave_config" : { "EMWave_config" : {
"start_point" : SPACE_X_RADIUS*LEFT, "start_point" : FRAME_X_RADIUS*LEFT,
}, },
"apply_filter" : True, "apply_filter" : True,
} }
@ -2205,7 +2205,7 @@ class ShowPolarizingFilter(DirectionOfPolarizationScene):
class NamePolarizingFilter(Scene): class NamePolarizingFilter(Scene):
def construct(self): def construct(self):
words = TextMobject("Polarizing filter") words = TextMobject("Polarizing filter")
words.scale_to_fit_width(2*SPACE_X_RADIUS - 1) words.scale_to_fit_width(FRAME_WIDTH - 1)
self.play(Write(words)) self.play(Write(words))
self.wait() self.wait()
@ -2214,7 +2214,7 @@ class EnergyOfWavesWavePortion(DirectWaveOutOfScreen):
"EMWave_config" : { "EMWave_config" : {
"A_vect" : [0, 1, 1], "A_vect" : [0, 1, 1],
"amplitude" : 4, "amplitude" : 4,
"start_point" : SPACE_X_RADIUS*LEFT + 2*DOWN, "start_point" : FRAME_X_RADIUS*LEFT + 2*DOWN,
} }
} }
def construct(self): def construct(self):
@ -2435,7 +2435,7 @@ class DescribePhoton(ThreeDScene):
self.set_camera_position(phi = 0.8*np.pi/2, theta = -np.pi/4) self.set_camera_position(phi = 0.8*np.pi/2, theta = -np.pi/4)
em_wave = EMWave( em_wave = EMWave(
start_point = SPACE_X_RADIUS*LEFT, start_point = FRAME_X_RADIUS*LEFT,
A_vect = [0, 1, 1], A_vect = [0, 1, 1],
wave_number = 0, wave_number = 0,
amplitude = 3, amplitude = 3,
@ -2521,7 +2521,7 @@ class DescribePhoton(ThreeDScene):
secondary_color = DARK_GREY, secondary_color = DARK_GREY,
x_unit_size = 2, x_unit_size = 2,
y_unit_size = 2, y_unit_size = 2,
y_radius = SPACE_X_RADIUS, y_radius = FRAME_X_RADIUS,
) )
plane.add_coordinates(x_vals = range(-3, 4), y_vals = []) plane.add_coordinates(x_vals = range(-3, 4), y_vals = [])
plane.rotate(np.pi/2, RIGHT) plane.rotate(np.pi/2, RIGHT)
@ -2902,14 +2902,14 @@ class SeeCommentInDescription(Scene):
vs. double-headed arrows vs. double-headed arrows
\\end{flushleft} \\end{flushleft}
""") """)
words.scale_to_fit_width(2*SPACE_X_RADIUS - 1) words.scale_to_fit_width(FRAME_WIDTH - 1)
words.to_corner(DOWN+LEFT) words.to_corner(DOWN+LEFT)
self.add(words) self.add(words)
class SeeCommentInDescriptionAgain(Scene): class SeeCommentInDescriptionAgain(Scene):
def construct(self): def construct(self):
words = TextMobject("$^*$Again, see description") words = TextMobject("$^*$Again, see description")
words.scale_to_fit_width(2*SPACE_X_RADIUS - 1) words.scale_to_fit_width(FRAME_WIDTH - 1)
words.to_corner(DOWN+LEFT) words.to_corner(DOWN+LEFT)
self.add(words) self.add(words)
@ -2924,7 +2924,7 @@ class ShootPhotonThroughFilter(DirectionOfPolarizationScene):
"EMWave_config" : { "EMWave_config" : {
"wave_number" : 0, "wave_number" : 0,
"A_vect" : [0, 1, 1], "A_vect" : [0, 1, 1],
"start_point" : SPACE_X_RADIUS*LEFT, "start_point" : FRAME_X_RADIUS*LEFT,
"amplitude" : np.sqrt(2), "amplitude" : np.sqrt(2),
}, },
"pol_filter_configs" : [{ "pol_filter_configs" : [{
@ -3450,7 +3450,7 @@ class PhotonAtSlightAngle(ThreeFilters):
"EMWave_config" : { "EMWave_config" : {
"wave_number" : 0, "wave_number" : 0,
"A_vect" : [0, np.sin(np.pi/8), np.cos(np.pi/8)], "A_vect" : [0, np.sin(np.pi/8), np.cos(np.pi/8)],
"start_point" : SPACE_X_RADIUS*LEFT, "start_point" : FRAME_X_RADIUS*LEFT,
"amplitude" : 2, "amplitude" : 2,
}, },
"axes_config" : { "axes_config" : {
@ -3853,7 +3853,7 @@ class PhotonAtSlightAngle(ThreeFilters):
def get_blocked_photon(self, **kwargs): def get_blocked_photon(self, **kwargs):
return self.get_photon( return self.get_photon(
filter_distance = SPACE_X_RADIUS + 3, filter_distance = FRAME_X_RADIUS + 3,
get_filtered = True, get_filtered = True,
**kwargs **kwargs
) )
@ -4202,7 +4202,7 @@ class ClockwisePhotonInsert(Scene):
) )
eq.highlight(BLUE) eq.highlight(BLUE)
VGroup(*it.chain(eq[:4], eq[-5:])).highlight(WHITE) VGroup(*it.chain(eq[:4], eq[-5:])).highlight(WHITE)
eq.scale_to_fit_height(2*SPACE_Y_RADIUS - 1) eq.scale_to_fit_height(FRAME_HEIGHT - 1)
eq.to_edge(LEFT) eq.to_edge(LEFT)
self.add(eq) self.add(eq)
@ -4304,7 +4304,7 @@ class Footnote(Scene):
from quantum mechanics conventions. from quantum mechanics conventions.
\\end{flushleft} \\end{flushleft}
""") """)
words.scale_to_fit_width(2*SPACE_X_RADIUS - 2) words.scale_to_fit_width(FRAME_WIDTH - 2)
self.add(words) self.add(words)

View file

@ -30,7 +30,7 @@ mpmath.mp.dps = 7
def zeta(z): def zeta(z):
max_norm = SPACE_X_RADIUS max_norm = FRAME_X_RADIUS
try: try:
return np.complex(mpmath.zeta(z)) return np.complex(mpmath.zeta(z))
except: except:
@ -51,7 +51,7 @@ class ZetaTransformationScene(ComplexTransformationScene):
"run_time" : 5, "run_time" : 5,
}, },
"x_min" : 1, "x_min" : 1,
"x_max" : int(SPACE_X_RADIUS+2), "x_max" : int(FRAME_X_RADIUS+2),
"extra_lines_x_min" : -2, "extra_lines_x_min" : -2,
"extra_lines_x_max" : 4, "extra_lines_x_max" : 4,
"extra_lines_y_min" : -2, "extra_lines_y_min" : -2,
@ -1027,7 +1027,7 @@ class FromRealToComplex(ComplexTransformationScene):
def transition_to_spiril_sum(self): def transition_to_spiril_sum(self):
zeta = self.get_zeta_definition("2+i", "1.15 - 0.44i") zeta = self.get_zeta_definition("2+i", "1.15 - 0.44i")
zeta.scale_to_fit_width(2*SPACE_X_RADIUS-1) zeta.scale_to_fit_width(FRAME_WIDTH-1)
zeta.to_corner(UP+LEFT) zeta.to_corner(UP+LEFT)
lines, output_dot = self.get_sum_lines(complex(2, 1)) lines, output_dot = self.get_sum_lines(complex(2, 1))
@ -1076,16 +1076,16 @@ class FromRealToComplex(ComplexTransformationScene):
def show_domain_of_convergence(self, opacity = 0.2): def show_domain_of_convergence(self, opacity = 0.2):
domain = Rectangle( domain = Rectangle(
width = SPACE_X_RADIUS-2, width = FRAME_X_RADIUS-2,
height = 2*SPACE_Y_RADIUS, height = FRAME_HEIGHT,
stroke_width = 0, stroke_width = 0,
fill_color = YELLOW, fill_color = YELLOW,
fill_opacity = opacity, fill_opacity = opacity,
) )
domain.to_edge(RIGHT, buff = 0) domain.to_edge(RIGHT, buff = 0)
anti_domain = Rectangle( anti_domain = Rectangle(
width = SPACE_X_RADIUS+2, width = FRAME_X_RADIUS+2,
height = 2*SPACE_Y_RADIUS, height = FRAME_HEIGHT,
stroke_width = 0, stroke_width = 0,
fill_color = RED, fill_color = RED,
fill_opacity = opacity, fill_opacity = opacity,
@ -1217,7 +1217,7 @@ class TerritoryOfExponents(ComplexTransformationScene):
familiar_territory.highlight(YELLOW) familiar_territory.highlight(YELLOW)
familiar_territory.next_to(ORIGIN, UP+RIGHT) familiar_territory.next_to(ORIGIN, UP+RIGHT)
familiar_territory.shift(2*UP) familiar_territory.shift(2*UP)
real_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS) real_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
real_line.highlight(YELLOW) real_line.highlight(YELLOW)
arrow1 = Arrow(familiar_territory.get_bottom(), real_line.get_left()) arrow1 = Arrow(familiar_territory.get_bottom(), real_line.get_left())
arrow2 = Arrow(familiar_territory.get_bottom(), real_line.get_right()) arrow2 = Arrow(familiar_territory.get_bottom(), real_line.get_right())
@ -1226,8 +1226,8 @@ class TerritoryOfExponents(ComplexTransformationScene):
extended_realm = TextMobject("Extended realm") extended_realm = TextMobject("Extended realm")
extended_realm.move_to(familiar_territory) extended_realm.move_to(familiar_territory)
full_plane = Rectangle( full_plane = Rectangle(
width = 2*SPACE_X_RADIUS, width = FRAME_WIDTH,
height = 2*SPACE_Y_RADIUS, height = FRAME_HEIGHT,
fill_color = YELLOW, fill_color = YELLOW,
fill_opacity = 0.3 fill_opacity = 0.3
) )
@ -1306,9 +1306,9 @@ class ComplexExponentiation(Scene):
self.imag_exponent = imag_part self.imag_exponent = imag_part
def add_on_planes(self): def add_on_planes(self):
left_plane = NumberPlane(x_radius = (SPACE_X_RADIUS-1)/2) left_plane = NumberPlane(x_radius = (FRAME_X_RADIUS-1)/2)
left_plane.to_edge(LEFT, buff = 0) left_plane.to_edge(LEFT, buff = 0)
imag_line = Line(DOWN, UP).scale(SPACE_Y_RADIUS) imag_line = Line(DOWN, UP).scale(FRAME_Y_RADIUS)
imag_line.highlight(YELLOW).fade(0.3) imag_line.highlight(YELLOW).fade(0.3)
imag_line.move_to(left_plane.get_center()) imag_line.move_to(left_plane.get_center())
left_plane.add(imag_line) left_plane.add(imag_line)
@ -1317,7 +1317,7 @@ class ComplexExponentiation(Scene):
left_title.highlight(YELLOW) left_title.highlight(YELLOW)
left_title.next_to(left_plane.get_top(), DOWN) left_title.next_to(left_plane.get_top(), DOWN)
right_plane = NumberPlane(x_radius = (SPACE_X_RADIUS-1)/2) right_plane = NumberPlane(x_radius = (FRAME_X_RADIUS-1)/2)
right_plane.to_edge(RIGHT, buff = 0) right_plane.to_edge(RIGHT, buff = 0)
unit_circle = Circle() unit_circle = Circle()
unit_circle.highlight(MAROON_B).fade(0.3) unit_circle.highlight(MAROON_B).fade(0.3)
@ -1709,8 +1709,8 @@ class VisualizingSSquared(ComplexTransformationScene):
self.plane.next_to(ORIGIN, UP, buff = 0.01) self.plane.next_to(ORIGIN, UP, buff = 0.01)
self.plane.add(self.plane.copy().rotate(np.pi, RIGHT)) self.plane.add(self.plane.copy().rotate(np.pi, RIGHT))
self.plane.add( self.plane.add(
Line(ORIGIN, SPACE_X_RADIUS*RIGHT, color = self.horiz_end_color), Line(ORIGIN, FRAME_X_RADIUS*RIGHT, color = self.horiz_end_color),
Line(ORIGIN, SPACE_X_RADIUS*LEFT, color = self.horiz_end_color), Line(ORIGIN, FRAME_X_RADIUS*LEFT, color = self.horiz_end_color),
) )
self.add(self.plane) self.add(self.plane)
@ -1754,7 +1754,7 @@ class VisualizingSSquared(ComplexTransformationScene):
class ShowZetaOnHalfPlane(ZetaTransformationScene): class ShowZetaOnHalfPlane(ZetaTransformationScene):
CONFIG = { CONFIG = {
"x_min" : 1, "x_min" : 1,
"x_max" : int(SPACE_X_RADIUS+2), "x_max" : int(FRAME_X_RADIUS+2),
} }
def construct(self): def construct(self):
self.add_title() self.add_title()
@ -1824,7 +1824,7 @@ class ShowZetaOnHalfPlane(ZetaTransformationScene):
words.shift(LEFT+UP) words.shift(LEFT+UP)
line = Line(*map(self.z_to_point, [ line = Line(*map(self.z_to_point, [
complex(np.euler_gamma, u*SPACE_Y_RADIUS) complex(np.euler_gamma, u*FRAME_Y_RADIUS)
for u in 1, -1 for u in 1, -1
])) ]))
line.highlight(YELLOW) line.highlight(YELLOW)
@ -1849,7 +1849,7 @@ class ShowZetaOnHalfPlane(ZetaTransformationScene):
VGroup(*[ VGroup(*[
Line( Line(
vert_vect+RIGHT, vert_vect+RIGHT,
vert_vect+(SPACE_X_RADIUS+1)*horiz_vect vert_vect+(FRAME_X_RADIUS+1)*horiz_vect
) )
for vert_vect in UP, DOWN for vert_vect in UP, DOWN
]) ])
@ -1976,7 +1976,7 @@ class ShowConditionalDefinition(Scene):
class SquiggleOnExtensions(ZetaTransformationScene): class SquiggleOnExtensions(ZetaTransformationScene):
CONFIG = { CONFIG = {
"x_min" : 1, "x_min" : 1,
"x_max" : int(SPACE_X_RADIUS+2), "x_max" : int(FRAME_X_RADIUS+2),
} }
def construct(self): def construct(self):
self.show_negative_one() self.show_negative_one()
@ -2038,7 +2038,7 @@ class SquiggleOnExtensions(ZetaTransformationScene):
]) ])
def mixed_scalar_func(point): def mixed_scalar_func(point):
x, y, z = point x, y, z = point
scalar = 1 + (gamma-x)/(gamma+SPACE_X_RADIUS) scalar = 1 + (gamma-x)/(gamma+FRAME_X_RADIUS)
return np.array([ return np.array([
(scalar**2)*x, (scalar**2)*x,
(scalar**3)*y, (scalar**3)*y,
@ -2046,7 +2046,7 @@ class SquiggleOnExtensions(ZetaTransformationScene):
]) ])
def alt_mixed_scalar_func(point): def alt_mixed_scalar_func(point):
x, y, z = point x, y, z = point
scalar = 1 + (gamma-x)/(gamma+SPACE_X_RADIUS) scalar = 1 + (gamma-x)/(gamma+FRAME_X_RADIUS)
return np.array([ return np.array([
(scalar**5)*x, (scalar**5)*x,
(scalar**2)*y, (scalar**2)*y,
@ -2668,7 +2668,7 @@ class ManyIntersectingLinesPostZeta(ManyIntersectingLinesPreZeta):
class ManyIntersectingLinesPreSSquared(ManyIntersectingLinesPreZeta): class ManyIntersectingLinesPreSSquared(ManyIntersectingLinesPreZeta):
CONFIG = { CONFIG = {
"x_min" : -int(SPACE_X_RADIUS), "x_min" : -int(FRAME_X_RADIUS),
"apply_zeta" : False, "apply_zeta" : False,
"lines_center" : ORIGIN, "lines_center" : ORIGIN,
"nudge_size" : 0.9, "nudge_size" : 0.9,
@ -2854,7 +2854,7 @@ class DiscussZeros(ZetaTransformationScene):
def show_critical_strip(self): def show_critical_strip(self):
strip = Rectangle( strip = Rectangle(
height = 2*SPACE_Y_RADIUS, height = FRAME_HEIGHT,
width = 1 width = 1
) )
strip.next_to(ORIGIN, RIGHT, buff = 0) strip.next_to(ORIGIN, RIGHT, buff = 0)
@ -2877,8 +2877,8 @@ class DiscussZeros(ZetaTransformationScene):
]) ])
new_dots.highlight(YELLOW) new_dots.highlight(YELLOW)
critical_line = Line( critical_line = Line(
0.5*RIGHT+SPACE_Y_RADIUS*DOWN, 0.5*RIGHT+FRAME_Y_RADIUS*DOWN,
0.5*RIGHT+SPACE_Y_RADIUS*UP, 0.5*RIGHT+FRAME_Y_RADIUS*UP,
color = YELLOW color = YELLOW
) )
@ -3004,15 +3004,15 @@ class HighlightCriticalLineAgain(DiscussZeros):
self.add(title) self.add(title)
strip = Rectangle( strip = Rectangle(
height = 2*SPACE_Y_RADIUS, height = FRAME_HEIGHT,
width = 1 width = 1
) )
strip.next_to(ORIGIN, RIGHT, buff = 0) strip.next_to(ORIGIN, RIGHT, buff = 0)
strip.set_stroke(width = 0) strip.set_stroke(width = 0)
strip.set_fill(YELLOW, opacity = 0.3) strip.set_fill(YELLOW, opacity = 0.3)
line = Line( line = Line(
0.5*RIGHT+SPACE_Y_RADIUS*UP, 0.5*RIGHT+FRAME_Y_RADIUS*UP,
0.5*RIGHT+SPACE_Y_RADIUS*DOWN, 0.5*RIGHT+FRAME_Y_RADIUS*DOWN,
color = YELLOW color = YELLOW
) )
randy = Randolph().to_corner(DOWN+LEFT) randy = Randolph().to_corner(DOWN+LEFT)
@ -3296,18 +3296,18 @@ class Thumbnail(ZetaTransformationScene):
self.plane.set_stroke(width = 4) self.plane.set_stroke(width = 4)
div_sum = TexMobject("-\\frac{1}{12} = ", "1+2+3+4+\\cdots") div_sum = TexMobject("-\\frac{1}{12} = ", "1+2+3+4+\\cdots")
div_sum.scale_to_fit_width(2*SPACE_X_RADIUS-1) div_sum.scale_to_fit_width(FRAME_WIDTH-1)
div_sum.to_edge(DOWN) div_sum.to_edge(DOWN)
div_sum.highlight(YELLOW) div_sum.highlight(YELLOW)
for mob in div_sum.submobjects: for mob in div_sum.submobjects:
mob.add_to_back(BackgroundRectangle(mob)) mob.add_to_back(BackgroundRectangle(mob))
zeta = TexMobject("\\zeta(s)") zeta = TexMobject("\\zeta(s)")
zeta.scale_to_fit_height(SPACE_Y_RADIUS-1) zeta.scale_to_fit_height(FRAME_Y_RADIUS-1)
zeta.to_corner(UP+LEFT) zeta.to_corner(UP+LEFT)
million = TexMobject("\\$1{,}000{,}000") million = TexMobject("\\$1{,}000{,}000")
million.scale_to_fit_width(SPACE_X_RADIUS+1) million.scale_to_fit_width(FRAME_X_RADIUS+1)
million.to_edge(UP+RIGHT) million.to_edge(UP+RIGHT)
million.highlight(GREEN_B) million.highlight(GREEN_B)
million.add_background_rectangle() million.add_background_rectangle()

View file

@ -6,7 +6,7 @@ from topics.geometry import ScreenRectangle
class MovingCameraScene(Scene): class MovingCameraScene(Scene):
def setup(self): def setup(self):
self.camera_frame = ScreenRectangle(height = 2*SPACE_Y_RADIUS) self.camera_frame = ScreenRectangle(height = FRAME_HEIGHT)
self.camera_frame.set_stroke(width = 0) self.camera_frame.set_stroke(width = 0)
self.camera = MovingCamera( self.camera = MovingCamera(
self.camera_frame, **self.camera_config self.camera_frame, **self.camera_config

View file

@ -704,7 +704,7 @@ class TeacherStudentsScene(PiCreatureScene):
run_time = 2 run_time = 2
) )
def zoom_in_on_thought_bubble(self, bubble = None, radius = SPACE_Y_RADIUS+SPACE_X_RADIUS): def zoom_in_on_thought_bubble(self, bubble = None, radius = FRAME_Y_RADIUS+FRAME_X_RADIUS):
if bubble is None: if bubble is None:
for pi in self.get_pi_creatures(): for pi in self.get_pi_creatures():
if hasattr(pi, "bubble") and isinstance(pi.bubble, ThoughtBubble): if hasattr(pi, "bubble") and isinstance(pi.bubble, ThoughtBubble):

View file

@ -6,7 +6,7 @@ from mobject.tex_mobject import TexMobject
from scene import Scene from scene import Scene
DEFAULT_COUNT_NUM_OFFSET = (SPACE_X_RADIUS - 1, SPACE_Y_RADIUS - 1, 0) DEFAULT_COUNT_NUM_OFFSET = (FRAME_X_RADIUS - 1, FRAME_Y_RADIUS - 1, 0)
DEFAULT_COUNT_RUN_TIME = 5.0 DEFAULT_COUNT_RUN_TIME = 5.0
class CountingScene(Scene): class CountingScene(Scene):
@ -87,8 +87,8 @@ class CountingScene(Scene):
class PascalsTriangle(VMobject): class PascalsTriangle(VMobject):
CONFIG = { CONFIG = {
"nrows" : 7, "nrows" : 7,
"height" : 2*SPACE_Y_RADIUS - 1, "height" : FRAME_HEIGHT - 1,
"width" : 1.5*SPACE_X_RADIUS, "width" : 1.5*FRAME_X_RADIUS,
"portion_to_fill" : 0.7 "portion_to_fill" : 0.7
} }
def generate_points(self): def generate_points(self):

View file

@ -35,7 +35,7 @@ class OpeningQuote(Scene):
self.play(Write(self.author, run_time = 3)) self.play(Write(self.author, run_time = 3))
self.wait() self.wait()
def get_quote(self, max_width = 2*SPACE_X_RADIUS-1): def get_quote(self, max_width = FRAME_WIDTH-1):
text_mobject_kwargs = { text_mobject_kwargs = {
"alignment" : "", "alignment" : "",
"arg_separator" : self.quote_arg_separator, "arg_separator" : self.quote_arg_separator,
@ -148,17 +148,17 @@ class PatreonEndScreen(PatreonThanks):
def scroll_through_patrons(self): def scroll_through_patrons(self):
logo_box = Square(side_length = 2.5) logo_box = Square(side_length = 2.5)
logo_box.to_corner(DOWN+LEFT, buff = MED_LARGE_BUFF) logo_box.to_corner(DOWN+LEFT, buff = MED_LARGE_BUFF)
total_width = SPACE_X_RADIUS - logo_box.get_right()[0] total_width = FRAME_X_RADIUS - logo_box.get_right()[0]
black_rect = Rectangle( black_rect = Rectangle(
fill_color = BLACK, fill_color = BLACK,
fill_opacity = 1, fill_opacity = 1,
stroke_width = 0, stroke_width = 0,
width = 2*SPACE_X_RADIUS, width = FRAME_WIDTH,
height = 1.1*SPACE_Y_RADIUS height = 1.1*FRAME_Y_RADIUS
) )
black_rect.to_edge(UP, buff = 0) black_rect.to_edge(UP, buff = 0)
line = DashedLine(SPACE_X_RADIUS*LEFT, SPACE_X_RADIUS*RIGHT) line = DashedLine(FRAME_X_RADIUS*LEFT, FRAME_X_RADIUS*RIGHT)
line.move_to(black_rect, DOWN) line.move_to(black_rect, DOWN)
line.shift(SMALL_BUFF*SMALL_BUFF*DOWN) line.shift(SMALL_BUFF*SMALL_BUFF*DOWN)
self.add(line) self.add(line)
@ -183,7 +183,7 @@ class PatreonEndScreen(PatreonThanks):
columns.to_edge(RIGHT) columns.to_edge(RIGHT)
self.play( self.play(
columns.next_to, SPACE_Y_RADIUS*DOWN, UP, LARGE_BUFF, columns.next_to, FRAME_Y_RADIUS*DOWN, UP, LARGE_BUFF,
columns.to_edge, RIGHT, columns.to_edge, RIGHT,
Animation(black_rect), Animation(black_rect),
rate_func = None, rate_func = None,

View file

@ -231,11 +231,11 @@ class ComplexPlane(NumberPlane):
"color" : self.color, "color" : self.color,
"density" : self.density, "density" : self.density,
} }
for radius in np.arange(circle_freq, SPACE_X_RADIUS, circle_freq): for radius in np.arange(circle_freq, FRAME_X_RADIUS, circle_freq):
self.add(Circle(radius = radius, **config)) self.add(Circle(radius = radius, **config))
for angle in np.arange(0, 2*np.pi, angle_freq): for angle in np.arange(0, 2*np.pi, angle_freq):
end_point = np.cos(angle)*RIGHT + np.sin(angle)*UP end_point = np.cos(angle)*RIGHT + np.sin(angle)*UP
end_point *= SPACE_X_RADIUS end_point *= FRAME_X_RADIUS
self.add(Line(ORIGIN, end_point, **config)) self.add(Line(ORIGIN, end_point, **config))
return self return self

View file

@ -14,7 +14,7 @@ from scene import Scene
class CountingScene(Scene): class CountingScene(Scene):
CONFIG = { CONFIG = {
"digit_place_colors" : [YELLOW, MAROON_B, RED, GREEN, BLUE, PURPLE_D], "digit_place_colors" : [YELLOW, MAROON_B, RED, GREEN, BLUE, PURPLE_D],
"counting_dot_starting_position" : (SPACE_X_RADIUS-1)*RIGHT + (SPACE_Y_RADIUS-1)*UP, "counting_dot_starting_position" : (FRAME_X_RADIUS-1)*RIGHT + (FRAME_Y_RADIUS-1)*UP,
"count_dot_starting_radius" : 0.5, "count_dot_starting_radius" : 0.5,
"dot_configuration_height" : 2, "dot_configuration_height" : 2,
"ones_configuration_location" : UP+2*RIGHT, "ones_configuration_location" : UP+2*RIGHT,

View file

@ -27,8 +27,8 @@ class ParametricFunction(VMobject):
class FunctionGraph(ParametricFunction): class FunctionGraph(ParametricFunction):
CONFIG = { CONFIG = {
"color" : YELLOW, "color" : YELLOW,
"x_min" : -SPACE_X_RADIUS, "x_min" : -FRAME_X_RADIUS,
"x_max" : SPACE_X_RADIUS, "x_max" : FRAME_X_RADIUS,
} }
def __init__(self, function, **kwargs): def __init__(self, function, **kwargs):
digest_config(self, kwargs) digest_config(self, kwargs)

View file

@ -721,7 +721,7 @@ class ScreenRectangle(Rectangle):
class FullScreenRectangle(ScreenRectangle): class FullScreenRectangle(ScreenRectangle):
CONFIG = { CONFIG = {
"height" : 2*SPACE_Y_RADIUS, "height" : FRAME_HEIGHT,
} }
class FullScreenFadeRectangle(FullScreenRectangle): class FullScreenFadeRectangle(FullScreenRectangle):

View file

@ -188,7 +188,7 @@ class GraphScene(Scene):
#Search from right to left #Search from right to left
for x in np.linspace(self.x_max, self.x_min, 100): for x in np.linspace(self.x_max, self.x_min, 100):
point = self.input_to_graph_point(x, graph) point = self.input_to_graph_point(x, graph)
if point[1] < SPACE_Y_RADIUS: if point[1] < FRAME_Y_RADIUS:
break break
x_val = x x_val = x
label.next_to( label.next_to(

View file

@ -308,7 +308,7 @@ class GraphScene(Scene):
]) ])
def generate_treeified_spanning_tree(self): def generate_treeified_spanning_tree(self):
bottom = -SPACE_Y_RADIUS + 1 bottom = -FRAME_Y_RADIUS + 1
x_sep = 1 x_sep = 1
y_sep = 2 y_sep = 2
if not hasattr(self, "spanning_tree"): if not hasattr(self, "spanning_tree"):
@ -380,7 +380,7 @@ class GraphScene(Scene):
Dot(point).highlight("green") Dot(point).highlight("green")
for point in self.dual_points for point in self.dual_points
] ]
self.dual_vertices[-1] = Circle().scale(SPACE_X_RADIUS + SPACE_Y_RADIUS) self.dual_vertices[-1] = Circle().scale(FRAME_X_RADIUS + FRAME_Y_RADIUS)
self.dual_points[-1] = point_at_infinity self.dual_points[-1] = point_at_infinity
self.dual_edges = [] self.dual_edges = []
@ -402,7 +402,7 @@ class GraphScene(Scene):
self.points[pair[0]], self.points[pair[0]],
self.points[pair[1]] self.points[pair[1]]
]) - new_point ]) - new_point
new_point += SPACE_X_RADIUS*vect/np.linalg.norm(vect) new_point += FRAME_X_RADIUS*vect/np.linalg.norm(vect)
dual_point_pair[i] = new_point dual_point_pair[i] = new_point
self.dual_edges.append( self.dual_edges.append(
Line(*dual_point_pair).highlight() Line(*dual_point_pair).highlight()

View file

@ -199,7 +199,7 @@ class NumericalMatrixMultiplication(Scene):
equals = TexMobject("=") equals = TexMobject("=")
everything = VMobject(left, right, equals, result) everything = VMobject(left, right, equals, result)
everything.arrange_submobjects() everything.arrange_submobjects()
everything.scale_to_fit_width(2*SPACE_X_RADIUS-1) everything.scale_to_fit_width(FRAME_WIDTH-1)
self.add(everything) self.add(everything)

View file

@ -10,8 +10,8 @@ from scene import Scene
class NumberLine(VMobject): class NumberLine(VMobject):
CONFIG = { CONFIG = {
"color" : BLUE, "color" : BLUE,
"x_min" : -SPACE_X_RADIUS, "x_min" : -FRAME_X_RADIUS,
"x_max" : SPACE_X_RADIUS, "x_max" : FRAME_X_RADIUS,
"unit_size" : 1, "unit_size" : 1,
"tick_size" : 0.1, "tick_size" : 0.1,
"tick_frequency" : 1, "tick_frequency" : 1,
@ -160,10 +160,10 @@ class Axes(VGroup):
"x_axis_config" : {}, "x_axis_config" : {},
"y_axis_config" : {}, "y_axis_config" : {},
"z_axis_config" : {}, "z_axis_config" : {},
"x_min" : -SPACE_X_RADIUS, "x_min" : -FRAME_X_RADIUS,
"x_max" : SPACE_X_RADIUS, "x_max" : FRAME_X_RADIUS,
"y_min" : -SPACE_Y_RADIUS, "y_min" : -FRAME_Y_RADIUS,
"y_max" : SPACE_Y_RADIUS, "y_max" : FRAME_Y_RADIUS,
"z_min" : -3.5, "z_min" : -3.5,
"z_max" : 3.5, "z_max" : 3.5,
"z_normal" : DOWN, "z_normal" : DOWN,
@ -276,10 +276,10 @@ class NumberPlane(VMobject):
} }
def generate_points(self): def generate_points(self):
if self.x_radius is None: if self.x_radius is None:
center_to_edge = (SPACE_X_RADIUS + abs(self.center_point[0])) center_to_edge = (FRAME_X_RADIUS + abs(self.center_point[0]))
self.x_radius = center_to_edge / self.x_unit_size self.x_radius = center_to_edge / self.x_unit_size
if self.y_radius is None: if self.y_radius is None:
center_to_edge = (SPACE_Y_RADIUS + abs(self.center_point[1])) center_to_edge = (FRAME_Y_RADIUS + abs(self.center_point[1]))
self.y_radius = center_to_edge / self.y_unit_size self.y_radius = center_to_edge / self.y_unit_size
self.axes = VMobject() self.axes = VMobject()
self.main_lines = VMobject() self.main_lines = VMobject()

View file

@ -267,7 +267,7 @@ class PatreonLogo(SVGMobject):
class VideoIcon(SVGMobject): class VideoIcon(SVGMobject):
CONFIG = { CONFIG = {
"file_name" : "video_icon", "file_name" : "video_icon",
"width" : 2*SPACE_X_RADIUS/12., "width" : FRAME_WIDTH/12.,
} }
def __init__(self, **kwargs): def __init__(self, **kwargs):
SVGMobject.__init__(self, **kwargs) SVGMobject.__init__(self, **kwargs)
@ -286,7 +286,7 @@ class VideoSeries(VGroup):
videos = [VideoIcon() for x in range(self.num_videos)] videos = [VideoIcon() for x in range(self.num_videos)]
VGroup.__init__(self, *videos, **kwargs) VGroup.__init__(self, *videos, **kwargs)
self.arrange_submobjects() self.arrange_submobjects()
self.scale_to_fit_width(2*SPACE_X_RADIUS-MED_LARGE_BUFF) self.scale_to_fit_width(FRAME_WIDTH-MED_LARGE_BUFF)
self.gradient_highlight(*self.gradient_colors) self.gradient_highlight(*self.gradient_colors)
class Headphones(SVGMobject): class Headphones(SVGMobject):

View file

@ -218,8 +218,8 @@ class VectorScene(Scene):
vector = vector.get_end() - vector.get_start() vector = vector.get_end() - vector.get_start()
elif len(vector) == 2: elif len(vector) == 2:
vector = np.append(np.array(vector), 0.0) vector = np.append(np.array(vector), 0.0)
x_max = int(SPACE_X_RADIUS + abs(vector[0])) x_max = int(FRAME_X_RADIUS + abs(vector[0]))
y_max = int(SPACE_Y_RADIUS + abs(vector[1])) y_max = int(FRAME_Y_RADIUS + abs(vector[1]))
dots = VMobject(*[ dots = VMobject(*[
Dot(x*RIGHT + y*UP) Dot(x*RIGHT + y*UP)
for x in range(-x_max, x_max) for x in range(-x_max, x_max)
@ -242,8 +242,8 @@ class LinearTransformationScene(VectorScene):
"include_background_plane" : True, "include_background_plane" : True,
"include_foreground_plane" : True, "include_foreground_plane" : True,
"foreground_plane_kwargs" : { "foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS, "x_radius" : FRAME_WIDTH,
"y_radius" : 2*SPACE_Y_RADIUS, "y_radius" : FRAME_HEIGHT,
"secondary_line_ratio" : 0 "secondary_line_ratio" : 0
}, },
"background_plane_kwargs" : { "background_plane_kwargs" : {