From a8ef9629eb34813553bc5ab9ab239b047ce48c68 Mon Sep 17 00:00:00 2001 From: Grant Sanderson Date: Tue, 20 Aug 2024 09:10:33 -0500 Subject: [PATCH] More direct lerp in Mobject.interpolate --- manimlib/mobject/mobject.py | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/manimlib/mobject/mobject.py b/manimlib/mobject/mobject.py index 5c6d22ab..48bd9093 100644 --- a/manimlib/mobject/mobject.py +++ b/manimlib/mobject/mobject.py @@ -1810,26 +1810,23 @@ class Mobject(object): if keys: self.note_changed_data() for key in keys: - func = path_func if key in self.pointlike_data_keys else interpolate md1 = mobject1.data[key] md2 = mobject2.data[key] if key in self.const_data_keys: md1 = md1[0] md2 = md2[0] - self.data[key] = func(md1, md2, alpha) + if path_func in self.pointlike_data_keys: + self.data[key] = path_func(md1, md2, alpha) + else: + self.data[key] = (1 - alpha) * md1 + alpha * md2 - keys = [k for k in self.uniforms if k not in self.locked_uniform_keys] - for key in keys: + for key in self.uniforms: + if key in self.locked_uniform_keys: + continue if key not in mobject1.uniforms or key not in mobject2.uniforms: continue - self.uniforms[key] = interpolate( - mobject1.uniforms[key], - mobject2.uniforms[key], - alpha - ) - self.bounding_box[:] = path_func( - mobject1.bounding_box, mobject2.bounding_box, alpha - ) + self.uniforms[key] = (1 - alpha) * mobject1.uniforms[key] + alpha * mobject2.uniforms[key] + self.bounding_box[:] = path_func(mobject1.bounding_box, mobject2.bounding_box, alpha) return self def pointwise_become_partial(self, mobject, a, b) -> Self: