我目前正在学习manim,我正在尝试复制3b1b的傅立叶绘图动画。(https://www.youtube.com/watch?v=-qgreAUpPwM) 我已经把一切都准备好了,动画的基本原理也在发挥作用。我唯一的问题是,它没有画出想要的数字。我目前正在使用valuetracker更新函数。为了获得正确的动画,我想我需要在每次更新之间有一个常数“dt”,但我不知道如何实现它。我不确定valuetracker是否是正确的方法。我试过在贝多芬教程8.3(https://www.youtube.com/watch?v=J6qT8YZQeOw&t=506s)的定理中使用“dt”。但我没能让它像那样工作
以下是更新动画中所有移动对象的代码:
def update_fct(c): # Updating mobject
for k in range(len(c)):
c[k].become(c[k].start)
for j in range(k): # nth Circles rotates around all circles before
c[k].rotate(TAU * values[j, 2] * alpha.get_value(), about_point=c[j].get_center())
dots[k].move_to(circles[k].points[0]) # move dots to new position
if k == N - 1: # Only track path of last dot
old_path = paths[k].copy()
old_path.append_vectorized_mobject(Line(old_path.points[-1], dots[k].get_center()))
old_path.make_smooth()
paths[k].become(old_path)
lines[k].put_start_and_end_on(circles[k].get_center(), dots[k].get_center()) # Update Arrow
circles.add_updater(update_fct)
self.add(circles,lines,paths[N-1]) # Only add circles, arrows and last path
self.play(
alpha.set_value, 1,
rate_func=linear,
run_time=10
)
circles.clear_updaters()
目前没有回答
相关问题 更多 >
编程相关推荐