mirror of
https://github.com/3b1b/manim.git
synced 2025-08-05 16:49:03 +00:00
updating_mobject_from_func -> always_redraw
This commit is contained in:
parent
33afad478c
commit
94d7a8a663
11 changed files with 48 additions and 48 deletions
|
@ -99,8 +99,8 @@ class ShowShadows(ThreeDScene):
|
|||
self.gamma_tracker = ValueTracker(0)
|
||||
|
||||
def setup_object_and_shadow(self):
|
||||
self.obj3d = updating_mobject_from_func(self.get_reoriented_object)
|
||||
self.shadow = updating_mobject_from_func(lambda: get_shadow(self.obj3d))
|
||||
self.obj3d = always_redraw(self.get_reoriented_object)
|
||||
self.shadow = always_redraw(lambda: get_shadow(self.obj3d))
|
||||
|
||||
def add_shadow_area_label(self):
|
||||
text = TextMobject("Shadow area: ")
|
||||
|
@ -145,7 +145,7 @@ class ShowShadows(ThreeDScene):
|
|||
# Show creation
|
||||
obj3d = self.obj3d.copy()
|
||||
obj3d.clear_updaters()
|
||||
temp_shadow = updating_mobject_from_func(lambda: get_shadow(obj3d))
|
||||
temp_shadow = always_redraw(lambda: get_shadow(obj3d))
|
||||
self.add(temp_shadow)
|
||||
self.move_camera(
|
||||
**self.initial_orientation_config,
|
||||
|
|
|
@ -13,7 +13,7 @@ from manimlib.animation.fading import FadeIn
|
|||
from manimlib.animation.fading import FadeOut
|
||||
from manimlib.animation.transform import Transform
|
||||
from manimlib.animation.update import UpdateFromAlphaFunc
|
||||
from manimlib.mobject.mobject_update_utils import updating_mobject_from_func
|
||||
from manimlib.mobject.mobject_update_utils import always_redraw
|
||||
from manimlib.mobject.mobject import Mobject
|
||||
from manimlib.mobject.types.vectorized_mobject import VMobject
|
||||
from manimlib.mobject.geometry import Circle
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
def updating_mobject_from_func(func):
|
||||
def always_redraw(func):
|
||||
mob = func()
|
||||
mob.add_updater(lambda m: mob.become(func()))
|
||||
return mob
|
||||
|
|
|
@ -106,7 +106,7 @@ class UnexpectedConnection(Scene):
|
|||
stroke_width=5
|
||||
).shift(center)
|
||||
|
||||
arc = updating_mobject_from_func(get_arc)
|
||||
arc = always_redraw(get_arc)
|
||||
|
||||
decimal = DecimalNumber(0)
|
||||
decimal.add_updater(
|
||||
|
@ -613,7 +613,7 @@ class FunctionGInputSpace(SpecialThreeDScene):
|
|||
|
||||
def show_antipodal_point(self):
|
||||
path = self.get_antipodal_path()
|
||||
end_dot = updating_mobject_from_func(
|
||||
end_dot = always_redraw(
|
||||
lambda: self.get_dot(
|
||||
path[-1].point_from_proportion(1)
|
||||
).set_color(RED)
|
||||
|
@ -701,7 +701,7 @@ class FunctionGInputSpace(SpecialThreeDScene):
|
|||
self.add(self.tracked_point)
|
||||
|
||||
def init_dot(self):
|
||||
self.dot = updating_mobject_from_func(
|
||||
self.dot = always_redraw(
|
||||
lambda: self.get_dot(self.tracked_point.get_center())
|
||||
)
|
||||
|
||||
|
|
|
@ -2055,7 +2055,7 @@ class AddTwoThetaManyTimes(Scene):
|
|||
result[1].scale(1.5, about_edge=LEFT)
|
||||
return result
|
||||
|
||||
comp_pi = updating_mobject_from_func(get_comp_pi)
|
||||
comp_pi = always_redraw(get_comp_pi)
|
||||
|
||||
return VGroup(int_mob, tex_mob, rhs, comp_pi)
|
||||
|
||||
|
@ -2548,7 +2548,7 @@ class ActanAndTanGraphs(GraphScene):
|
|||
label.next_to(graph.point_from_proportion(0.75), LEFT)
|
||||
|
||||
arctan_x_tracker = ValueTracker(3 * PI / 8)
|
||||
arctan_v_line = updating_mobject_from_func(
|
||||
arctan_v_line = always_redraw(
|
||||
lambda: self.get_vertical_line_to_graph(
|
||||
arctan_x_tracker.get_value(),
|
||||
arctan_graph,
|
||||
|
@ -2557,7 +2557,7 @@ class ActanAndTanGraphs(GraphScene):
|
|||
)
|
||||
)
|
||||
tan_x_tracker = ValueTracker(2 * PI / 8)
|
||||
tan_v_line = updating_mobject_from_func(
|
||||
tan_v_line = always_redraw(
|
||||
lambda: self.get_vertical_line_to_graph(
|
||||
tan_x_tracker.get_value(),
|
||||
tan_graph,
|
||||
|
@ -2643,7 +2643,7 @@ class UnitCircleIntuition(Scene):
|
|||
circle.get_center(),
|
||||
circle.point_at_angle(get_theta())
|
||||
)
|
||||
r_line = updating_mobject_from_func(get_r_line)
|
||||
r_line = always_redraw(get_r_line)
|
||||
|
||||
def get_arc(radius=None, **kwargs):
|
||||
if radius is None:
|
||||
|
@ -2656,8 +2656,8 @@ class UnitCircleIntuition(Scene):
|
|||
arc_center=circle.get_center(),
|
||||
**kwargs
|
||||
)
|
||||
arc = updating_mobject_from_func(get_arc)
|
||||
self.circle_arc = updating_mobject_from_func(
|
||||
arc = always_redraw(get_arc)
|
||||
self.circle_arc = always_redraw(
|
||||
lambda: get_arc(radius=circle.radius, color=RED)
|
||||
)
|
||||
|
||||
|
@ -2670,7 +2670,7 @@ class UnitCircleIntuition(Scene):
|
|||
vect = (get_norm(vect) + 2 * SMALL_BUFF) * normalize(vect)
|
||||
label.move_to(center + vect)
|
||||
return label
|
||||
theta_label = updating_mobject_from_func(get_theta_label)
|
||||
theta_label = always_redraw(get_theta_label)
|
||||
|
||||
def get_height_line():
|
||||
p2 = circle.point_at_angle(get_theta())
|
||||
|
@ -2681,7 +2681,7 @@ class UnitCircleIntuition(Scene):
|
|||
stroke_color=YELLOW,
|
||||
stroke_width=3,
|
||||
)
|
||||
self.height_line = updating_mobject_from_func(get_height_line)
|
||||
self.height_line = always_redraw(get_height_line)
|
||||
|
||||
def get_width_line():
|
||||
p2 = circle.get_center()
|
||||
|
@ -2692,7 +2692,7 @@ class UnitCircleIntuition(Scene):
|
|||
stroke_color=PINK,
|
||||
stroke_width=3,
|
||||
)
|
||||
self.width_line = updating_mobject_from_func(get_width_line)
|
||||
self.width_line = always_redraw(get_width_line)
|
||||
|
||||
def get_h_label():
|
||||
label = TexMobject("h")
|
||||
|
@ -2702,7 +2702,7 @@ class UnitCircleIntuition(Scene):
|
|||
label.set_stroke(BLACK, 3, background=True)
|
||||
label.next_to(height_line, RIGHT, SMALL_BUFF)
|
||||
return label
|
||||
self.h_label = updating_mobject_from_func(get_h_label)
|
||||
self.h_label = always_redraw(get_h_label)
|
||||
|
||||
def get_w_label():
|
||||
label = TexMobject("w")
|
||||
|
@ -2710,7 +2710,7 @@ class UnitCircleIntuition(Scene):
|
|||
label.match_color(width_line)
|
||||
label.next_to(width_line, DOWN, SMALL_BUFF)
|
||||
return label
|
||||
self.w_label = updating_mobject_from_func(get_w_label)
|
||||
self.w_label = always_redraw(get_w_label)
|
||||
|
||||
self.add(r_line, theta_label, arc, self.radius_line)
|
||||
self.play(
|
||||
|
|
|
@ -99,7 +99,7 @@ class MirrorScene(Scene):
|
|||
return mirrors
|
||||
|
||||
def get_arc(self, radius=0.5):
|
||||
return updating_mobject_from_func(lambda: Arc(
|
||||
return always_redraw(lambda: Arc(
|
||||
start_angle=0,
|
||||
angle=self.get_theta(),
|
||||
arc_center=self.get_center(),
|
||||
|
@ -483,7 +483,7 @@ class ReflectWorldThroughMirrorNew(MirrorScene):
|
|||
rw[0].set_fill(opacity=0.25)
|
||||
|
||||
def create_reflected_trajectories(self):
|
||||
self.reflected_trajectories = updating_mobject_from_func(
|
||||
self.reflected_trajectories = always_redraw(
|
||||
lambda: self.get_reflected_worlds(self.trajectory)
|
||||
)
|
||||
|
||||
|
@ -951,7 +951,7 @@ class MirrorAndWiresOverlay(MirrorScene):
|
|||
angle=dl_wire.get_angle(),
|
||||
**arc_config,
|
||||
)
|
||||
dl_arc = updating_mobject_from_func(get_dl_arc)
|
||||
dl_arc = always_redraw(get_dl_arc)
|
||||
|
||||
def get_dr_arc():
|
||||
return Arc(
|
||||
|
@ -959,7 +959,7 @@ class MirrorAndWiresOverlay(MirrorScene):
|
|||
angle=dr_wire.get_angle() - PI,
|
||||
**arc_config,
|
||||
)
|
||||
dr_arc = updating_mobject_from_func(get_dr_arc)
|
||||
dr_arc = always_redraw(get_dr_arc)
|
||||
|
||||
incidence = TextMobject("Incidence")
|
||||
reflection = TextMobject("Reflection")
|
||||
|
|
|
@ -470,7 +470,7 @@ class PositionPhaseSpaceScene(Scene):
|
|||
y_axis_point, point,
|
||||
**self.ps_x_line_config,
|
||||
)
|
||||
self.x_line = updating_mobject_from_func(get_x_line)
|
||||
self.x_line = always_redraw(get_x_line)
|
||||
return self.x_line
|
||||
|
||||
def get_phase_space_y_line(self):
|
||||
|
@ -483,7 +483,7 @@ class PositionPhaseSpaceScene(Scene):
|
|||
x_axis_point, point,
|
||||
**self.ps_y_line_config,
|
||||
)
|
||||
self.y_line = updating_mobject_from_func(get_y_line)
|
||||
self.y_line = always_redraw(get_y_line)
|
||||
return self.y_line
|
||||
|
||||
def get_phase_space_dot(self):
|
||||
|
@ -541,7 +541,7 @@ class PositionPhaseSpaceScene(Scene):
|
|||
line.put_start_and_end_on(left_point, right_point)
|
||||
return Brace(line, UP, buff=SMALL_BUFF)
|
||||
|
||||
brace = updating_mobject_from_func(get_brace)
|
||||
brace = always_redraw(get_brace)
|
||||
return brace
|
||||
|
||||
def get_d1_brace(self):
|
||||
|
|
|
@ -161,7 +161,7 @@ class ShowDotProductMeaning(Scene):
|
|||
stroke_color=LIGHT_GREY,
|
||||
stroke_width=1,
|
||||
)
|
||||
w_line = updating_mobject_from_func(get_w_line)
|
||||
w_line = always_redraw(get_w_line)
|
||||
|
||||
def get_proj_v():
|
||||
center = dot.get_center()
|
||||
|
@ -172,7 +172,7 @@ class ShowDotProductMeaning(Scene):
|
|||
result.set_fill(v_vect.get_color(), 0.5)
|
||||
result.shift(center - result.get_start())
|
||||
return result
|
||||
proj_v = updating_mobject_from_func(get_proj_v)
|
||||
proj_v = always_redraw(get_proj_v)
|
||||
|
||||
def get_proj_line():
|
||||
return DashedLine(
|
||||
|
@ -181,7 +181,7 @@ class ShowDotProductMeaning(Scene):
|
|||
stroke_width=1,
|
||||
dash_length=0.025,
|
||||
)
|
||||
proj_line = updating_mobject_from_func(get_proj_line)
|
||||
proj_line = always_redraw(get_proj_line)
|
||||
|
||||
template_line = Line(LEFT, RIGHT)
|
||||
|
||||
|
@ -194,10 +194,10 @@ class ShowDotProductMeaning(Scene):
|
|||
brace.rotate(angle, about_point=ORIGIN)
|
||||
brace.shift(vect.get_center())
|
||||
return brace
|
||||
w_brace = updating_mobject_from_func(
|
||||
w_brace = always_redraw(
|
||||
lambda: get_vect_brace(w_vect)
|
||||
)
|
||||
proj_v_brace = updating_mobject_from_func(
|
||||
proj_v_brace = always_redraw(
|
||||
lambda: get_vect_brace(proj_v)
|
||||
)
|
||||
|
||||
|
@ -217,7 +217,7 @@ class ShowDotProductMeaning(Scene):
|
|||
center + 1.5 * (p - center)
|
||||
)
|
||||
return VGroup(arc, theta)
|
||||
arc = updating_mobject_from_func(get_arc)
|
||||
arc = always_redraw(get_arc)
|
||||
|
||||
self.add(
|
||||
title[:3],
|
||||
|
@ -464,7 +464,7 @@ class AskAboutAddingThetaToItself(Scene):
|
|||
result.set_color(get_color())
|
||||
result.move_to(ineq)
|
||||
return result
|
||||
dynamic_ineq = updating_mobject_from_func(get_ineq)
|
||||
dynamic_ineq = always_redraw(get_ineq)
|
||||
group.remove(ineq)
|
||||
group.add(dynamic_ineq)
|
||||
|
||||
|
|
|
@ -455,7 +455,7 @@ class ShowSeveralQuaternionRotations(SpecialThreeDScene):
|
|||
self.add(prism)
|
||||
|
||||
def add_axes(self):
|
||||
axes = self.axes = updating_mobject_from_func(self.get_axes)
|
||||
axes = self.axes = always_redraw(self.get_axes)
|
||||
self.add(axes)
|
||||
|
||||
def apply_quaternions(self):
|
||||
|
@ -659,7 +659,7 @@ class EulerAnglesAndGimbal(ShowSeveralQuaternionRotations):
|
|||
self.gamma_tracker = ValueTracker(0)
|
||||
|
||||
def setup_gimbal(self):
|
||||
gimbal = updating_mobject_from_func(self.get_gimbal)
|
||||
gimbal = always_redraw(self.get_gimbal)
|
||||
self.gimbal = gimbal
|
||||
self.add(gimbal)
|
||||
|
||||
|
@ -1245,7 +1245,7 @@ class RuleForQuaternionRotations(EulerAnglesAndGimbal):
|
|||
result.rotate(angle=angle, axis=axis, about_point=ORIGIN)
|
||||
return result
|
||||
|
||||
sphere = updating_mobject_from_func(get_sphere)
|
||||
sphere = always_redraw(get_sphere)
|
||||
|
||||
point_label = TexMobject(
|
||||
"p", "=",
|
||||
|
|
|
@ -2832,7 +2832,7 @@ class ShowRotationUnderStereographicProjection(IntroduceStereographicProjection)
|
|||
neg_one_dot = Dot(neg_one_point)
|
||||
neg_one_dot.set_fill(YELLOW)
|
||||
|
||||
lines = updating_mobject_from_func(self.get_lines)
|
||||
lines = always_redraw(self.get_lines)
|
||||
|
||||
def generate_dot_updater(circle_piece):
|
||||
return lambda d: d.move_to(circle_piece.points[0])
|
||||
|
|
|
@ -582,7 +582,7 @@ class UnfoldCircles(Scene):
|
|||
unwrap_factor_tracker = ValueTracker(0)
|
||||
|
||||
def get_circle(line):
|
||||
return updating_mobject_from_func(
|
||||
return always_redraw(
|
||||
lambda: self.get_unwrapped_circle(
|
||||
radius=radius, dr=self.dr,
|
||||
unwrap_factor=unwrap_factor_tracker.get_value(),
|
||||
|
@ -1073,7 +1073,7 @@ class SlantedShadowSquishing(ShowShadows):
|
|||
self.begin_ambient_camera_rotation(0.01)
|
||||
square = self.obj3d.deepcopy()
|
||||
square.clear_updaters()
|
||||
shadow = updating_mobject_from_func(lambda: get_shadow(square))
|
||||
shadow = always_redraw(lambda: get_shadow(square))
|
||||
|
||||
# Reorient
|
||||
self.add(square, shadow)
|
||||
|
@ -1998,13 +1998,13 @@ class SameEffectAsRotating(Scene):
|
|||
group.center()
|
||||
moving_rect = rect1.copy()
|
||||
|
||||
low_brace = updating_mobject_from_func(
|
||||
low_brace = always_redraw(
|
||||
lambda: Brace(
|
||||
moving_rect, DOWN, buff=SMALL_BUFF,
|
||||
min_num_quads=2,
|
||||
)
|
||||
)
|
||||
right_brace = updating_mobject_from_func(
|
||||
right_brace = always_redraw(
|
||||
lambda: Brace(
|
||||
moving_rect, RIGHT, buff=SMALL_BUFF,
|
||||
min_num_quads=2,
|
||||
|
@ -2331,7 +2331,7 @@ class WhatIsSurfaceArea(SpecialThreeDScene):
|
|||
self.add_fixed_in_frame_mobjects(title)
|
||||
|
||||
power_tracker = ValueTracker(1)
|
||||
surface = updating_mobject_from_func(
|
||||
surface = always_redraw(
|
||||
lambda: self.get_surface(
|
||||
radius=3,
|
||||
amplitude=1,
|
||||
|
@ -2484,7 +2484,7 @@ class UnwrappedCircleLogic(UnfoldCircles):
|
|||
).set_stroke(YELLOW, 2)
|
||||
return result
|
||||
|
||||
unwrapped_circle = updating_mobject_from_func(get_unwrapped_circle)
|
||||
unwrapped_circle = always_redraw(get_unwrapped_circle)
|
||||
circle = unwrapped_circle.copy()
|
||||
circle.clear_updaters()
|
||||
R_line = Line(circle.get_center(), circle.get_bottom())
|
||||
|
@ -2493,7 +2493,7 @@ class UnwrappedCircleLogic(UnfoldCircles):
|
|||
R_label.next_to(R_line, LEFT)
|
||||
circle_group = VGroup(circle, R_line, R_label)
|
||||
|
||||
tri_R_line = updating_mobject_from_func(
|
||||
tri_R_line = always_redraw(
|
||||
lambda: Line(
|
||||
ORIGIN, radius * DOWN
|
||||
).shift(center_tracker.get_center())
|
||||
|
@ -2515,7 +2515,7 @@ class UnwrappedCircleLogic(UnfoldCircles):
|
|||
self.wait()
|
||||
|
||||
# Change radius
|
||||
r_line = updating_mobject_from_func(
|
||||
r_line = always_redraw(
|
||||
lambda: Line(
|
||||
ORIGIN, get_r() * DOWN,
|
||||
stroke_width=2,
|
||||
|
@ -2930,7 +2930,7 @@ class SecondProof(SpecialThreeDScene):
|
|||
def show_theta(self):
|
||||
theta_tracker = ValueTracker(0)
|
||||
get_theta = theta_tracker.get_value
|
||||
theta_group = updating_mobject_from_func(
|
||||
theta_group = always_redraw(
|
||||
lambda: self.get_theta_group(get_theta())
|
||||
)
|
||||
theta_mob_opacity_tracker = ValueTracker(0)
|
||||
|
@ -2945,7 +2945,7 @@ class SecondProof(SpecialThreeDScene):
|
|||
)
|
||||
)
|
||||
|
||||
lit_ring = updating_mobject_from_func(
|
||||
lit_ring = always_redraw(
|
||||
lambda: self.get_ring_from_theta(
|
||||
self.rings, get_theta()
|
||||
).copy().set_color(YELLOW)
|
||||
|
@ -3113,7 +3113,7 @@ class SecondProof(SpecialThreeDScene):
|
|||
def ask_about_2_to_1_correspondance(self):
|
||||
theta_tracker = ValueTracker(0)
|
||||
get_theta = theta_tracker.get_value
|
||||
new_lit_ring = updating_mobject_from_func(
|
||||
new_lit_ring = always_redraw(
|
||||
lambda: self.get_ring_from_theta(
|
||||
self.rings, get_theta()
|
||||
).copy().set_color(PINK)
|
||||
|
|
Loading…
Add table
Reference in a new issue