mirror of
https://github.com/3b1b/manim.git
synced 2025-08-05 16:49:03 +00:00
Fixed (most) uses of cmp functions for sorting
This commit is contained in:
parent
7f3b1e624d
commit
b04bddf35b
10 changed files with 29 additions and 23 deletions
|
@ -71,10 +71,9 @@ class IntroducePokerHand(PiCreatureScene, SampleSpaceScene):
|
||||||
card.set_height(community_cards.get_height())
|
card.set_height(community_cards.get_height())
|
||||||
|
|
||||||
selected_community_cards = VGroup(*[card for card in community_cards if card.numerical_value >= 10])
|
selected_community_cards = VGroup(*[card for card in community_cards if card.numerical_value >= 10])
|
||||||
card_cmp = lambda c1, c2 : cmp(
|
selected_community_cards.submobjects.sort(
|
||||||
c1.numerical_value, c2.numerical_value
|
key=lambda c: c.numerical_value
|
||||||
)
|
)
|
||||||
selected_community_cards.submobjects.sort(card_cmp)
|
|
||||||
|
|
||||||
selected_community_cards.save_state()
|
selected_community_cards.save_state()
|
||||||
for card in selected_community_cards:
|
for card in selected_community_cards:
|
||||||
|
@ -84,7 +83,9 @@ class IntroducePokerHand(PiCreatureScene, SampleSpaceScene):
|
||||||
you.hand.target,
|
you.hand.target,
|
||||||
[c.target for c in selected_community_cards]
|
[c.target for c in selected_community_cards]
|
||||||
))
|
))
|
||||||
straight_cards.submobjects.sort(card_cmp)
|
straight_cards.submobjects.sort(
|
||||||
|
key=lambda c: c.numerical_value
|
||||||
|
)
|
||||||
straight_cards.arrange_submobjects(RIGHT, buff = SMALL_BUFF)
|
straight_cards.arrange_submobjects(RIGHT, buff = SMALL_BUFF)
|
||||||
straight_cards.next_to(community_cards, UP, aligned_edge = LEFT)
|
straight_cards.next_to(community_cards, UP, aligned_edge = LEFT)
|
||||||
you.hand.target.shift(MED_SMALL_BUFF*UP)
|
you.hand.target.shift(MED_SMALL_BUFF*UP)
|
||||||
|
|
|
@ -829,10 +829,7 @@ class Mobject(Container):
|
||||||
|
|
||||||
def sort_submobjects(self, point_to_num_func=lambda p: p[0]):
|
def sort_submobjects(self, point_to_num_func=lambda p: p[0]):
|
||||||
self.submobjects.sort(
|
self.submobjects.sort(
|
||||||
lambda *mobs: cmp(*[
|
key=lambda m: point_to_num_func(mob.get_center())
|
||||||
point_to_num_func(mob.get_center())
|
|
||||||
for mob in mobs
|
|
||||||
])
|
|
||||||
)
|
)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
|
|
@ -2655,7 +2655,7 @@ class SearchSpacePerimeterVsArea(EquationSolver2d):
|
||||||
alt_path_parts = path_parts.copy()
|
alt_path_parts = path_parts.copy()
|
||||||
size = lambda m : m.get_height() + m.get_width()
|
size = lambda m : m.get_height() + m.get_width()
|
||||||
alt_path_parts.submobjects.sort(
|
alt_path_parts.submobjects.sort(
|
||||||
lambda m1, m2 : -cmp(size(m1), size(m2))
|
key=lambda m1: -size(m1)
|
||||||
)
|
)
|
||||||
|
|
||||||
full_rect = SurroundingRectangle(
|
full_rect = SurroundingRectangle(
|
||||||
|
|
|
@ -2011,7 +2011,7 @@ class VennDiagramProofByContradiction(Scene):
|
||||||
else:
|
else:
|
||||||
rejected.append((x, y))
|
rejected.append((x, y))
|
||||||
rejected.sort(
|
rejected.sort(
|
||||||
lambda (x1, y1), (x2, y2) : (x2**2 + y2**2) - (x1**2 + y1**2)
|
kay=lambda (x, y): (x**2 + y**2)
|
||||||
)
|
)
|
||||||
for i in range(len(photons) - len(pairs)):
|
for i in range(len(photons) - len(pairs)):
|
||||||
pairs.append(rejected.pop())
|
pairs.append(rejected.pop())
|
||||||
|
|
|
@ -21,7 +21,9 @@ class Jewel(VMobject):
|
||||||
self.set_height(self.height)
|
self.set_height(self.height)
|
||||||
self.rotate(-np.pi/2-np.pi/24, RIGHT)
|
self.rotate(-np.pi/2-np.pi/24, RIGHT)
|
||||||
self.rotate(-np.pi/12, UP)
|
self.rotate(-np.pi/12, UP)
|
||||||
self.submobjects.sort(lambda m1, m2 : cmp(-m1.get_center()[2], -m2.get_center()[2]))
|
self.submobjects.sort(
|
||||||
|
key=lambda m: -m1.get_center()[2]
|
||||||
|
)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
class Necklace(VMobject):
|
class Necklace(VMobject):
|
||||||
|
@ -210,7 +212,11 @@ class IntroduceStolenNecklaceProblem(ThreeDScene):
|
||||||
self.shuffle_jewels(jewels)
|
self.shuffle_jewels(jewels)
|
||||||
self.play(FadeOut(self.title))
|
self.play(FadeOut(self.title))
|
||||||
for jewel_type, label in zip(jewel_types, enumeration_labels):
|
for jewel_type, label in zip(jewel_types, enumeration_labels):
|
||||||
jewel_type.submobjects.sort(lambda m1, m2: cmp(m1.get_center()[0], m2.get_center()[0]))
|
jewel_type.submobjects.sort(
|
||||||
|
key=
|
||||||
|
y=lambda m: m1.get
|
||||||
|
)
|
||||||
|
)
|
||||||
jewel_type.save_state()
|
jewel_type.save_state()
|
||||||
jewel_type.generate_target()
|
jewel_type.generate_target()
|
||||||
jewel_type.target.arrange_submobjects()
|
jewel_type.target.arrange_submobjects()
|
||||||
|
@ -1298,7 +1304,9 @@ class MakeTwoJewelCaseContinuous(IntroduceStolenNecklaceProblem):
|
||||||
enumeration_labels.to_edge(UP)
|
enumeration_labels.to_edge(UP)
|
||||||
|
|
||||||
for jewel_type, label in zip(jewel_types, enumeration_labels):
|
for jewel_type, label in zip(jewel_types, enumeration_labels):
|
||||||
jewel_type.submobjects.sort(lambda m1, m2: cmp(m1.get_center()[0], m2.get_center()[0]))
|
jewel_type.submobjects.sort(
|
||||||
|
key=key=lambda mettr()[0]
|
||||||
|
|
||||||
jewel_type.save_state()
|
jewel_type.save_state()
|
||||||
jewel_type.generate_target()
|
jewel_type.generate_target()
|
||||||
jewel_type.target.arrange_submobjects()
|
jewel_type.target.arrange_submobjects()
|
||||||
|
@ -1352,7 +1360,7 @@ class MakeTwoJewelCaseContinuous(IntroduceStolenNecklaceProblem):
|
||||||
self.add(chain, jewels)
|
self.add(chain, jewels)
|
||||||
|
|
||||||
jewels.submobjects.sort(
|
jewels.submobjects.sort(
|
||||||
lambda m1, m2 : cmp(m1.get_center()[0], m2.get_center()[0])
|
key=lambda m: m.get_center()[0]
|
||||||
)
|
)
|
||||||
remaining_indices = list(range(len(jewels)))
|
remaining_indices = list(range(len(jewels)))
|
||||||
remaining_indices.remove(example_index)
|
remaining_indices.remove(example_index)
|
||||||
|
@ -1362,7 +1370,7 @@ class MakeTwoJewelCaseContinuous(IntroduceStolenNecklaceProblem):
|
||||||
self.remove(chain)
|
self.remove(chain)
|
||||||
segments = VGroup(example_segment[0], *remaining_segments)
|
segments = VGroup(example_segment[0], *remaining_segments)
|
||||||
segments.submobjects.sort(
|
segments.submobjects.sort(
|
||||||
lambda m1, m2 : cmp(m1.get_center()[0], m2.get_center()[0])
|
key=lambda m: m.get_center()[0]
|
||||||
)
|
)
|
||||||
segment_types = VGroup(*[
|
segment_types = VGroup(*[
|
||||||
VGroup(*[m for m in segments if m.get_color() == Color(color)])
|
VGroup(*[m for m in segments if m.get_color() == Color(color)])
|
||||||
|
|
|
@ -2365,7 +2365,7 @@ class IntroduceCurl(IntroduceVectorField):
|
||||||
**self.vector_field_config
|
**self.vector_field_config
|
||||||
)
|
)
|
||||||
vector_field.submobjects.sort(
|
vector_field.submobjects.sort(
|
||||||
lambda v1, v2: cmp(v1.get_length(), v2.get_length())
|
key=lambda v: v.get_length()
|
||||||
)
|
)
|
||||||
|
|
||||||
self.play(LaggedStart(GrowArrow, vector_field))
|
self.play(LaggedStart(GrowArrow, vector_field))
|
||||||
|
@ -2459,8 +2459,8 @@ class ShearCurl(IntroduceCurl):
|
||||||
vector_field = self.vector_field = VectorField(
|
vector_field = self.vector_field = VectorField(
|
||||||
self.func, **self.vector_field_config
|
self.func, **self.vector_field_config
|
||||||
)
|
)
|
||||||
vector_field.submobjects.sort(
|
vector_field.submobjects.key=sort(
|
||||||
lambda a1, a2: cmp(a1.get_length(), a2.get_length())
|
key=lambda a: a.get_length()
|
||||||
)
|
)
|
||||||
self.play(LaggedStart(GrowArrow, vector_field))
|
self.play(LaggedStart(GrowArrow, vector_field))
|
||||||
|
|
||||||
|
@ -2951,7 +2951,7 @@ class IllustrateGaussMagnetic(IllustrateGaussLaw):
|
||||||
self.func, **self.vector_field_config
|
self.func, **self.vector_field_config
|
||||||
)
|
)
|
||||||
vector_field.submobjects.sort(
|
vector_field.submobjects.sort(
|
||||||
lambda a1, a2: -cmp(a1.get_length(), a2.get_length())
|
key=lambda a: -a1.get_length()
|
||||||
)
|
)
|
||||||
self.play(LaggedStart(GrowArrow, vector_field))
|
self.play(LaggedStart(GrowArrow, vector_field))
|
||||||
self.add_foreground_mobjects(
|
self.add_foreground_mobjects(
|
||||||
|
|
|
@ -1544,7 +1544,7 @@ class PowerRuleAlgebra(Scene):
|
||||||
xs_copy.generate_target()
|
xs_copy.generate_target()
|
||||||
target_list = [dx_copy.target] + list(xs_copy.target)
|
target_list = [dx_copy.target] + list(xs_copy.target)
|
||||||
target_list.sort(
|
target_list.sort(
|
||||||
lambda m1, m2 : cmp(m1.get_center()[0], m2.get_center()[0])
|
key=lambda m: m.get_center()[0]
|
||||||
)
|
)
|
||||||
dots = TexMobject("+", ".", ".", "\\dots")
|
dots = TexMobject("+", ".", ".", "\\dots")
|
||||||
for dot_index, dot in enumerate(dots):
|
for dot_index, dot in enumerate(dots):
|
||||||
|
|
|
@ -649,7 +649,7 @@ class VectorsToDotsScene(VectorScene):
|
||||||
run_time = 3
|
run_time = 3
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
vectors.sort(lambda v1, v2 : int(np.sign(v2.get_length() - v1.get_length())))
|
vectors.sort(key=lambda v: v.get_length())
|
||||||
self.add(*vectors)
|
self.add(*vectors)
|
||||||
def v_to_dot(vector):
|
def v_to_dot(vector):
|
||||||
return Dot(vector.get_end(), fill_color = vector.get_stroke_color())
|
return Dot(vector.get_end(), fill_color = vector.get_stroke_color())
|
||||||
|
|
|
@ -1616,7 +1616,7 @@ class HowToTranslateAMatrix(Scene):
|
||||||
array.top_brace = Brace(VGroup(array, her_vector), UP)
|
array.top_brace = Brace(VGroup(array, her_vector), UP)
|
||||||
for array in cob_matrix, inv_cob:
|
for array in cob_matrix, inv_cob:
|
||||||
submobs = array.split()
|
submobs = array.split()
|
||||||
submobs.sort(lambda m1, m2: cmp(m1.get_center()[0], m2.get_center()[0]))
|
submobs.sort(key=lambda m: m.get_center()[0])
|
||||||
array.submobjects = submobs
|
array.submobjects = submobs
|
||||||
her_vector.set_color(MAROON_B)
|
her_vector.set_color(MAROON_B)
|
||||||
cob_matrix.set_color_by_gradient(BLUE, MAROON_B)
|
cob_matrix.set_color_by_gradient(BLUE, MAROON_B)
|
||||||
|
|
|
@ -689,7 +689,7 @@ class IntroduceElectricField(PiCreatureScene):
|
||||||
])
|
])
|
||||||
shading_list = list(result)
|
shading_list = list(result)
|
||||||
shading_list.sort(
|
shading_list.sort(
|
||||||
lambda m1, m2 : cmp(m1.get_length(), m2.get_length())
|
key=lambda m: m1.get_length()
|
||||||
)
|
)
|
||||||
VGroup(*shading_list).set_color_by_gradient(*self.vector_field_colors)
|
VGroup(*shading_list).set_color_by_gradient(*self.vector_field_colors)
|
||||||
result.set_fill(opacity = 0.75)
|
result.set_fill(opacity = 0.75)
|
||||||
|
|
Loading…
Add table
Reference in a new issue