1

有一个分组的角度(两条线和一个弧)​​同时移动和旋转,取决于另一个Dot的位置,从视频来看,分组的角度落后于Dot,不知道为什么?下面是代码:

class MovRot(Scene):
    def construct(self):

        ln = Line(LEFT*2, LEFT*1+UP*1.5)
        self.add(ln)

        ln_ab = Line(LEFT*2, interpolate(LEFT*2, LEFT*1+UP*1.5, 0.7), color=RED_D)
        ln_bc = Line(LEFT*2, ORIGIN, color=RED_D)
        arc_b = Arc(0, ln_ab.get_angle(), radius=0.6, color=RED_D).move_arc_center_to(LEFT*2)
        grp_b = VGroup(ln_ab, ln_bc, arc_b)
        self.add(grp_b)

        dt = Dot(color=YELLOW_D).move_to(LEFT*2)
        grp_1 = grp_b.copy()

        def update_grp1(mob, alpha):
            mob.become(grp_1)
            mob.move_to(dt.get_center(), aligned_edge=arc_b.get_arc_center())
            mob.rotate(alpha*PI, about_point=arc_b.get_arc_center())

        self.add(grp_1, dt)
        self.play(UpdateFromAlphaFunc(grp_b, update_grp1, rate_func=smooth), dt.move_to, LEFT*1+UP*1.5,
                  rate_func=smooth,
                  run_time=2)

谢谢你的帮助。

4

1 回答 1

3

您总是必须在播放方法的开头编写“主”动画,在您的情况下,“接棒”的动画是move_to,所以它必须是第一个被编写的:

        self.play(
            dt.move_to, LEFT*1+UP*1.5,
            UpdateFromAlphaFunc(grp_b, update_grp1, rate_func=smooth), 
            rate_func=smooth,
            run_time=2
        )
于 2019-08-21T15:37:24.297 回答