mirror of
https://github.com/3b1b/manim.git
synced 2025-08-05 16:49:03 +00:00
Fixed bugs in partial_bezier_points and integer_interpolate
This commit is contained in:
parent
272c5f4deb
commit
55081c75ef
1 changed files with 7 additions and 1 deletions
|
@ -24,12 +24,16 @@ def partial_bezier_points(points, a, b):
|
||||||
|
|
||||||
This algorithm is pretty nifty, and pretty dense.
|
This algorithm is pretty nifty, and pretty dense.
|
||||||
"""
|
"""
|
||||||
|
if a == 1:
|
||||||
|
return [points[-1]] * len(points)
|
||||||
|
|
||||||
a_to_1 = np.array([
|
a_to_1 = np.array([
|
||||||
bezier(points[i:])(a)
|
bezier(points[i:])(a)
|
||||||
for i in range(len(points))
|
for i in range(len(points))
|
||||||
])
|
])
|
||||||
|
end_prop = (b - a) / (1. - a)
|
||||||
return np.array([
|
return np.array([
|
||||||
bezier(a_to_1[:i + 1])((b - a) / (1. - a))
|
bezier(a_to_1[:i + 1])(end_prop)
|
||||||
for i in range(len(points))
|
for i in range(len(points))
|
||||||
])
|
])
|
||||||
|
|
||||||
|
@ -54,6 +58,8 @@ def integer_interpolate(start, end, alpha):
|
||||||
"""
|
"""
|
||||||
if alpha >= 1:
|
if alpha >= 1:
|
||||||
return (end - 1, 1.0)
|
return (end - 1, 1.0)
|
||||||
|
if alpha <= 0:
|
||||||
|
return (start, 0)
|
||||||
value = int(interpolate(start, end, alpha))
|
value = int(interpolate(start, end, alpha))
|
||||||
residue = ((end - start) * alpha) % 1
|
residue = ((end - start) * alpha) % 1
|
||||||
return (value, residue)
|
return (value, residue)
|
||||||
|
|
Loading…
Add table
Reference in a new issue