diff --git a/manimlib/mobject/coordinate_systems.py b/manimlib/mobject/coordinate_systems.py index c8352532..c51bf4cc 100644 --- a/manimlib/mobject/coordinate_systems.py +++ b/manimlib/mobject/coordinate_systems.py @@ -770,13 +770,6 @@ class ComplexPlane(NumberPlane): axis = self.get_x_axis() value = z.real number_mob = axis.get_number_mobject(value, font_size=font_size, **kwargs) - # For -i, remove the "1" - if z.imag == -1: - number_mob.remove(number_mob[1]) - number_mob[0].next_to( - number_mob[1], LEFT, - buff=number_mob[0].get_width() / 4 - ) self.coordinate_labels.add(number_mob) self.add(self.coordinate_labels) return self diff --git a/manimlib/mobject/mobject.py b/manimlib/mobject/mobject.py index 7cd027d1..687f96f8 100644 --- a/manimlib/mobject/mobject.py +++ b/manimlib/mobject/mobject.py @@ -52,7 +52,7 @@ SubmobjectType = TypeVar('SubmobjectType', bound='Mobject') if TYPE_CHECKING: from typing import Callable, Iterator, Union, Tuple, Optional, Any import numpy.typing as npt - from manimlib.typing import ManimColor, Vect3, Vect4, Vect3Array, UniformDict, Self + from manimlib.typing import ManimColor, Vect3, Vect4Array, Vect3Array, UniformDict, Self from moderngl.context import Context T = TypeVar('T') @@ -163,7 +163,7 @@ class Mobject(object): def animate(self) -> _AnimationBuilder: """ Methods called with Mobject.animate.method() can be passed - into a Scene.play call, as if you were calling + into a Scene.play call, as if you were calling ApplyMethod(mobject.method) Borrowed from https://github.com/ManimCommunity/manim/ @@ -287,10 +287,7 @@ class Mobject(object): about_point = self.get_bounding_box_point(about_edge) for mob in self.get_family(): - arrs = [] - if mob.has_points(): - for key in mob.pointlike_data_keys: - arrs.append(mob.data[key]) + arrs = [mob.data[key] for key in mob.pointlike_data_keys if mob.has_points()] if works_on_bounding_box: arrs.append(mob.get_bounding_box()) @@ -1323,20 +1320,19 @@ class Mobject(object): def set_color_by_rgba_func( self, - func: Callable[[Vect3], Vect4], + func: Callable[[Vect3Array], Vect4Array], recurse: bool = True ) -> Self: """ Func should take in a point in R3 and output an rgba value """ for mob in self.get_family(recurse): - rgba_array = [func(point) for point in mob.get_points()] - mob.set_rgba_array(rgba_array) + mob.set_rgba_array(func(mob.get_points())) return self def set_color_by_rgb_func( self, - func: Callable[[Vect3], Vect3], + func: Callable[[Vect3Array], Vect3Array], opacity: float = 1, recurse: bool = True ) -> Self: @@ -1344,8 +1340,9 @@ class Mobject(object): Func should take in a point in R3 and output an rgb value """ for mob in self.get_family(recurse): - rgba_array = [[*func(point), opacity] for point in mob.get_points()] - mob.set_rgba_array(rgba_array) + points = mob.get_points() + opacity = np.ones((points.shape[0], 1)) * opacity + mob.set_rgba_array(np.hstack((func(points), opacity))) return self @affects_family_data diff --git a/manimlib/mobject/number_line.py b/manimlib/mobject/number_line.py index 9f9bc4d0..7f27f6a9 100644 --- a/manimlib/mobject/number_line.py +++ b/manimlib/mobject/number_line.py @@ -182,9 +182,13 @@ class NumberLine(Line): if x < 0 and direction[0] == 0: # Align without the minus sign num_mob.shift(num_mob[0].get_width() * LEFT / 2) - if x == unit and unit_tex: + if abs(x) == unit and unit_tex: center = num_mob.get_center() - num_mob.remove(num_mob[0]) + if x > 0: + num_mob.remove(num_mob[0]) + else: + num_mob.remove(num_mob[1]) + num_mob[0].next_to(num_mob[1], LEFT, buff=num_mob[0].get_width() / 4) num_mob.move_to(center) return num_mob