More direct lerp in Mobject.interpolate

This commit is contained in:
Grant Sanderson 2024-08-20 09:10:33 -05:00
parent e796a0c6d6
commit a8ef9629eb

View file

@ -1810,26 +1810,23 @@ class Mobject(object):
if keys: if keys:
self.note_changed_data() self.note_changed_data()
for key in keys: for key in keys:
func = path_func if key in self.pointlike_data_keys else interpolate
md1 = mobject1.data[key] md1 = mobject1.data[key]
md2 = mobject2.data[key] md2 = mobject2.data[key]
if key in self.const_data_keys: if key in self.const_data_keys:
md1 = md1[0] md1 = md1[0]
md2 = md2[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 self.uniforms:
for key in keys: if key in self.locked_uniform_keys:
continue
if key not in mobject1.uniforms or key not in mobject2.uniforms: if key not in mobject1.uniforms or key not in mobject2.uniforms:
continue continue
self.uniforms[key] = interpolate( self.uniforms[key] = (1 - alpha) * mobject1.uniforms[key] + alpha * mobject2.uniforms[key]
mobject1.uniforms[key], self.bounding_box[:] = path_func(mobject1.bounding_box, mobject2.bounding_box, alpha)
mobject2.uniforms[key],
alpha
)
self.bounding_box[:] = path_func(
mobject1.bounding_box, mobject2.bounding_box, alpha
)
return self return self
def pointwise_become_partial(self, mobject, a, b) -> Self: def pointwise_become_partial(self, mobject, a, b) -> Self: