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)
for x in range(40)
]).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)
randy = all_creatures[0][0]
all_creatures[0].remove(randy)
@ -444,7 +444,7 @@ class RephraseQuestion(Scene):
""",
]))
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.highlight(GREEN)
@ -872,8 +872,8 @@ class HowMuchCanYouChangeThisPrior(ShowRestrictedSpace, PiCreatureScene):
special_group = subgroups[-5]
special_group.add(self.sick_one)
subgroups.generate_target()
width_factor = 2*SPACE_X_RADIUS/subgroups.get_width()
height_factor = 2*SPACE_Y_RADIUS/subgroups.get_height()
width_factor = FRAME_WIDTH/subgroups.get_width()
height_factor = FRAME_HEIGHT/subgroups.get_height()
subgroups.target.stretch_in_place(width_factor, 0)
subgroups.target.stretch_in_place(height_factor, 1)
for subgroup in subgroups.target:
@ -1369,14 +1369,14 @@ class IntroduceTelepathyExample(StatisticsVsEmpathy):
class CompareNumbersInBothExamples(Scene):
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)
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)
titles = VGroup()
for word, vect in ("Disease", LEFT), ("Telepathy", RIGHT):
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)
titles.add(title)
priors = VGroup(*[
@ -1401,7 +1401,7 @@ class CompareNumbersInBothExamples(Scene):
mob.highlight_by_tex("+", GREEN)
mob.highlight_by_tex("Correct", GREEN)
mob.scale(0.8)
mob.shift(vect*SPACE_X_RADIUS/2)
mob.shift(vect*FRAME_X_RADIUS/2)
self.play(
LaggedStart(FadeIn, titles, lag_ratio = 0.7),

View file

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

View file

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

View file

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

View file

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

View file

@ -17,20 +17,13 @@ class Camera(object):
CONFIG = {
"background_image" : None,
"pixel_shape" : (DEFAULT_HEIGHT, DEFAULT_WIDTH),
# Note 1: space_shape will be resized to match pixel_shape
#
# 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),
# Note: space_shape will be resized to match pixel_shape
"space_shape" : (FRAME_Y_RADIUS, FRAME_X_RADIUS),
"space_center" : ORIGIN,
"background_color" : BLACK,
#Points in vectorized mobjects with norm greater
#than this value will be rescaled.
"max_allowable_norm" : 2*SPACE_X_RADIUS,
"max_allowable_norm" : FRAME_WIDTH,
"image_mode" : "RGBA",
"n_rgb_coords" : 4,
"background_alpha" : 0, #Out of rgb_max_val
@ -63,12 +56,12 @@ class Camera(object):
remains fixed while the other changes accordingly.
"""
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:
space_y_radius = aspect_ratio*space_y_radius
space_y_radius = aspect_ratio*space_x_radius
else:
space_y_radius = space_y_radius/aspect_ratio
self.space_shape = (space_y_radius, space_y_radius)
space_x_radius = space_y_radius/aspect_ratio
self.space_shape = (space_x_radius, space_y_radius)
def init_background(self):
if self.background_image is not None:

View file

@ -26,10 +26,11 @@ DEFAULT_POINT_DENSITY_1D = 250
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
MED_SMALL_BUFF = 0.25
@ -57,10 +58,10 @@ X_AXIS = np.array(( 1., 0., 0.))
Y_AXIS = np.array(( 0., 1., 0.))
Z_AXIS = np.array(( 0., 0., 1.))
TOP = SPACE_Y_RADIUS*UP
BOTTOM = SPACE_Y_RADIUS*DOWN
LEFT_SIDE = SPACE_X_RADIUS*LEFT
RIGHT_SIDE = SPACE_X_RADIUS*RIGHT
TOP = FRAME_Y_RADIUS*UP
BOTTOM = FRAME_Y_RADIUS*DOWN
LEFT_SIDE = FRAME_X_RADIUS*LEFT
RIGHT_SIDE = FRAME_X_RADIUS*RIGHT
TAU = 2*np.pi
DEGREES = TAU/360

View file

@ -277,7 +277,7 @@ class Mobject(Container):
Direction just needs to be a vector pointing towards side or
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)
shift_val = target_point - point_to_align - buff * np.array(direction)
shift_val = shift_val * abs(np.sign(direction))
@ -345,7 +345,7 @@ class Mobject(Container):
return self
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:
dim = np.argmax(np.abs(vect))
buff = kwargs.get("buff", DEFAULT_MOBJECT_TO_EDGE_BUFFER)
@ -356,13 +356,13 @@ class Mobject(Container):
return self
def is_off_screen(self):
if self.get_left()[0] > SPACE_X_RADIUS:
if self.get_left()[0] > FRAME_X_RADIUS:
return True
if self.get_right()[0] < -SPACE_X_RADIUS:
if self.get_right()[0] < -FRAME_X_RADIUS:
return True
if self.get_bottom()[1] > SPACE_Y_RADIUS:
if self.get_bottom()[1] > FRAME_Y_RADIUS:
return True
if self.get_top()[1] < -SPACE_Y_RADIUS:
if self.get_top()[1] < -FRAME_Y_RADIUS:
return True
return False

View file

@ -169,7 +169,7 @@ class BreakUp2To256(PiCreatureScene):
])
target.arrange_submobjects(RIGHT, buff = SMALL_BUFF)
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(*[
[t[0], t[2]] for t in target
]))
@ -240,7 +240,7 @@ class MainBreakdown(Scene):
top_line.add(mob)
four_billions.add(mob[1])
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)
four_billions.highlight(YELLOW)
self.add(top_line)
@ -596,8 +596,8 @@ class MainBreakdown(Scene):
group.add(dots)
group.add(*[group[0].copy() for x in range(2)])
group.arrange_submobjects(RIGHT, buff = SMALL_BUFF)
group.scale_to_fit_height(SPACE_Y_RADIUS)
max_width = 1.25*SPACE_X_RADIUS
group.scale_to_fit_height(FRAME_Y_RADIUS)
max_width = 1.25*FRAME_X_RADIUS
if group.get_width() > max_width:
group.scale_to_fit_width(max_width)
group.to_corner(DOWN+RIGHT)
@ -722,7 +722,7 @@ class StateOfBitcoin(TeacherStudentsScene):
height = 1,
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.highlight(BLUE)
gpu_name.next_to(gpu, UP)
@ -843,7 +843,7 @@ class QAndA(PiCreatureScene):
]).arrange_submobjects(DOWN, buff = SMALL_BUFF)
for y in range(cols)
]).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 = VGroup(*it.chain(*dots))
top = dots.get_top()
@ -900,12 +900,12 @@ class Thumbnail(Scene):
if i%(n_chars/4) == 0:
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)
secure = TextMobject("Secure?")
secure.scale(4)
secure.shift(SPACE_Y_RADIUS*DOWN/2)
secure.shift(FRAME_Y_RADIUS*DOWN/2)
secure.highlight(RED)
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_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 = Group(x_guess_label_caption, x_guess_label_num)
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))
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
# This function is specified by a list of (x, y, z) tuples,
@ -1558,8 +1558,8 @@ class VectorField(Scene):
num_plane = NumberPlane()
self.add(num_plane)
x_min, y_min = num_plane.point_to_coords(SPACE_X_RADIUS * LEFT + SPACE_Y_RADIUS * UP)
x_max, y_max = num_plane.point_to_coords(SPACE_X_RADIUS * RIGHT + SPACE_Y_RADIUS * DOWN)
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(FRAME_X_RADIUS * RIGHT + FRAME_Y_RADIUS * DOWN)
x_points = np.linspace(x_min, x_max, self.granularity)
y_points = np.linspace(y_min, y_max, self.granularity)
@ -1791,17 +1791,17 @@ class Initial2dFuncSceneMorphing(Initial2dFuncSceneBase):
}
def setup(self):
split_line = DashedLine(SPACE_Y_RADIUS * UP, SPACE_Y_RADIUS * DOWN)
self.num_plane = NumberPlane(x_radius = SPACE_X_RADIUS/2)
split_line = DashedLine(FRAME_Y_RADIUS * UP, FRAME_Y_RADIUS * DOWN)
self.num_plane = NumberPlane(x_radius = FRAME_X_RADIUS/2)
self.num_plane.to_edge(LEFT, buff = 0)
self.num_plane.prepare_for_nonlinear_transform()
self.add(self.num_plane, split_line)
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):
object.shift(SPACE_X_RADIUS/2 * RIGHT)
object.shift(FRAME_X_RADIUS/2 * RIGHT)
def obj_draw(self, input_object):
output_object = input_object.copy()
@ -1820,10 +1820,10 @@ class Initial2dFuncSceneMorphing(Initial2dFuncSceneBase):
right_plane.center()
right_plane.prepare_for_nonlinear_transform()
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
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)
self.play(
ReplacementTransform(self.num_plane.copy(), right_plane),
@ -1847,7 +1847,7 @@ class DemonstrateColorMapping(ColorMappedObjectsScene):
# self.add_foreground_mobject(output_plane_label)
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)
dim_background = bright_background.copy()
dim_background.fill_opacity = 0.3
@ -2711,10 +2711,10 @@ class NotFoundScene(Scene):
self.wait()
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},
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):
CONFIG = {

View file

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

View file

@ -2078,7 +2078,7 @@ class IPTScene1(PiCreatureScene):
# use the following for the zoomed inset
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
SCREEN_SCALE = 0.01
SCREEN_THICKNESS = 0.02
@ -3873,8 +3873,8 @@ class PondScene(ThreeDScene):
covering_rectangle = Rectangle(
width = SPACE_X_RADIUS * scale,
height = 2 * SPACE_Y_RADIUS * scale,
width = FRAME_X_RADIUS * scale,
height = 2 * FRAME_Y_RADIUS * scale,
stroke_width = 0,
fill_color = BLACK,
fill_opacity = 1,

View file

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

View file

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

View file

@ -52,7 +52,7 @@ class Jewel(VMobject):
class Necklace(VMobject):
CONFIG = {
"width" : 2*SPACE_X_RADIUS - 1,
"width" : FRAME_WIDTH - 1,
"jewel_buff" : MED_SMALL_BUFF,
"chain_color" : GREY,
"default_colors" : [(4, BLUE), (6, WHITE), (4, GREEN)]
@ -95,7 +95,7 @@ class Necklace(VMobject):
class FromPreviousTopologyVideo(Scene):
def construct(self):
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.to_edge(UP)
rect.next_to(title, DOWN)
@ -604,7 +604,7 @@ class WriteWords(Scene):
def construct(self):
words = TextMobject(self.words)
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)
self.play(Write(words))
self.wait(2)
@ -800,7 +800,7 @@ class WalkEquatorPostTransform(GraphScene):
equator, dots,
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)
self.play(ShowCreation(v_line))
self.wait()
@ -834,7 +834,7 @@ class WalkEquatorPostTransform(GraphScene):
tilted_eq, dots,
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)
self.play(ShowCreation(v_line))
self.wait()
@ -996,7 +996,7 @@ class AntipodalWalkAroundTransverseLoop(ExternallyAnimatedScene):
class MentionGenerality(TeacherStudentsScene, ThreeDScene):
def construct(self):
necklace = Necklace(width = SPACE_X_RADIUS)
necklace = Necklace(width = FRAME_X_RADIUS)
necklace.shift(2*UP)
necklace.to_edge(RIGHT)
arrow = TexMobject("\\Leftrightarrow")
@ -1277,7 +1277,7 @@ class MakeTwoJewelCaseContinuous(IntroduceStolenNecklaceProblem):
"forced_binary_choices" : (0, 1, 0),
"show_matching_after_divvying" : True,
"necklace_center" : ORIGIN,
"necklace_width" : 2*SPACE_X_RADIUS - 3,
"necklace_width" : FRAME_WIDTH - 3,
"random_seed" : 0,
"num_continuous_division_searches" : 4,
}
@ -1510,7 +1510,7 @@ class MakeTwoJewelCaseContinuous(IntroduceStolenNecklaceProblem):
boxes = VGroup()
for group in top_group, bottom_group:
box = Rectangle(
width = 2*SPACE_X_RADIUS-2,
width = FRAME_WIDTH-2,
height = group.get_height()+SMALL_BUFF,
stroke_width = 0,
fill_color = WHITE,
@ -1666,7 +1666,7 @@ class ThinkAboutTheChoices(TeacherStudentsScene):
""")
self.change_student_modes(
*["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)
@ -1908,7 +1908,7 @@ class CompareThisToSphereChoice(TeacherStudentsScene):
""")
self.change_student_modes(
*["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)
@ -1981,7 +1981,7 @@ class ChoicesForSpherePoint(GeneralizeBorsukUlam):
buff = LARGE_BUFF,
aligned_edge = LEFT
)
choices.scale_to_fit_height(SPACE_Y_RADIUS)
choices.scale_to_fit_height(FRAME_Y_RADIUS)
choices.to_edge(LEFT)
choices.shift(DOWN)
@ -2318,7 +2318,7 @@ class ShowFunctionDiagram(TotalLengthOfEachJewelEquals, ReconfigurableScene):
def add_necklace(self):
random.seed(self.random_seed)
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(LEFT, buff = SMALL_BUFF)
self.add(self.necklace)
@ -2337,7 +2337,7 @@ class ShowFunctionDiagram(TotalLengthOfEachJewelEquals, ReconfigurableScene):
VGroup(*plane_class.get_top_level_mobjects())
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)
self.example_coords = plane_classes[0].example_coords[0]
@ -2433,7 +2433,7 @@ class JewelPairPlane(GraphScene):
class WhatThisMappingActuallyLooksLikeWords(Scene):
def construct(self):
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)
self.play(Write(words))

View file

@ -376,14 +376,14 @@ class TransitionAwayFromSlide(PathSlidingScene):
arrow.copy().shift(vect)
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(self.cycloid)
self.slide(randy, self.cycloid)
everything = Mobject(*self.mobjects)
self.play(ApplyMethod(
everything.shift, 4*SPACE_X_RADIUS*LEFT,
everything.shift, 4*FRAME_X_RADIUS*LEFT,
run_time = 2,
rate_func = rush_into
))

View file

@ -77,7 +77,7 @@ class CycloidScene(Scene):
self.circle.add(radial_line)
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)
def draw_cycloid(self, run_time = 3, *anims, **kwargs):
@ -551,7 +551,7 @@ class SlidingObject(CycloidScene, PathSlidingScene):
words1.next_to(arrow, LEFT)
words2.next_to(arrow, RIGHT)
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(LEFT)

View file

@ -74,7 +74,7 @@ class MultilayeredGlass(PhotonScene, ZoomedScene):
def get_continuous_background(self):
glass = FilledRectangle(
height = self.top-self.bottom,
width = 2*SPACE_X_RADIUS,
width = FRAME_WIDTH,
)
glass.sort_points(lambda p : -p[1])
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
)
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):
@ -154,8 +154,8 @@ class MultilayeredGlass(PhotonScene, ZoomedScene):
eq_mob.shift(midpoint)
v_eq = eq_mob.split()
center_paths.append(Line(
midpoint+SPACE_X_RADIUS*LEFT,
midpoint+SPACE_X_RADIUS*RIGHT
midpoint+FRAME_X_RADIUS*LEFT,
midpoint+FRAME_X_RADIUS*RIGHT
))
brace_endpoints = Mobject(
Point(self.top*UP+x*RIGHT),

View file

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

View file

@ -88,7 +88,7 @@ class TimeLine(Scene):
timeline = NumberLine(
numerical_radius = 300,
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,
numbers_with_elongated_ticks = centuries
)

View file

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

View file

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

View file

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

View file

@ -664,7 +664,7 @@ class ContrastTwoGraphs(SimpleVelocityGraph):
dot1, dot2 = dots[21], dots[41]
rect = Rectangle(
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,
fill_color = YELLOW,
fill_opacity = 0.5

View file

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

View file

@ -250,7 +250,7 @@ class Introduction(TeacherStudentsScene):
this_video.save_state()
this_video.set_fill(opacity = 0)
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
@ -386,8 +386,8 @@ class Introduction(TeacherStudentsScene):
arrow = Arrow(invent_calculus, student)
fader = Rectangle(
width = 2*SPACE_X_RADIUS,
height = 2*SPACE_Y_RADIUS,
width = FRAME_WIDTH,
height = FRAME_HEIGHT,
stroke_width = 0,
fill_color = BLACK,
fill_opacity = 0.5,
@ -410,7 +410,7 @@ class Introduction(TeacherStudentsScene):
class PreviewFrame(Scene):
def construct(self):
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))
titles = [
@ -1439,7 +1439,7 @@ class GraphRectangles(CircleScene, GraphScene):
arranged_group.add(last_ring.target)
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)
for mob in tex_mobs:
mob.scale_in_place(0.7)
@ -2064,7 +2064,7 @@ class AreaUnderParabola(GraphScene):
v_lines = VGroup(*[
DashedLine(
2*SPACE_Y_RADIUS*UP, ORIGIN,
FRAME_HEIGHT*UP, ORIGIN,
color = RED
).move_to(self.coords_to_point(x, 0), DOWN)
for x in 0, self.default_right_x
@ -2616,7 +2616,7 @@ class AlternateAreaUnderCurve(PlayingTowardsDADX):
class NextVideoWrapper(Scene):
def construct(self):
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 = [
TextMobject("Chapter %d:"%d, s)
for d, s in [

View file

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

View file

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

View file

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

View file

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

View file

@ -1258,7 +1258,7 @@ class Chapter4Wrapper(Scene):
title = TextMobject("Chapter 4 chain rule intuition")
title.to_edge(UP)
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)
self.add(title)
@ -1622,7 +1622,7 @@ class ManyExponentialForms(TeacherStudentsScene):
]
group = VGroup(lhs, *rhs_list)
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)
for part in group:
part.highlight_by_tex("t", YELLOW)

View file

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

View file

@ -1155,7 +1155,7 @@ class GraphLimitExpression(GraphScene):
delta,
limit_x = 0,
dashed_line_stroke_width = 3,
dashed_line_length = 2*SPACE_Y_RADIUS,
dashed_line_length = FRAME_HEIGHT,
input_range_color = YELLOW,
input_range_stroke_width = 6,
):
@ -1239,11 +1239,11 @@ class LimitCounterExample(GraphLimitExpression):
"x_min" : -8,
"x_max" : 8,
"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_max" : 4,
"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_color" : BLUE,
"hole_radius" : 0.075,
@ -1614,7 +1614,7 @@ class EpsilonDeltaExample(GraphLimitExpression, ZoomedScene):
def get_epsilon_group(self, epsilon, limit_value = 12):
result = VGroup()
line_length = 2*SPACE_Y_RADIUS
line_length = FRAME_HEIGHT
lines = [
Line(
ORIGIN, line_length*RIGHT,
@ -1838,12 +1838,12 @@ class TheoryHeavy(TeacherStudentsScene):
class LHopitalExample(LimitCounterExample, PiCreatureScene, ZoomedScene, ReconfigurableScene):
CONFIG = {
"graph_origin" : ORIGIN,
"x_axis_width" : 2*SPACE_X_RADIUS,
"x_axis_width" : FRAME_WIDTH,
"x_min" : -5,
"x_max" : 5,
"x_labeled_nums" : range(-6, 8, 2),
"x_axis_label" : "$x$",
"y_axis_height" : 2*SPACE_Y_RADIUS,
"y_axis_height" : FRAME_HEIGHT,
"y_min" : -3.1,
"y_max" : 3.1,
"y_bottom_tick" : -4,
@ -2028,7 +2028,7 @@ class LHopitalExample(LimitCounterExample, PiCreatureScene, ZoomedScene, Reconfi
rhs = TexMobject("= %.4f\\dots"%result)
rhs.next_to(label, RIGHT)
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.to_edge(RIGHT)
@ -2115,8 +2115,8 @@ class LHopitalExample(LimitCounterExample, PiCreatureScene, ZoomedScene, Reconfi
)
fader = VGroup(*[
Rectangle(
width = 2*SPACE_X_RADIUS,
height = 2*SPACE_Y_RADIUS,
width = FRAME_WIDTH,
height = FRAME_HEIGHT,
stroke_width = 0,
fill_opacity = 0.75,
fill_color = BLACK,
@ -2721,7 +2721,7 @@ class GeneralLHoptial(LHopitalExample):
"``", "L'Hôpital's", " rule", "''",
arg_separator = ""
)
name.shift(SPACE_X_RADIUS*RIGHT/2)
name.shift(FRAME_X_RADIUS*RIGHT/2)
name.to_edge(UP)
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("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
class ThisVideo(TeacherStudentsScene):
@ -372,7 +372,7 @@ class Chapter2Wrapper(Scene):
title = TextMobject(self.title)
title.to_edge(UP)
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)
self.add(title)
@ -1399,7 +1399,7 @@ class CarJourneyApproximation(Scene):
def construct(self):
points = [5*LEFT + v for v in UP, 2*DOWN]
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 = [
TextMobject("Real motion (smooth)").shift(3*UP),
TextMobject(self.bottom_words).shift(0.5*DOWN),

View file

@ -607,7 +607,7 @@ class FiniteSample(TryToAddInfinitelyManyPoints):
buff = SMALL_BUFF,
aligned_edge = DOWN
)
# numerator.scale_to_fit_width(SPACE_X_RADIUS)
# numerator.scale_to_fit_width(FRAME_X_RADIUS)
numerator.scale(0.5)
numerator.move_to(self.coords_to_point(3*np.pi/2, 0))
numerator.to_edge(UP)
@ -992,7 +992,7 @@ class IntegralOfSine(FiniteSample):
class Approx31(Scene):
def construct(self):
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)
self.play(Write(tex))
self.wait(3)
@ -1377,8 +1377,8 @@ class Antiderivative(AverageOfSineStart):
fill_color = BLACK,
fill_opacity = 0.75,
)
big_rect.scale_to_fit_width(2*SPACE_X_RADIUS)
big_rect.scale_to_fit_height(2*SPACE_Y_RADIUS)
big_rect.scale_to_fit_width(FRAME_WIDTH)
big_rect.scale_to_fit_height(FRAME_HEIGHT)
morty = Mortimer()
morty.to_corner(DOWN+RIGHT)
@ -1966,7 +1966,7 @@ class LastVideoWrapper(Scene):
title.to_edge(UP)
rect = Rectangle(height = 9, width = 16)
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)
self.play(Write(title), ShowCreation(rect))
@ -2146,8 +2146,8 @@ class Thumbnail(GraphScene):
fill_color = BLUE_E,
fill_opacity = 0.5,
)
triangle.stretch_to_fit_width(2*SPACE_X_RADIUS)
triangle.stretch_to_fit_height(2*SPACE_Y_RADIUS)
triangle.stretch_to_fit_width(FRAME_WIDTH)
triangle.stretch_to_fit_height(FRAME_HEIGHT)
triangle.to_corner(UP+LEFT, buff = 0)
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 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.shift(i*DOWN/2.0)

View file

@ -245,7 +245,7 @@ class Introduction(TeacherStudentsScene):
this_video.save_state()
this_video.set_fill(opacity = 0)
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
words = TextMobject(
@ -276,7 +276,7 @@ class Introduction(TeacherStudentsScene):
]
)
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)
return (x, y - 0.3*np.sin(np.pi*beta), z)
self.play(
@ -372,7 +372,7 @@ class Introduction(TeacherStudentsScene):
this_video = self.this_video
self.remove(this_video)
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.set_fill(opacity = 0)
@ -633,8 +633,8 @@ class IntroduceTinyChangeInArea(CircleScene):
self.wait()
big_rect = Rectangle(
width = 2*SPACE_X_RADIUS,
height = 2*SPACE_Y_RADIUS,
width = FRAME_WIDTH,
height = FRAME_HEIGHT,
fill_color = BLACK,
fill_opacity = 0.85,
stroke_width = 0,
@ -1558,7 +1558,7 @@ class DerivativeAsTangentLine(ZoomedScene):
def show_tangent_lines(self):
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.rotate(self.angle_of_tangent(R))
line.move_to(self.graph_point(R))
@ -2489,7 +2489,7 @@ class CalculusInANutshell(CircleScene):
first.set_fill(YELLOW)
first.save_state()
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)
everything = VGroup(*self.get_mobjects())
everything.generate_target()

View file

@ -59,7 +59,7 @@ class OpeningQuote(Scene):
""",
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)
for mob in words.submobjects[48:49+13]:
mob.highlight(GREEN)
@ -76,7 +76,7 @@ class VideoIcon(SVGMobject):
def __init__(self, **kwargs):
SVGMobject.__init__(self, "video_icon", **kwargs)
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_fill(color = WHITE, opacity = 1)
@ -271,11 +271,11 @@ class NumericVsGeometric(Scene):
geometric = TextMobject("Geometric intuition")
for mob in numeric, geometric:
mob.to_corner(UP+LEFT)
geometric.shift(SPACE_X_RADIUS*RIGHT)
hline = Line(SPACE_X_RADIUS*LEFT, SPACE_X_RADIUS*RIGHT)
geometric.shift(FRAME_X_RADIUS*RIGHT)
hline = Line(FRAME_X_RADIUS*LEFT, FRAME_X_RADIUS*RIGHT)
hline.next_to(numeric, DOWN)
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:
mob.highlight(GREEN)
@ -294,7 +294,7 @@ class NumericVsGeometric(Scene):
"\\\\ &=",
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)
self.play(
@ -309,15 +309,15 @@ class NumericVsGeometric(Scene):
digest_locals(self)
def clear_way_for_geometric(self):
new_line = Line(SPACE_Y_RADIUS*LEFT, SPACE_Y_RADIUS*RIGHT)
new_line.shift((SPACE_Y_RADIUS+1)*DOWN)
new_line = Line(FRAME_Y_RADIUS*LEFT, FRAME_Y_RADIUS*RIGHT)
new_line.shift((FRAME_Y_RADIUS+1)*DOWN)
self.play(
Transform(self.vline, 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(
self.matrix_vector_product.shift,
(2*SPACE_Y_RADIUS+1)*DOWN
(FRAME_HEIGHT+1)*DOWN
),
ApplyMethod(self.geometric.to_edge, LEFT)
)
@ -671,7 +671,7 @@ class LinearAlgebraIntuitions(Scene):
def construct(self):
title = TextMobject("Preview of core visual intuitions")
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.highlight(BLUE_E)
intuitions = [
@ -832,7 +832,7 @@ class TableOfContents(Scene):
title = TextMobject("Essence of Linear Algebra")
title.highlight(BLUE)
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.to_edge(LEFT, buff = 0)
chapters = VMobject(*map(TextMobject, [
@ -884,7 +884,7 @@ class TableOfContents(Scene):
def series_of_videos(self, chapters):
icon = SVGMobject("video_icon")
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)
icons = [icon.copy() for chapter in chapters.split()]
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):
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)
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,
two_dimensional, title
)
self.play(ApplyMethod(everything.shift, 2*SPACE_X_RADIUS*LEFT))
self.play(ApplyMethod(everything.shift, FRAME_WIDTH*LEFT))
self.remove(everything)
@ -1101,10 +1101,10 @@ class FollowingVideos(UpcomingSeriesOfVidoes):
everything.remove(last_video)
big_last_video = last_video.copy()
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)
self.play(
ApplyMethod(everything.shift, 2*SPACE_X_RADIUS*LEFT),
ApplyMethod(everything.shift, FRAME_WIDTH*LEFT),
Transform(last_video, big_last_video),
run_time = 2
)

View file

@ -42,7 +42,7 @@ class OpeningQuote(Scene):
)
words.highlight_by_tex("mathematics", 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)
author = TextMobject("-Serge Lang")
author.highlight(YELLOW)
@ -127,13 +127,13 @@ class ManyPrerequisites(Scene):
def construct(self):
title = TextMobject("Many prerequisites")
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)
self.add(title)
self.play(ShowCreation(h_line))
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)]
words = [
"Linear transformations",
@ -148,7 +148,7 @@ class ManyPrerequisites(Scene):
Matrix(np.array(rects).reshape((2, 2)))
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)
self.play(Write(rects[0]))
@ -290,7 +290,7 @@ class IHatAsEigenVector(ExampleTranformationScene):
x_axis = self.plane.axes[0]
targets = [
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 = [
Line(v1.get_end(), v2.get_end(), color = YELLOW)
@ -329,7 +329,7 @@ class AllXAxisVectorsAreEigenvectors(ExampleTranformationScene):
def construct(self):
vectors = VGroup(*[
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
])
vectors.gradient_highlight(YELLOW, X_COLOR)
@ -411,14 +411,14 @@ class NameEigenvectorsAndEigenvalues(ExampleTranformationScene):
self.foreground_mobjects.remove(self.matrix)
x_vectors = VGroup(*[
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
])
x_vectors.gradient_highlight(YELLOW, X_COLOR)
self.remove(x_vectors)
sneak_vectors = VGroup(*[
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
])
sneak_vectors.gradient_highlight(MAROON_B, YELLOW)
@ -452,8 +452,8 @@ class NameEigenvectorsAndEigenvalues(ExampleTranformationScene):
non_eigen = Vector([1, 1], color = PINK)
non_eigen_span = Line(
-SPACE_Y_RADIUS*non_eigen.get_end(),
SPACE_Y_RADIUS*non_eigen.get_end(),
-FRAME_Y_RADIUS*non_eigen.get_end(),
FRAME_Y_RADIUS*non_eigen.get_end(),
color = RED
)
non_eigen_words = TextMobject("""
@ -504,8 +504,8 @@ class EigenvalueNegativeOneHalf(LinearTransformationScene):
CONFIG = {
"t_matrix" : [[0.5, -1], [-1, 0.5]],
"foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS,
"y_radius" : 2*SPACE_X_RADIUS,
"x_radius" : FRAME_WIDTH,
"y_radius" : FRAME_WIDTH,
"secondary_line_ratio" : 0
},
"include_background_plane" : False
@ -523,8 +523,8 @@ class EigenvalueNegativeOneHalf(LinearTransformationScene):
words.add_background_rectangle()
words.next_to(vector.get_end(), RIGHT)
span = Line(
-SPACE_Y_RADIUS*vector.get_end(),
SPACE_Y_RADIUS*vector.get_end(),
-FRAME_Y_RADIUS*vector.get_end(),
FRAME_Y_RADIUS*vector.get_end(),
color = MAROON_B
)
@ -1029,8 +1029,8 @@ class TweakLambda(LinearTransformationScene):
"t_matrix" : [[2, 1], [2, 3]],
"include_background_plane" : False,
"foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS,
"y_radius" : 2*SPACE_X_RADIUS,
"x_radius" : FRAME_WIDTH,
"y_radius" : FRAME_WIDTH,
"secondary_line_ratio" : 1
},
}
@ -1155,8 +1155,8 @@ class ShowEigenVectorAfterComputing(LinearTransformationScene):
"v_coords" : [2, -1],
"include_background_plane" : False,
"foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS,
"y_radius" : 2*SPACE_X_RADIUS,
"x_radius" : FRAME_WIDTH,
"y_radius" : FRAME_WIDTH,
"secondary_line_ratio" : 1
},
}
@ -1624,7 +1624,7 @@ class SolveRotationEigenvalues(Rotate90Degrees):
transformation.
""", alignment = "")
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)
self.play(FadeIn(interesting_tidbit))
self.wait()
@ -1634,8 +1634,8 @@ class ShearExample(RevisitExampleTransformation):
"t_matrix" : [[1, 0], [1, 1]],
"include_background_plane" : False,
"foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS,
"y_radius" : 2*SPACE_Y_RADIUS,
"x_radius" : FRAME_WIDTH,
"y_radius" : FRAME_HEIGHT,
"secondary_line_ratio" : 1
},
}
@ -1655,7 +1655,7 @@ class ShearExample(RevisitExampleTransformation):
def point_out_eigenvectors(self):
vectors = VGroup(*[
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
])
vectors.gradient_highlight(YELLOW, X_COLOR)
@ -2115,8 +2115,8 @@ class ChangeToEigenBasis(ExampleTranformationScene):
"show_basis_vectors" : False,
"include_background_plane" : False,
"foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS,
"y_radius" : 2*SPACE_Y_RADIUS,
"x_radius" : FRAME_WIDTH,
"y_radius" : FRAME_HEIGHT,
"secondary_line_ratio" : 0
},
}

View file

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

View file

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

View file

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

View file

@ -31,7 +31,7 @@ class OpeningQuote(Scene):
"can be shortened by 50\\% if one",
"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.split()[1].highlight(GREEN)
words.split()[3].highlight(BLUE)
@ -235,8 +235,8 @@ class RecapOver(TeacherStudentsScene):
class TwoSuccessiveTransformations(LinearTransformationScene):
CONFIG = {
"foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS,
"y_radius" : 2*SPACE_X_RADIUS,
"x_radius" : FRAME_WIDTH,
"y_radius" : FRAME_WIDTH,
"secondary_line_ratio" : 0
},
}
@ -249,8 +249,8 @@ class TwoSuccessiveTransformations(LinearTransformationScene):
class RotationThenShear(LinearTransformationScene):
CONFIG = {
"foreground_plane_kwargs" : {
"x_radius" : SPACE_X_RADIUS,
"y_radius" : 2*SPACE_X_RADIUS,
"x_radius" : FRAME_X_RADIUS,
"y_radius" : FRAME_WIDTH,
"secondary_line_ratio" : 0
},
}
@ -817,8 +817,8 @@ class FirstShearThenRotation(LinearTransformationScene):
"t_matrix1" : [[1, 0], [1, 1]],
"t_matrix2" : [[0, 1], [-1, 0]],
"foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS,
"y_radius" : 2*SPACE_X_RADIUS,
"x_radius" : FRAME_WIDTH,
"y_radius" : FRAME_WIDTH,
"secondary_line_ratio" : 0
},
}
@ -1078,7 +1078,7 @@ class NextVideo(Scene):
title = TextMobject("""
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)
rect = Rectangle(width = 16, height = 9, color = BLUE)
rect.scale_to_fit_height(6)

View file

@ -88,7 +88,7 @@ class OpeningQuote(Scene):
"numbers.",
"''",
], 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.split()[1].highlight(BLUE)
words.split()[3].highlight(GREEN)
@ -131,8 +131,8 @@ class StretchingTransformation(LinearTransformationScene):
class SquishingTransformation(LinearTransformationScene):
CONFIG = {
"foreground_plane_kwargs" : {
"x_radius" : 3*SPACE_X_RADIUS,
"y_radius" : 3*SPACE_X_RADIUS,
"x_radius" : 3*FRAME_X_RADIUS,
"y_radius" : 3*FRAME_X_RADIUS,
"secondary_line_ratio" : 0
},
}
@ -430,8 +430,8 @@ class DeterminantIsOneHalf(NameDeterminant):
CONFIG = {
"t_matrix" : [[0.5, -0.5], [0.5, 0.5]],
"foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS,
"y_radius" : 2*SPACE_X_RADIUS,
"x_radius" : FRAME_WIDTH,
"y_radius" : FRAME_WIDTH,
"secondary_line_ratio" : 0
},
}
@ -451,7 +451,7 @@ class NextFewVideos(Scene):
def construct(self):
icon = SVGMobject("video_icon")
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_fill(WHITE, opacity = 1)
icons = VMobject(*[icon.copy() for x in range(10)])
@ -511,9 +511,9 @@ class NegativeDeterminant(Scene):
class FlipSpaceOver(Scene):
def construct(self):
plane1 = NumberPlane(y_radius = SPACE_X_RADIUS)
plane1 = NumberPlane(y_radius = FRAME_X_RADIUS)
plane2 = NumberPlane(
y_radius = SPACE_X_RADIUS,
y_radius = FRAME_X_RADIUS,
color = RED_D, secondary_color = RED_E
)
axis = UP
@ -1057,7 +1057,7 @@ class FullFormulaExplanation(LinearTransformationScene):
formula.next_to(det_text, RIGHT)
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)
background_rect = BackgroundRectangle(everyone)
self.play(
@ -1150,7 +1150,7 @@ class NextVideo(Scene):
title = TextMobject("""
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)
rect = Rectangle(width = 16, height = 9, color = BLUE)
rect.scale_to_fit_height(6)

View file

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

View file

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

View file

@ -82,7 +82,7 @@ class ListSteps(Scene):
def construct(self):
title = TextMobject("Two part chapter")
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)
randy = Randolph().flip().to_corner(DOWN+RIGHT)
randy.look(UP+LEFT)
@ -445,19 +445,19 @@ class ContrastDotAndCross(Scene):
def add_t_chart(self):
for word, vect, color in ("Dot", LEFT, BLUE_C), ("Cross", RIGHT, YELLOW):
title = TextMobject("%s product"%word)
title.shift(vect*SPACE_X_RADIUS/2)
title.shift(vect*FRAME_X_RADIUS/2)
title.to_edge(UP)
title.highlight(color)
self.add(title)
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS)
l_h_line = Line(LEFT, ORIGIN).scale(SPACE_X_RADIUS)
r_h_line = Line(ORIGIN, RIGHT).scale(SPACE_X_RADIUS)
v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
l_h_line = Line(LEFT, ORIGIN).scale(FRAME_X_RADIUS)
r_h_line = Line(ORIGIN, RIGHT).scale(FRAME_X_RADIUS)
r_h_line.next_to(title, DOWN)
l_h_line.next_to(r_h_line, LEFT, buff = 0)
self.add(v_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]
last_mob = self.l_h_line
dot_products = []
@ -593,7 +593,7 @@ class ContrastDotAndCross(Scene):
self.only_3d_text = brace_text
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.to_edge(RIGHT, buff = 0)
arrays = np.random.randint(0, 9, (2, 2))
@ -653,7 +653,7 @@ class PrereqDeterminant(Scene):
title = TextMobject("""
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)
rect = Rectangle(width = 16, height = 9, color = BLUE)
rect.scale_to_fit_height(6)
@ -970,7 +970,7 @@ class Define2dCrossProduct(LinearTransformationScene):
anticommute = TexMobject(
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.highlight_by_tex(v_tex, V_COLOR)
anticommute.highlight_by_tex(w_tex, W_COLOR)
@ -1326,14 +1326,14 @@ class WriteCrossProductProperties(Scene):
"(parallelogram's area)"
)
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.next_to(VGroup(cross_product, vector), DOWN, buff = LARGE_BUFF)
perpendicular = TextMobject(
"\\centering Perpendicular to",
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(w_cash, W_COLOR)
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("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)
author = TextMobject("-Pierre Deligne")
author.highlight(YELLOW)
@ -103,13 +103,13 @@ class BruteForceVerification(Scene):
verify computationally
""")
computation_words.scale(0.75)
h_line = Line(LEFT, RIGHT).scale(SPACE_X_RADIUS)
v_line = Line(UP, DOWN).scale(SPACE_Y_RADIUS)
h_line = Line(LEFT, RIGHT).scale(FRAME_X_RADIUS)
v_line = Line(UP, DOWN).scale(FRAME_Y_RADIUS)
computation_words.to_edge(UP, buff = MED_SMALL_BUFF/2)
h_line.next_to(computation_words, DOWN)
formula_word.next_to(h_line, UP, buff = MED_SMALL_BUFF)
computation_words.shift(SPACE_X_RADIUS*RIGHT/2)
formula_word.shift(SPACE_X_RADIUS*LEFT/2)
computation_words.shift(FRAME_X_RADIUS*RIGHT/2)
formula_word.shift(FRAME_X_RADIUS*LEFT/2)
cross_product.next_to(formula_word, DOWN, buff = LARGE_BUFF)
@ -141,8 +141,8 @@ class BruteForceVerification(Scene):
"(||", w_tex, "||)",
"\\sin(", "\\theta", ")"
)
last_point = h_line.get_center()+SPACE_X_RADIUS*RIGHT/2
max_width = SPACE_X_RADIUS-1
last_point = h_line.get_center()+FRAME_X_RADIUS*RIGHT/2
max_width = FRAME_X_RADIUS-1
for mob in v_dot, w_dot, theta_def, length_check:
mob.highlight_by_tex(v_tex, V_COLOR)
mob.highlight_by_tex(w_tex, W_COLOR)
@ -167,7 +167,7 @@ class Prerequisites(Scene):
title.highlight(YELLOW)
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 = [
rect.copy().shift(DOWN/2).to_edge(edge)
for edge in LEFT, RIGHT
@ -308,7 +308,7 @@ class ThreeStepPlan(Scene):
title = TextMobject("The plan")
title.highlight(YELLOW)
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)
v_tex, w_tex = get_vect_tex(*"vw")
@ -395,7 +395,7 @@ class DefineDualTransform(Scene):
title = TextMobject("What a student might think")
title.not_real = TextMobject("Not the real cross product")
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.to_edge(UP)
self.add(title)
@ -446,7 +446,7 @@ class DefineDualTransform(Scene):
final_mobs.next_to(self.title, DOWN, buff = MED_SMALL_BUFF)
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:
brackets = array.get_brackets()
@ -844,7 +844,7 @@ class DotProductWords(Scene):
times.next_to(words[0], RIGHT)
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.play(Write(equals))
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(w_tex, W_COLOR)
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)
for word in words:
self.play(Write(word))
@ -923,8 +923,8 @@ class ChangeOfBasisPreview(LinearTransformationScene):
CONFIG = {
"include_background_plane" : False,
"foreground_plane_kwargs" : {
"x_radius" : 2*SPACE_X_RADIUS,
"y_radius" : 2*SPACE_X_RADIUS,
"x_radius" : FRAME_WIDTH,
"y_radius" : FRAME_WIDTH,
"secondary_line_ratio" : 0
},
"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("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)
author = TextMobject("-Henri Poincar\\'e.")
author.highlight(YELLOW)
@ -82,8 +82,8 @@ class LinearCombinationScene(LinearTransformationScene):
CONFIG = {
"include_background_plane" : False,
"foreground_plane_kwargs" : {
"x_radius" : SPACE_X_RADIUS,
"y_radius" : SPACE_Y_RADIUS,
"x_radius" : FRAME_X_RADIUS,
"y_radius" : FRAME_Y_RADIUS,
"secondary_line_ratio" : 1
},
}
@ -340,8 +340,8 @@ class JenniferScene(LinearCombinationScene):
"b1_coords" : [2, 1],
"b2_coords" : [-1, 1],
"foreground_plane_kwargs" : {
"x_radius" : SPACE_X_RADIUS,
"y_radius" : SPACE_X_RADIUS,
"x_radius" : FRAME_X_RADIUS,
"y_radius" : FRAME_X_RADIUS,
},
}
def setup(self):
@ -1437,7 +1437,7 @@ class Prerequisites(Scene):
def construct(self):
title = TextMobject("Prerequisites")
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)
self.add(title, h_line)
@ -1741,7 +1741,7 @@ class HowToTranslateAMatrix(Scene):
def add_title(self):
title = TextMobject("How to translate a matrix")
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)
self.add(title)
self.play(ShowCreation(h_line))

View file

@ -33,7 +33,7 @@ class OpeningQuote(Scene):
into...(dramatic pause)...""",
"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.split()[0].highlight(YELLOW)
words.split()[2].highlight(YELLOW)
@ -146,7 +146,7 @@ class PutTogether3x3Matrix(Scene):
k_to, k_array, TexMobject("=").highlight(BLACK),
)
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)
i_array.highlight(X_COLOR)
@ -238,7 +238,7 @@ class ShowVCoordinateMeaning(Scene):
everything = VMobject(v, eq, coords, eq2, lin_comb)
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)
if not self.post_transform:
lin_comb.shift(0.35*UP)
@ -287,7 +287,7 @@ class ShowMatrixVectorMultiplication(Scene):
z, col3
)
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)
trips = [
@ -361,7 +361,7 @@ class ShowMatrixMultiplication(Scene):
braces.append(brace)
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.play(Write(right_brace))
@ -423,7 +423,7 @@ class NextVideo(Scene):
title = TextMobject("""
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)
rect = Rectangle(width = 16, height = 9, color = BLUE)
rect.scale_to_fit_height(6)

View file

@ -30,7 +30,7 @@ class OpeningQuote(Scene):
"2x3 matrix.",
"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[1].highlight(GREEN)
author = TextMobject("-(Via mathprofessorquotes.com, no name listed)")
@ -355,8 +355,8 @@ class ThreeDToTwoDOutput(LinearTransformationScene):
"show_basis_vectors" : False,
"foreground_plane_kwargs" : {
"color" : GREY,
"x_radius" : SPACE_X_RADIUS,
"y_radius" : SPACE_Y_RADIUS,
"x_radius" : FRAME_X_RADIUS,
"y_radius" : FRAME_Y_RADIUS,
"secondary_line_ratio" : 0
},
}
@ -441,8 +441,8 @@ class TwoDTo1DTransform(LinearTransformationScene):
CONFIG = {
"include_background_plane" : False,
"foreground_plane_kwargs" : {
"x_radius" : SPACE_X_RADIUS,
"y_radius" : SPACE_Y_RADIUS,
"x_radius" : FRAME_X_RADIUS,
"y_radius" : FRAME_Y_RADIUS,
"secondary_line_ratio" : 1
},
"t_matrix" : [[1, 0], [2, 0]],
@ -534,7 +534,7 @@ class NextVideo(Scene):
title = TextMobject("""
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)
rect = Rectangle(width = 16, height = 9, color = BLUE)
rect.scale_to_fit_height(6)

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -543,20 +543,20 @@ class CirclesSpheresSumsSquares(ExternallyAnimatedScene):
class BackAndForth(Scene):
def construct(self):
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)
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)
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)
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)
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.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:
arrow = DoubleArrow(LEFT, RIGHT)
arrow.move_to(mob)
@ -572,7 +572,7 @@ class BackAndForth(Scene):
plane_group = VGroup(plane, circle)
plane_group.scale(0.4)
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))
@ -804,20 +804,20 @@ class OfferAHybrid(SliderScene):
def construct(self):
self.remove(self.sliders)
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)
v_lines = VGroup(*[
Line(UP, DOWN).scale(SPACE_Y_RADIUS)
Line(UP, DOWN).scale(FRAME_Y_RADIUS)
for x in range(2)
])
v_lines.generate_target()
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.generate_target()
equation.shift(SPACE_X_RADIUS*LEFT/2)
equation.target.shift(2*SPACE_X_RADIUS*LEFT/3)
equation.shift(FRAME_X_RADIUS*LEFT/2)
equation.target.shift(FRAME_WIDTH*LEFT/3)
self.add(titles, h_line, v_lines, equation)
self.wait()
@ -836,10 +836,10 @@ class OfferAHybrid(SliderScene):
titles[1].highlight(BLUE)
titles.generate_target()
titles[1].scale_in_place(0.001)
titles[0].shift(SPACE_X_RADIUS*LEFT/2)
titles.target[0].shift(2*SPACE_X_RADIUS*LEFT/3)
titles[2].shift(SPACE_X_RADIUS*RIGHT/2)
titles.target[2].shift(2*SPACE_X_RADIUS*RIGHT/3)
titles[0].shift(FRAME_X_RADIUS*LEFT/2)
titles.target[0].shift(FRAME_WIDTH*LEFT/3)
titles[2].shift(FRAME_X_RADIUS*RIGHT/2)
titles.target[2].shift(FRAME_WIDTH*RIGHT/3)
return titles
class TODOBoxExample(TODOStub):
@ -1766,7 +1766,7 @@ class ThreeDCubeCorners(Scene):
name = TextMobject("Corners: ")
name.next_to(coordinates[0], LEFT)
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)
self.play(Write(name, run_time = 2))
@ -2480,7 +2480,7 @@ class FourDBoxExampleWithSliders(ThreeDBoxExampleWithSliders):
title = TextMobject(
"$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)
coordinates = list(it.product(*4*[[1, -1]]))
@ -3110,7 +3110,7 @@ class ThreeDOuterBoundingBoxWords(Scene):
"$4 \\!\\times\\! 4\\!\\times\\! 4$ outer\\\\",
"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.highlight(MAROON_B)
@ -3544,7 +3544,7 @@ class Podcast(TeacherStudentsScene):
title = TextMobject("Podcast!")
title.scale(1.5)
title.to_edge(UP)
title.shift(SPACE_X_RADIUS*LEFT/2)
title.shift(FRAME_X_RADIUS*LEFT/2)
self.add(title)
q_and_a = TextMobject("Q\\&A Followup")

View file

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

View file

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

View file

@ -167,7 +167,7 @@ class IntroduceDivergentSum(Scene):
brace.stretch_to_fit_width(
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:
self.remove(sum_value)
sum_value = TexMobject(str(2**(x+1) - 1))
@ -180,7 +180,7 @@ class IntroduceDivergentSum(Scene):
)
end_brace = deepcopy(brace).stretch_to_fit_width(
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}
flip_through = FlipThroughNumbers(
lambda x : 2**(x+1)-1,
@ -204,7 +204,7 @@ class ClearlyNonsense(Scene):
number_line = NumberLine().add_numbers()
div_sum = divergent_sum()
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.shift(1.5*UP+LEFT)
neg_1_arrow = Arrow(
@ -212,7 +212,7 @@ class ClearlyNonsense(Scene):
tail=how_here.get_center()+0.5*DOWN
)
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)
)
how_here.highlight("red")
@ -303,7 +303,7 @@ class OutlineOfVideo(Scene):
# # """
# # ], size = "\\Small")
# # 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_two.shift(2*DOWN)
# # div_sum = divergent_sum().scale(0.5).shift(3*UP)
@ -390,7 +390,7 @@ class YouAsMathematician(Scene):
self.clear()
self.play(
ApplyPointwiseFunction(
lambda p : 3*SPACE_X_RADIUS*p/np.linalg.norm(p),
lambda p : 3*FRAME_X_RADIUS*p/np.linalg.norm(p),
everything
),
*[
@ -779,7 +779,7 @@ class CircleZoomInOnOne(Scene):
class ZoomInOnOne(Scene):
def construct(self):
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)
nl_with_nums = deepcopy(number_line).add_numbers()
self.play(ApplyMethod(nl_with_nums.shift, 2*LEFT))
@ -860,8 +860,8 @@ class DefineInfiniteSum(Scene):
bottom = (min(expression.points[:,1]) - buff)*UP
side = (max(expression.points[:,0]) + buff)*RIGHT
lines = [
Line(SPACE_X_RADIUS*LEFT+bottom, side+bottom),
Line(SPACE_Y_RADIUS*UP+side, side+bottom)
Line(FRAME_X_RADIUS*LEFT+bottom, side+bottom),
Line(FRAME_Y_RADIUS*UP+side, side+bottom)
]
self.play(*[
ShowCreation(line.highlight("white"))
@ -963,8 +963,8 @@ class SeekMoreGeneralTruths(Scene):
"&\\sum_{n = 0}^\\infty" + summand + "= ? \\\\"
for summand in summands
], size = "")
sums.stretch_to_fit_height(2*SPACE_Y_RADIUS-1)
sums.shift((SPACE_Y_RADIUS-0.5-max(sums.points[:,1]))*UP)
sums.stretch_to_fit_height(FRAME_HEIGHT-1)
sums.shift((FRAME_Y_RADIUS-0.5-max(sums.points[:,1]))*UP)
for qsum in sums.split():
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_width = dot.get_width()*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
top_brace_left = left+dot_width+dot_buff+0.3*DOWN
bottom_brace_left = left + 0.3*DOWN
@ -1739,8 +1739,8 @@ class RoomsAndSubrooms(Scene):
class RoomsAndSubroomsWithNumbers(Scene):
def construct(self):
zero_local = (SPACE_X_RADIUS-0.5)*LEFT
zero_one_width = SPACE_X_RADIUS-0.3
zero_local = (FRAME_X_RADIUS-0.5)*LEFT
zero_one_width = FRAME_X_RADIUS-0.3
zero, power_mobs = self.draw_numbers(zero_local, zero_one_width)
self.wait()
@ -1782,7 +1782,7 @@ class RoomsAndSubroomsWithNumbers(Scene):
rectangles = []
for n in range(4):
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
)
rect.sort_points(np.linalg.norm)
@ -2049,12 +2049,12 @@ class PAdicMetric(Scene):
class FuzzyDiscoveryToNewMath(Scene):
def construct(self):
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.to_edge(UP).shift(SPACE_X_RADIUS*RIGHT/2)
new_math.to_edge(UP).shift(FRAME_X_RADIUS*RIGHT/2)
lines = Mobject(
Line(DOWN*SPACE_Y_RADIUS, UP*SPACE_Y_RADIUS),
Line(3*UP+LEFT*SPACE_X_RADIUS, 3*UP+RIGHT*SPACE_X_RADIUS)
Line(DOWN*FRAME_Y_RADIUS, UP*FRAME_Y_RADIUS),
Line(3*UP+LEFT*FRAME_X_RADIUS, 3*UP+RIGHT*FRAME_X_RADIUS)
)
fuzzy_discoveries = [
TexMobject("a^2 + b^2 = c^2"),
@ -2094,7 +2094,7 @@ class FuzzyDiscoveryToNewMath(Scene):
math.scale(0.65)
for mob in disc, math:
mob.to_edge(LEFT).shift(count*UP)
math.shift(SPACE_X_RADIUS*RIGHT)
math.shift(FRAME_X_RADIUS*RIGHT)
midpoints.append(count*UP)
self.add(fuzzy, lines)

View file

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

View file

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

View file

@ -12,7 +12,7 @@ from constants import *
from mobject.region import *
from scene import Scene
RADIUS = SPACE_Y_RADIUS - 0.1
RADIUS = FRAME_Y_RADIUS - 0.1
CIRCLE_DENSITY = DEFAULT_POINT_DENSITY_1D*RADIUS
@ -231,7 +231,7 @@ def next_few_videos(*radians):
"black",
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))
sc.add(thumbnail)

