mirror of
https://github.com/3b1b/manim.git
synced 2025-04-13 09:47:07 +00:00
More direct lerp in Mobject.interpolate
This commit is contained in:
parent
e796a0c6d6
commit
a8ef9629eb
1 changed files with 9 additions and 12 deletions
|
@ -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:
|
||||||
|
|
Loading…
Add table
Reference in a new issue