From 2f955b6a994fb1deb851220e1417cf0dc4c96953 Mon Sep 17 00:00:00 2001 From: Irvanal Haq Date: Wed, 16 Apr 2025 17:02:44 +0700 Subject: [PATCH 1/2] Fix add_points_as_corners not connecting single point to existing path --- manim/mobject/types/vectorized_mobject.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manim/mobject/types/vectorized_mobject.py b/manim/mobject/types/vectorized_mobject.py index 321fe4287b..9323e1e2fc 100644 --- a/manim/mobject/types/vectorized_mobject.py +++ b/manim/mobject/types/vectorized_mobject.py @@ -1061,8 +1061,8 @@ def add_points_as_corners(self, points: Point3DLike_Array) -> Self: end_corners = points self.points = self.points[:-1] else: - start_corners = points[:-1] - end_corners = points[1:] + start_corners = np.vstack([self.points[-1], points[:-1]]) + end_corners = points nppcc = self.n_points_per_cubic_curve new_points = np.empty((nppcc * start_corners.shape[0], self.dim)) From 682f38ce4bb1d60cb1e9e8f44908af8b69f0086c Mon Sep 17 00:00:00 2001 From: Irvanal Haq Date: Thu, 22 May 2025 22:22:17 +0700 Subject: [PATCH 2/2] Refactor add_points_as_corners per review feedback --- manim/mobject/types/vectorized_mobject.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/manim/mobject/types/vectorized_mobject.py b/manim/mobject/types/vectorized_mobject.py index 9323e1e2fc..f2119c4c87 100644 --- a/manim/mobject/types/vectorized_mobject.py +++ b/manim/mobject/types/vectorized_mobject.py @@ -1047,22 +1047,21 @@ def add_points_as_corners(self, points: Point3DLike_Array) -> Self: The VMobject itself, after appending the straight lines to its path. """ + self.throw_error_if_no_points() + points = np.asarray(points).reshape(-1, self.dim) num_points = points.shape[0] if num_points == 0: return self + start_corners = np.empty((num_points, self.dim)) + start_corners[0] = self.points[-1] + start_corners[1:] = points[:-1] + end_corners = points + if self.has_new_path_started(): - # Pop the last point from self.points and - # add it to start_corners - start_corners = np.empty((num_points, self.dim)) - start_corners[0] = self.points[-1] - start_corners[1:] = points[:-1] - end_corners = points + # Remove the last point from the new path self.points = self.points[:-1] - else: - start_corners = np.vstack([self.points[-1], points[:-1]]) - end_corners = points nppcc = self.n_points_per_cubic_curve new_points = np.empty((nppcc * start_corners.shape[0], self.dim))