View file

@ -16,7 +16,7 @@ from mobject.region import *
from scene import Scene, GraphScene, PascalsTriangleScene
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
MOVIE_PREFIX = "moser/"
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.n_equals = TexMobject(
"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)
@ -151,7 +151,7 @@ class MoserPattern(CircleScene):
self.remove(*self.dots + self.lines + [self.n_equals])
n_equals, num = TexMobject(["n=", "10"]).split()
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)
for n in range(1, len(radians)+1):
self.add(*self.dots[:n])
@ -206,7 +206,7 @@ class HardProblemsSimplerQuestions(Scene):
mob.scale(scale_factor)
fermat["2"].shift(right_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()
fermat2.shift(shift_val)
fermat2_jargon.shift(shift_val)
@ -269,10 +269,10 @@ class HardProblemsSimplerQuestions(Scene):
self.play(
Transform(
all_mobjects,
Point((SPACE_X_RADIUS, 0, 0))
Point((FRAME_X_RADIUS, 0, 0))
),
Transform(
Point((-SPACE_X_RADIUS, 0, 0)),
Point((-FRAME_X_RADIUS, 0, 0)),
Mobject(*CircleScene(RADIANS).mobjects)
)
)
@ -526,7 +526,7 @@ class IllustrateNChooseK(Scene):
for mob in nrange_mobs:
mob.shift((0, 2, 0))
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()
for mob in tuple_mobs:
mob.scale(0.6)
@ -587,7 +587,7 @@ class IntersectionPointCorrespondances(CircleScene):
for mob in line_statement, dots_statement:
mob.center()
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 = []
line_highlights = []
dot_highlights = []
@ -682,7 +682,7 @@ class GraphsAndEulersFormulaJoke(Scene):
lambda t : (10*t, ((10*t)**3 - 10*t), 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.play(ShowCreation(graph), run_time = 1.0)
eulers = TexMobject("e^{\pi i} = -1").shift((0, 3, 0))
@ -694,11 +694,11 @@ class GraphsAndEulersFormulaJoke(Scene):
self.add(eulers)
self.play(CounterclockwiseTransform(
Mobject(axes, graph),
Point((-SPACE_X_RADIUS, SPACE_Y_RADIUS, 0))
Point((-FRAME_X_RADIUS, FRAME_Y_RADIUS, 0))
))
self.play(CounterclockwiseTransform(
eulers,
Point((SPACE_X_RADIUS, SPACE_Y_RADIUS, 0))
Point((FRAME_X_RADIUS, FRAME_Y_RADIUS, 0))
))
class DefiningGraph(GraphScene):
@ -785,7 +785,7 @@ class EulersFormula(GraphScene):
for key, mob in zip(terms, TexMobjects(terms))
])
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"])
new_form = dict([
(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"
]).split()
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.add(*self.intersection_dots)
small_lines = [
@ -1143,7 +1143,7 @@ class ApplyEulerToMoser(CircleScene):
self.play(
Transform(
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])
@ -1301,7 +1301,7 @@ class PascalsTriangleNChooseKExample(PascalsTriangleScene):
formula_terms = left, n_mob, k_mob, right = TexMobject([
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.add(*formula_terms)
self.wait()
@ -1486,7 +1486,7 @@ class MoserSolutionInPascal(PascalsTriangleScene):
self.remove(*above_terms)
self.wait()
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)
self.play(Transform(Mobject(*terms), terms_sum))
@ -1541,7 +1541,7 @@ class ExplainNChoose2Formula(Scene):
str(n), "(%d-1)"%n, r"\over{2}"
]).split()
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)
up_unit = np.array((0, height, 0))
@ -1685,7 +1685,7 @@ class IntersectionChoppingExamples(Scene):
for pairs, exp in [(pairs1, "3 + 2(2) = 7"),
(pairs2, "4 + 2(3) = 10")]:
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.wait()
self.play(*[

View file

@ -47,7 +47,7 @@ class HappyHolidays(TeacherStudentsScene):
self.add(self.get_snowflakes())
self.change_student_modes(
*["hooray"]*3,
look_at_arg = SPACE_Y_RADIUS*UP,
look_at_arg = FRAME_Y_RADIUS*UP,
added_anims = [self.teacher.change, "hooray"]
)
self.play(LaggedStart(
@ -55,7 +55,7 @@ class HappyHolidays(TeacherStudentsScene):
), Animation(self.pi_creatures))
self.change_student_modes(
"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.wait(2)
@ -94,7 +94,7 @@ class HappyHolidays(TeacherStudentsScene):
])
def random_confetti_spiral(mob, **kwargs):
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
)
snowflake_spirils = LaggedStart(
@ -286,7 +286,7 @@ class AboutToyPuzzles(UtilitiesPuzzleScene, TeacherStudentsScene, ThreeDScene):
objects.generate_target()
objects.target.scale(0.5)
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")
@ -1079,7 +1079,7 @@ class LightUpNodes(IntroduceRegions):
TextMobject("\\# Regions"),
]
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)
underline = Line(LEFT, RIGHT)
underline.stretch_to_fit_width(title.get_width())

