From bd89056c8e78297645bc253e4ff3a87dce3da133 Mon Sep 17 00:00:00 2001 From: Grant Sanderson Date: Thu, 2 Feb 2023 14:29:37 -0800 Subject: [PATCH] Only recalculate outer_vert_indices when points are resized --- manimlib/mobject/types/vectorized_mobject.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/manimlib/mobject/types/vectorized_mobject.py b/manimlib/mobject/types/vectorized_mobject.py index a9d2abf3..f54d18ec 100644 --- a/manimlib/mobject/types/vectorized_mobject.py +++ b/manimlib/mobject/types/vectorized_mobject.py @@ -1053,13 +1053,22 @@ class VMobject(Mobject): vmob.pointwise_become_partial(self, a, b) return vmob + def resize_points( + self, + new_length: int, + resize_func: Callable[[np.ndarray, int], np.ndarray] = resize_array + ) -> Self: + super().resize_points(new_length, resize_func) + + n_curves = self.get_num_curves() + # Creates the pattern (0, 1, 2, 2, 3, 4, 4, 5, 6, ...) + self.outer_vert_indices = (np.arange(1, 3 * n_curves + 1) * 2) // 3 + return self + def get_outer_vert_indices(self) -> np.ndarray: """ Returns the pattern (0, 1, 2, 2, 3, 4, 4, 5, 6, ...) """ - n_curves = self.get_num_curves() - if len(self.outer_vert_indices) != 3 * n_curves: - self.outer_vert_indices = (np.arange(1, 3 * n_curves + 1) * 2) // 3 return self.outer_vert_indices # Data for shaders that may need refreshing