View file

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

View file

@ -438,7 +438,7 @@ class ExampleThrees(PiCreatureScene):
alt_threes = VGroup(*self.three_mobs[1:])
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)
for alt_three in alt_threes:
@ -604,7 +604,7 @@ class WriteAProgram(Scene):
choices = VGroup(*[TexMobject(str(n)) for n in range(10)])
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)
self.play(
@ -885,7 +885,7 @@ class AlternateNeuralNetworks(PiCreatureScene):
ex[0].next_to(arrow, LEFT)
ex[1].next_to(arrow, RIGHT)
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)
maybe_words = TextMobject("Maybe future videos?")
@ -1826,7 +1826,7 @@ class BreakUpMicroPatterns(BreakUpMacroPatterns):
edge.save_state()
edge[1].set_opacity(0)
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)
symbols = VGroup(*equation[1::2])
@ -2153,7 +2153,7 @@ class ManyTasksBreakDownLikeThis(TeacherStudentsScene):
word
)
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)
audio_label.next_to(audio, DOWN)
@ -2982,7 +2982,7 @@ class BiasForInactiviyWords(Scene):
def construct(self):
words = TextMobject("Bias for inactivity")
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)
self.play(Write(words))
@ -3931,7 +3931,7 @@ class SigmoidAppliedToVector(Scene):
\\sigma(x) \\\\ \\sigma(y) \\\\ \\sigma(z)
\\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)
indices = it.chain(
[0], range(1, 5), range(16, 16+4),
@ -4421,7 +4421,7 @@ class IntroduceReLU(IntroduceSigmoid):
self.play(
ApplyMethod(
VGroup(cross, sigmoid_title).shift,
SPACE_X_RADIUS*RIGHT,
FRAME_X_RADIUS*RIGHT,
rate_func = running_start
),
FadeOut(old_school),
@ -4447,7 +4447,7 @@ class IntroduceReLU(IntroduceSigmoid):
graph.highlight(YELLOW)
char = self.x_axis_label.replace("$", "")
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.add_background_rectangle()
name = TextMobject("Rectified linear unit")
@ -4556,9 +4556,9 @@ class CompareSigmoidReLUOnDeepNetworks(PiCreatureScene):
###
def create_pi_creatures(self):
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.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
return morty, lisha
@ -4588,7 +4588,7 @@ class Thumbnail(NetworkScene):
}
def construct(self):
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:
layer.neurons.set_stroke(width = 5)

View file

@ -123,7 +123,7 @@ class ShowPlan(Scene):
def construct(self):
title = TextMobject("Plan").scale(1.5)
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.next_to(title, DOWN)
self.add(title, h_line)
@ -354,7 +354,7 @@ class PreviewLearning(NetworkScene):
class BackpropComingLaterWords(Scene):
def construct(self):
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)
self.add(words)
@ -499,7 +499,7 @@ class MNistDescription(Scene):
group.arrange_submobjects_in_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:
self.play(
LaggedStart(FadeIn, group),
@ -1253,9 +1253,9 @@ class EmphasizeComplexityOfCostFunction(IntroduceCostFunction):
self.show_cost_function()
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.scale_to_fit_width(SPACE_X_RADIUS - 1)
network_mob.scale_to_fit_width(FRAME_X_RADIUS - 1)
network_mob.to_corner(DOWN+LEFT)
self.add(v_line)
@ -1263,7 +1263,7 @@ class EmphasizeComplexityOfCostFunction(IntroduceCostFunction):
def show_network_as_a_function(self):
title = TextMobject("Neural network function")
title.shift(SPACE_X_RADIUS*RIGHT/2)
title.shift(FRAME_X_RADIUS*RIGHT/2)
title.to_edge(UP)
underline = Line(LEFT, RIGHT)
underline.stretch_to_fit_width(title.get_width())
@ -1855,7 +1855,7 @@ class TwoVariableInputSpace(Scene):
def add_plane(self):
plane = NumberPlane(
x_radius = SPACE_X_RADIUS/2
x_radius = FRAME_X_RADIUS/2
)
plane.add_coordinates()
name = TextMobject("Input space")
@ -1877,7 +1877,7 @@ class TwoVariableInputSpace(Scene):
point = self.plane.coords_to_point(2, 1)
dot = Dot(point, color = YELLOW)
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)
arrows = VGroup(*[
Arrow(ORIGIN, vect).shift(point)
@ -1982,7 +1982,7 @@ class GradientDescentAlgorithm(Scene):
TextMobject("Repeat."),
)
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)
for word in words[:2]:
@ -1996,7 +1996,7 @@ class GradientDescentName(Scene):
def construct(self):
words = TextMobject("Gradient descent")
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)
self.play(Write(words, run_time = 2))
@ -2118,7 +2118,7 @@ class ShowFullCostFunctionGradient(PreviewLearning):
class DotsInsert(Scene):
def construct(self):
dots = TexMobject("\\vdots")
dots.scale_to_fit_height(2*SPACE_Y_RADIUS - 1)
dots.scale_to_fit_height(FRAME_HEIGHT - 1)
self.add(dots)
class HowMinimizingCostMeansBetterTrainingPerformance(IntroduceCostFunction):
@ -2193,7 +2193,7 @@ class NonSpatialGradientIntuition(Scene):
"w_color" : YELLOW,
"positive_color" : BLUE,
"negative_color" : RED,
"vect_height" : SPACE_Y_RADIUS - MED_LARGE_BUFF,
"vect_height" : FRAME_Y_RADIUS - MED_LARGE_BUFF,
"text_scale_value" : 0.7,
}
def construct(self):
@ -2483,7 +2483,7 @@ class TwoGradientInterpretationsIn2D(Scene):
"C(", "x, y", ")", "=",
"\\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", ")", "=")
vect = TexMobject(
@ -3051,7 +3051,7 @@ class InterpretFirstWeightMatrixRows(TestPerformance):
network_mob.edge_groups[0],
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()
self.play(
to_fade.shift, shift_val,
@ -3075,7 +3075,7 @@ class InterpretFirstWeightMatrixRows(TestPerformance):
pixel.set_fill(color, opacity = abs(shade)**(0.3))
pixel_arrays.add(pixel_array)
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)
for pixel_array in pixel_arrays:
@ -3486,7 +3486,7 @@ class ConvolutionalNetworkPreview(Scene):
vect = get_organized_images()[9][0]
image = PixelsFromVect(vect)
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)
kernels = [
@ -3544,7 +3544,7 @@ class RandomlyLabeledImageData(Scene):
x = i//5
y = i%5
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)
groups.add(group)
labels.add(group[-1])
@ -3728,7 +3728,7 @@ class ManyMinimaWords(Scene):
"Many local minima,\\\\",
"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)
self.play(Write(words))
self.wait()

View file

@ -7,7 +7,7 @@ class LayOutPlan(Scene):
title = TextMobject("Plan")
title.scale(1.5)
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)
items = BulletedList(
@ -19,7 +19,7 @@ class LayOutPlan(Scene):
self.add(items)
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)
self.play(
@ -381,7 +381,7 @@ class GetLostInNotation(PiCreatureScene):
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_stroke(WHITE, 0)
@ -1390,7 +1390,7 @@ class WalkThroughTwoExample(ShowAveragingCost):
class WriteHebbian(Scene):
def construct(self):
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)
self.play(Write(words))
self.wait()
@ -1477,7 +1477,7 @@ class ConstructGradientFromAllTrainingExamples(Scene):
def setup_grid(self):
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)
])
h_lines.arrange_submobjects(DOWN, buff = 1)
@ -1486,7 +1486,7 @@ class ConstructGradientFromAllTrainingExamples(Scene):
h_lines.to_edge(LEFT, buff = 0)
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)
])
v_lines.arrange_submobjects(RIGHT, buff = 1.4)

View file

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

View file

@ -1,6 +1,6 @@
import numpy as np
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 point_cloud_mobject import Point
from scene import Scene
@ -16,7 +16,7 @@ class NumberLineScene(Scene):
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
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)))
left_tick = tick_frequency*(np.ceil((number-radius)/tick_frequency))
new_number_line = NumberLine(

View file

@ -92,7 +92,7 @@ class SideGigToFullTime(Scene):
self.play(
ApplyMethod(
dollar_signs.shift,
(SPACE_Y_RADIUS+1)*DOWN,
(FRAME_Y_RADIUS+1)*DOWN,
submobject_mode = "lagged_start"
),
morty.change_mode, "guilty",
@ -195,10 +195,10 @@ class TwoTypesOfVideos(Scene):
def construct(self):
morty = Mortimer().shift(2*DOWN)
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)
series = TextMobject("Series")
series.shift(SPACE_X_RADIUS*RIGHT/2)
series.shift(FRAME_X_RADIUS*RIGHT/2)
series.to_edge(UP)
box = Rectangle(width = 16, height = 9, color = WHITE)
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.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.to_edge(RIGHT)

View file

@ -385,7 +385,7 @@ class HartlAndPalais(Scene):
color = WHITE,
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)
palais_rect = hartl_rect.copy()
palais_rect.to_edge(RIGHT)
@ -505,7 +505,7 @@ class EulerWrites628(Scene):
}
def construct(self):
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.fade(0.15)
rect = Rectangle(
@ -591,8 +591,8 @@ class HeroAndVillain(Scene):
for mob in pictures:
mob.scale_to_fit_height(5)
good_euler.move_to(SPACE_X_RADIUS*LEFT/2)
bad_euler.move_to(SPACE_X_RADIUS*RIGHT/2)
good_euler.move_to(FRAME_X_RADIUS*LEFT/2)
bad_euler.move_to(FRAME_X_RADIUS*RIGHT/2)
bad_euler_pixelated.move_to(bad_euler)
good_euler_label = TextMobject("Leonhard Euler")
@ -626,7 +626,7 @@ class HeroAndVillain(Scene):
class AnalysisQuote(Scene):
def construct(self):
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)
text = TextMobject(
@ -642,7 +642,7 @@ class AnalysisQuote(Scene):
pi_formula = TexMobject(
"\\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.to_edge(UP)
@ -767,7 +767,7 @@ class ThingsNamedAfterEuler(Scene):
"Euler totient function (number theory)",
]))
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.wait()
@ -1036,7 +1036,7 @@ class EndScene(PatreonEndScreen):
self.add(watch_basel)
# 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)
self.add(line)
@ -1061,7 +1061,7 @@ class EndScene(PatreonEndScreen):
instagram_logo.next_to(instagram_line, LEFT, SMALL_BUFF)
instagram = Group(instagram_logo, instagram_line)
instagram.next_to(line, DOWN)
instagram.shift(SPACE_X_RADIUS*RIGHT/2)
instagram.shift(FRAME_X_RADIUS*RIGHT/2)
self.add(instagram)
@ -1096,7 +1096,7 @@ class Thumbnail(Scene):
formula.scale(2)
pi.scale(1.5, about_edge = RIGHT)
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)
self.add(formula)

View file

@ -48,9 +48,9 @@ class IntroducePutnam(Scene):
for mob in six_hours, three_hours:
mob.next_to(title, DOWN, MED_LARGE_BUFF)
# 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.shift(SPACE_X_RADIUS*RIGHT)
three_hours_copy.shift(FRAME_X_RADIUS*RIGHT)
question_groups = VGroup(*[
VGroup(*[
@ -58,7 +58,7 @@ class IntroducePutnam(Scene):
for i in range(1, 7)
]).arrange_submobjects(DOWN, buff = MED_LARGE_BUFF)
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(DOWN, MED_LARGE_BUFF)
flat_questions = VGroup(*it.chain(*question_groups))
@ -67,7 +67,7 @@ class IntroducePutnam(Scene):
for questions in question_groups:
rect = SurroundingRectangle(questions, buff = MED_SMALL_BUFF)
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)
rects.add(rect)
@ -196,7 +196,7 @@ class NatureOf5sAnd6s(TeacherStudentsScene):
)
self.change_student_modes(*["pondering"]*3)
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)
@ -239,7 +239,7 @@ class IntroduceTetrahedronSupplement(Scene):
question = TextMobject("Probability that this tetrahedron \\\\ contains the sphere's center?")
question.next_to(title, DOWN, MED_LARGE_BUFF)
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)
for n in range(1, 4):
@ -826,7 +826,7 @@ class AverageSizeOfSphericalTriangleSectionSupplement(Scene):
arg_separator = ""
)
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)
self.play(Write(words))
self.wait(3)
@ -1289,7 +1289,7 @@ class ThreeDAnswer(Scene):
"Probability that the tetrahedron contains center:",
"$\\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[1].highlight(BLUE)
@ -1531,7 +1531,7 @@ class AddedPromoWords(Scene):
"First", "$2^8$", "vistors get",
"$(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.highlight_by_tex("2^8", YELLOW)
words.highlight_by_tex("pi", PINK)

View file

@ -190,7 +190,7 @@ class PiHoldingScreen(PiCreatureScene):
class QuestionsLink(Scene):
def construct(self):
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)
self.play(Write(link))
self.wait()
@ -198,12 +198,12 @@ class QuestionsLink(Scene):
class Thumbnail(Scene):
def construct(self):
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)
q_and_a = TextMobject("Q\\&A \\\\ Round 2")
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)
eater = ImageMobject("eater", height = 3)

View file

@ -336,7 +336,7 @@ class ExplainTrigFunctionDistances(TrigRepresentationsScene, PiCreatureScene):
cot_group = self.get_line_brace_text("cot")
tan_text = tan_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.move_to(self.theta_group[-1])
line.set_stroke(width = 2)
@ -537,7 +537,7 @@ class ExplainTrigFunctionDistances(TrigRepresentationsScene, PiCreatureScene):
frac2.next_to(frac1)
frac2[-2].highlight(YELLOW)
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)
question = TextMobject("Why is this $\\theta$?")

View file

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

View file

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

View file

@ -778,7 +778,7 @@ class TowerExponentFrame(Scene):
$7{,}625{,}597{,}484{,}987$. But with the triangle
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)
top1 = TOP(TOP(3, 3), 3)
top2 = TOP(3, (TOP(3, 3)))

View file

@ -210,7 +210,7 @@ class CompareToFermatsLastTheorem(TeacherStudentsScene):
class WritePythagoreanTriple(Scene):
def construct(self):
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)
self.play(Write(words))
self.wait(2)
@ -252,8 +252,8 @@ class ShowManyTriples(Scene):
title.target.scale(0.5)
title.target.move_to(
(-SPACE_X_RADIUS + MED_LARGE_BUFF + 2.7*(i//8))*RIGHT + \
(SPACE_Y_RADIUS - MED_LARGE_BUFF - (i%8))*UP,
(-FRAME_X_RADIUS + MED_LARGE_BUFF + 2.7*(i//8))*RIGHT + \
(FRAME_Y_RADIUS - MED_LARGE_BUFF - (i%8))*UP,
UP+LEFT
)
@ -328,7 +328,7 @@ class BabylonianTablets(Scene):
triple = TexMobject(tex)
triples.add(triple)
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)
self.add(title)
@ -960,10 +960,10 @@ class ReframeOnLattice(PiCreatureScene):
def get_all_plane_dots(self):
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(
SPACE_X_RADIUS*RIGHT + SPACE_Y_RADIUS*UP
FRAME_X_RADIUS*RIGHT + FRAME_Y_RADIUS*UP
))
result = VGroup(*[
Dot(
@ -1495,7 +1495,7 @@ class WriteGeneralFormula(GeneralExample):
def show_uv_to_triples(self):
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)
h_line = Line(rect.get_left(), rect.get_right())
@ -1572,8 +1572,8 @@ class VisualizeZSquared(Scene):
self.show_more_triangles()
def add_plane(self):
width = (SPACE_X_RADIUS+abs(self.plane_center[0]))/self.final_unit_size
height = (SPACE_Y_RADIUS+abs(self.plane_center[1]))/self.final_unit_size
width = (FRAME_X_RADIUS+abs(self.plane_center[0]))/self.final_unit_size
height = (FRAME_Y_RADIUS+abs(self.plane_center[1]))/self.final_unit_size
background_plane = ComplexPlane(
x_radius = width,
y_radius = height,
@ -1698,7 +1698,7 @@ class VisualizeZSquared(Scene):
def draw_dots(self):
min_corner, max_corner = [
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
]
@ -1831,8 +1831,8 @@ class VisualizeZSquared(Scene):
###
def get_color_grid(self):
width = (SPACE_X_RADIUS+abs(self.plane_center[0]))/self.initial_unit_size
height = (SPACE_Y_RADIUS+abs(self.plane_center[1]))/self.initial_unit_size
width = (FRAME_X_RADIUS+abs(self.plane_center[0]))/self.initial_unit_size
height = (FRAME_Y_RADIUS+abs(self.plane_center[1]))/self.initial_unit_size
color_grid = ComplexPlane(
x_radius = width,
y_radius = int(height),
@ -2150,7 +2150,7 @@ class DrawRadialLines(PointsWeMiss):
continue
coord_strings.add(str(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
new_dot = Dot(
point, color = GREEN,
@ -2159,7 +2159,7 @@ class DrawRadialLines(PointsWeMiss):
new_dots.add(new_dot)
line = Line(self.plane_center, dot.get_center())
line.scale(
2*SPACE_X_RADIUS/line.get_length(),
FRAME_WIDTH/line.get_length(),
about_point = self.plane_center
)
line.set_stroke(width = 1)
@ -2296,7 +2296,7 @@ class RationalPointsOnUnitCircle(DrawRadialLines):
top_line = TexMobject(
"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.shift(RIGHT)
top_rect = BackgroundRectangle(top_line)
@ -2498,7 +2498,7 @@ class ProjectPointsOntoUnitCircle(DrawRadialLines):
def draw_infinitely_many_lines(self):
lines = VGroup(*[
Line(ORIGIN, 2*SPACE_X_RADIUS*vect)
Line(ORIGIN, FRAME_WIDTH*vect)
for vect in compass_directions(1000)
])

View file

@ -608,7 +608,7 @@ class ShowPlan(PiCreatureScene):
title = TextMobject("The plan")
title.scale(1.5)
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)
self.add(title, h_line)
@ -805,7 +805,7 @@ class TwoCarsAtRedLight(Scene):
)
car2.pi_creature.highlight(GREY_BROWN)
car1.start_point = car1.get_corner(DOWN+RIGHT)
car1.shift(SPACE_X_RADIUS*LEFT)
car1.shift(FRAME_X_RADIUS*LEFT)
#Pull up car
self.add(cars)
@ -1088,7 +1088,7 @@ class VariousMusicalNotes(Scene):
graph_update_anim,
**kwargs
)
change_width_anim(SPACE_X_RADIUS).update(1)
change_width_anim(FRAME_X_RADIUS).update(1)
graph_update_anim.update(0)
phrases = [
@ -1102,7 +1102,7 @@ class VariousMusicalNotes(Scene):
#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):
brace = Brace(Line(LEFT, RIGHT), UP)
brace.stretch(width, 0)
@ -1152,8 +1152,8 @@ class VariousMusicalNotes(Scene):
long_graph = FunctionGraph(
lambda x : 0.5*np.sin(freq*x),
x_min = -2*SPACE_X_RADIUS,
x_max = 2*SPACE_X_RADIUS,
x_min = -FRAME_WIDTH,
x_max = FRAME_WIDTH,
num_anchor_points = 1000
)
long_graph.highlight(BLUE)
@ -1471,7 +1471,7 @@ class CenterOfMassDescription(FourierRecapScene):
circle_plane = self.get_circle_plane()
circle_plane.save_state()
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.axes.set_stroke(width = 2)
circle_plane.target.main_lines.set_stroke(width = 2)
@ -1728,7 +1728,7 @@ class FocusRectangleInsert(FourierRecapScene):
self.setup_axes()
self.clear()
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)
self.add(rect)
self.wait()
@ -2381,7 +2381,7 @@ class RadarOperatorUncertainty(Scene):
echo_object = Square()
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)
plane = Plane().scale(0.5)
@ -2994,7 +2994,7 @@ class IntroduceDeBroglie(Scene):
numbers_with_elongated_ticks = range(1900, 1941, 10),
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.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)
axes = Axes(
x_min = 0, x_max = 2*SPACE_X_RADIUS,
x_min = 0, x_max = FRAME_WIDTH,
y_min = -1, y_max = 1,
)
axes.center().to_edge(UP, buff = -0.5)
@ -3386,7 +3386,7 @@ class SortOfDopplerEffect(PiCreatureScene):
}
def 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)
self.camera = MovingCamera(
rect, **self.camera_config
@ -3410,8 +3410,8 @@ class SortOfDopplerEffect(PiCreatureScene):
func = lambda x : 0.5*np.cos(omega*t - k*x)
graph = FunctionGraph(
func,
x_min = -5*SPACE_X_RADIUS,
x_max = SPACE_X_RADIUS,
x_min = -5*FRAME_X_RADIUS,
x_max = FRAME_X_RADIUS,
color = color,
)
return VGroup(graph, *[
@ -3420,7 +3420,7 @@ class SortOfDopplerEffect(PiCreatureScene):
color = color
)
for x in np.arange(
-4*SPACE_X_RADIUS, SPACE_X_RADIUS,
-4*FRAME_X_RADIUS, FRAME_X_RADIUS,
self.arrow_spacing
)
])
@ -3475,7 +3475,7 @@ class SortOfDopplerEffect(PiCreatureScene):
),
)
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,
)
@ -3514,7 +3514,7 @@ class SortOfDopplerEffect(PiCreatureScene):
class HangingWeightsScene(MovingCameraScene):
CONFIG = {
"frequency" : 0.5,
"ceiling_radius" : 3*SPACE_X_RADIUS,
"ceiling_radius" : 3*FRAME_X_RADIUS,
"n_springs" : 72,
"amplitude" : 0.6,
"spring_radius" : 0.15,
@ -3669,7 +3669,7 @@ class HangingWeightsScene(MovingCameraScene):
self.einstein = einstein
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)
camera_frame = self.camera_frame
@ -3681,7 +3681,7 @@ class HangingWeightsScene(MovingCameraScene):
FadeOut(self.einstein),
)
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.wait(3)
@ -3929,7 +3929,7 @@ class FourierTransformOfWaveFunction(Scene):
sinusoid = axes.get_graph(
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)
@ -4390,7 +4390,7 @@ class ThinkOfHeisenbergUncertainty(PiCreatureScene):
dot_gdw = dot_cloud.gaussian_distribution_wrapper
dot_gdw.scale_to_fit_width(1)
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(
center_func = dot_gdw.get_center
@ -4457,7 +4457,7 @@ class ThinkOfHeisenbergUncertainty(PiCreatureScene):
self.play(
ApplyMethod(
VGroup(dot_gdw, vector_gdw ).shift,
SPACE_X_RADIUS*RIGHT,
FRAME_X_RADIUS*RIGHT,
rate_func = running_start
)
)
@ -4652,7 +4652,7 @@ class PuzzleStatement(Scene):
to determine who we send. Can we make sure we don't send
the weakest person?
""", 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)
self.play(LaggedStart(FadeIn, words, run_time = 5, lag_ratio = 0.2))
self.wait(2)

View file

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

View file

@ -30,7 +30,7 @@ mpmath.mp.dps = 7
def zeta(z):
max_norm = SPACE_X_RADIUS
max_norm = FRAME_X_RADIUS
try:
return np.complex(mpmath.zeta(z))
except:
@ -51,7 +51,7 @@ class ZetaTransformationScene(ComplexTransformationScene):
"run_time" : 5,
},
"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_max" : 4,
"extra_lines_y_min" : -2,
@ -1027,7 +1027,7 @@ class FromRealToComplex(ComplexTransformationScene):
def transition_to_spiril_sum(self):
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)
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):
domain = Rectangle(
width = SPACE_X_RADIUS-2,
height = 2*SPACE_Y_RADIUS,
width = FRAME_X_RADIUS-2,
height = FRAME_HEIGHT,
stroke_width = 0,
fill_color = YELLOW,
fill_opacity = opacity,
)
domain.to_edge(RIGHT, buff = 0)
anti_domain = Rectangle(
width = SPACE_X_RADIUS+2,
height = 2*SPACE_Y_RADIUS,
width = FRAME_X_RADIUS+2,
height = FRAME_HEIGHT,
stroke_width = 0,
fill_color = RED,
fill_opacity = opacity,
@ -1217,7 +1217,7 @@ class TerritoryOfExponents(ComplexTransformationScene):
familiar_territory.highlight(YELLOW)
familiar_territory.next_to(ORIGIN, UP+RIGHT)
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)
arrow1 = Arrow(familiar_territory.get_bottom(), real_line.get_left())
arrow2 = Arrow(familiar_territory.get_bottom(), real_line.get_right())
@ -1226,8 +1226,8 @@ class TerritoryOfExponents(ComplexTransformationScene):
extended_realm = TextMobject("Extended realm")
extended_realm.move_to(familiar_territory)
full_plane = Rectangle(
width = 2*SPACE_X_RADIUS,
height = 2*SPACE_Y_RADIUS,
width = FRAME_WIDTH,
height = FRAME_HEIGHT,
fill_color = YELLOW,
fill_opacity = 0.3
)
@ -1306,9 +1306,9 @@ class ComplexExponentiation(Scene):
self.imag_exponent = imag_part
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)
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.move_to(left_plane.get_center())
left_plane.add(imag_line)
@ -1317,7 +1317,7 @@ class ComplexExponentiation(Scene):
left_title.highlight(YELLOW)
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)
unit_circle = Circle()
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.add(self.plane.copy().rotate(np.pi, RIGHT))
self.plane.add(
Line(ORIGIN, SPACE_X_RADIUS*RIGHT, color = self.horiz_end_color),
Line(ORIGIN, SPACE_X_RADIUS*LEFT, color = self.horiz_end_color),
Line(ORIGIN, FRAME_X_RADIUS*RIGHT, color = self.horiz_end_color),
Line(ORIGIN, FRAME_X_RADIUS*LEFT, color = self.horiz_end_color),
)
self.add(self.plane)
@ -1754,7 +1754,7 @@ class VisualizingSSquared(ComplexTransformationScene):
class ShowZetaOnHalfPlane(ZetaTransformationScene):
CONFIG = {
"x_min" : 1,
"x_max" : int(SPACE_X_RADIUS+2),
"x_max" : int(FRAME_X_RADIUS+2),
}
def construct(self):
self.add_title()
@ -1824,7 +1824,7 @@ class ShowZetaOnHalfPlane(ZetaTransformationScene):
words.shift(LEFT+UP)
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
]))
line.highlight(YELLOW)
@ -1849,7 +1849,7 @@ class ShowZetaOnHalfPlane(ZetaTransformationScene):
VGroup(*[
Line(
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
])
@ -1976,7 +1976,7 @@ class ShowConditionalDefinition(Scene):
class SquiggleOnExtensions(ZetaTransformationScene):
CONFIG = {
"x_min" : 1,
"x_max" : int(SPACE_X_RADIUS+2),
"x_max" : int(FRAME_X_RADIUS+2),
}
def construct(self):
self.show_negative_one()
@ -2038,7 +2038,7 @@ class SquiggleOnExtensions(ZetaTransformationScene):
])
def mixed_scalar_func(point):
x, y, z = point
scalar = 1 + (gamma-x)/(gamma+SPACE_X_RADIUS)
scalar = 1 + (gamma-x)/(gamma+FRAME_X_RADIUS)
return np.array([
(scalar**2)*x,
(scalar**3)*y,
@ -2046,7 +2046,7 @@ class SquiggleOnExtensions(ZetaTransformationScene):
])
def alt_mixed_scalar_func(point):
x, y, z = point
scalar = 1 + (gamma-x)/(gamma+SPACE_X_RADIUS)
scalar = 1 + (gamma-x)/(gamma+FRAME_X_RADIUS)
return np.array([
(scalar**5)*x,
(scalar**2)*y,
@ -2668,7 +2668,7 @@ class ManyIntersectingLinesPostZeta(ManyIntersectingLinesPreZeta):
class ManyIntersectingLinesPreSSquared(ManyIntersectingLinesPreZeta):
CONFIG = {
"x_min" : -int(SPACE_X_RADIUS),
"x_min" : -int(FRAME_X_RADIUS),
"apply_zeta" : False,
"lines_center" : ORIGIN,
"nudge_size" : 0.9,
@ -2854,7 +2854,7 @@ class DiscussZeros(ZetaTransformationScene):
def show_critical_strip(self):
strip = Rectangle(
height = 2*SPACE_Y_RADIUS,
height = FRAME_HEIGHT,
width = 1
)
strip.next_to(ORIGIN, RIGHT, buff = 0)
@ -2877,8 +2877,8 @@ class DiscussZeros(ZetaTransformationScene):
])
new_dots.highlight(YELLOW)
critical_line = Line(
0.5*RIGHT+SPACE_Y_RADIUS*DOWN,
0.5*RIGHT+SPACE_Y_RADIUS*UP,
0.5*RIGHT+FRAME_Y_RADIUS*DOWN,
0.5*RIGHT+FRAME_Y_RADIUS*UP,
color = YELLOW
)
@ -3004,15 +3004,15 @@ class HighlightCriticalLineAgain(DiscussZeros):
self.add(title)
strip = Rectangle(
height = 2*SPACE_Y_RADIUS,
height = FRAME_HEIGHT,
width = 1
)
strip.next_to(ORIGIN, RIGHT, buff = 0)
strip.set_stroke(width = 0)
strip.set_fill(YELLOW, opacity = 0.3)
line = Line(
0.5*RIGHT+SPACE_Y_RADIUS*UP,
0.5*RIGHT+SPACE_Y_RADIUS*DOWN,
0.5*RIGHT+FRAME_Y_RADIUS*UP,
0.5*RIGHT+FRAME_Y_RADIUS*DOWN,
color = YELLOW
)
randy = Randolph().to_corner(DOWN+LEFT)
@ -3296,18 +3296,18 @@ class Thumbnail(ZetaTransformationScene):
self.plane.set_stroke(width = 4)
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.highlight(YELLOW)
for mob in div_sum.submobjects:
mob.add_to_back(BackgroundRectangle(mob))
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)
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.highlight(GREEN_B)
million.add_background_rectangle()

View file

@ -6,7 +6,7 @@ from topics.geometry import ScreenRectangle
class MovingCameraScene(Scene):
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 = MovingCamera(
self.camera_frame, **self.camera_config

View file

@ -704,7 +704,7 @@ class TeacherStudentsScene(PiCreatureScene):
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:
for pi in self.get_pi_creatures():
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
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
class CountingScene(Scene):
@ -87,8 +87,8 @@ class CountingScene(Scene):
class PascalsTriangle(VMobject):
CONFIG = {
"nrows" : 7,
"height" : 2*SPACE_Y_RADIUS - 1,
"width" : 1.5*SPACE_X_RADIUS,
"height" : FRAME_HEIGHT - 1,
"width" : 1.5*FRAME_X_RADIUS,
"portion_to_fill" : 0.7
}
def generate_points(self):

View file

@ -35,7 +35,7 @@ class OpeningQuote(Scene):
self.play(Write(self.author, run_time = 3))
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 = {
"alignment" : "",
"arg_separator" : self.quote_arg_separator,
@ -148,17 +148,17 @@ class PatreonEndScreen(PatreonThanks):
def scroll_through_patrons(self):
logo_box = Square(side_length = 2.5)
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(
fill_color = BLACK,
fill_opacity = 1,
stroke_width = 0,
width = 2*SPACE_X_RADIUS,
height = 1.1*SPACE_Y_RADIUS
width = FRAME_WIDTH,
height = 1.1*FRAME_Y_RADIUS
)
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.shift(SMALL_BUFF*SMALL_BUFF*DOWN)
self.add(line)
@ -183,7 +183,7 @@ class PatreonEndScreen(PatreonThanks):
columns.to_edge(RIGHT)
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,
Animation(black_rect),
rate_func = None,

View file

@ -231,11 +231,11 @@ class ComplexPlane(NumberPlane):
"color" : self.color,
"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))
for angle in np.arange(0, 2*np.pi, angle_freq):
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))
return self

View file

@ -14,7 +14,7 @@ from scene import Scene
class CountingScene(Scene):
CONFIG = {
"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,
"dot_configuration_height" : 2,
"ones_configuration_location" : UP+2*RIGHT,

View file

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

View file

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

View file

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

View file

@ -308,7 +308,7 @@ class GraphScene(Scene):
])
def generate_treeified_spanning_tree(self):
bottom = -SPACE_Y_RADIUS + 1
bottom = -FRAME_Y_RADIUS + 1
x_sep = 1
y_sep = 2
if not hasattr(self, "spanning_tree"):
@ -380,7 +380,7 @@ class GraphScene(Scene):
Dot(point).highlight("green")
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_edges = []
@ -402,7 +402,7 @@ class GraphScene(Scene):
self.points[pair[0]],
self.points[pair[1]]
]) - 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
self.dual_edges.append(
Line(*dual_point_pair).highlight()

View file

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

View file

@ -10,8 +10,8 @@ from scene import Scene
class NumberLine(VMobject):
CONFIG = {
"color" : BLUE,
"x_min" : -SPACE_X_RADIUS,
"x_max" : SPACE_X_RADIUS,
"x_min" : -FRAME_X_RADIUS,
"x_max" : FRAME_X_RADIUS,
"unit_size" : 1,
"tick_size" : 0.1,
"tick_frequency" : 1,
@ -160,10 +160,10 @@ class Axes(VGroup):
"x_axis_config" : {},
"y_axis_config" : {},
"z_axis_config" : {},
"x_min" : -SPACE_X_RADIUS,
"x_max" : SPACE_X_RADIUS,
"y_min" : -SPACE_Y_RADIUS,
"y_max" : SPACE_Y_RADIUS,
"x_min" : -FRAME_X_RADIUS,
"x_max" : FRAME_X_RADIUS,
"y_min" : -FRAME_Y_RADIUS,
"y_max" : FRAME_Y_RADIUS,
"z_min" : -3.5,
"z_max" : 3.5,
"z_normal" : DOWN,
@ -276,10 +276,10 @@ class NumberPlane(VMobject):
}
def generate_points(self):
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
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.axes = VMobject()
self.main_lines = VMobject()

View file

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

View file

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