Transform与ReplacementTransform

TransformReplacementTransform之间的区别在于Transform(mob1, mob2)转换点mob1 (以及其他属性,如颜色)转换为mob2 的点/属性。

ReplacementTransform(mob1, mob2)另一方面,从字面上将 mob1on the scene 替换为 mob2

ReplacementTransformTransform 的使用主要取决于个人喜好。它们可用于实现相同的效果,如下所示。

class TwoTransforms(Scene):
    def transform(self):
        a = Circle()
        b = Square()
        c = Triangle()
        self.play(Transform(a, b))
        self.play(Transform(a, c))
        self.play(FadeOut(a))

    def replacement_transform(self):
        a = Circle()
        b = Square()
        c = Triangle()
        self.play(ReplacementTransform(a, b))
        self.play(ReplacementTransform(b, c))
        self.play(FadeOut(c))

    def construct(self):
        self.transform()
        self.wait(0.5)  # wait for 0.5 seconds
        self.replacement_transform()

但是,在某些情况下,使用Transform更有益,例如,当您一个接一个地变换多个 mobject 时。下面的代码避免了必须保留对最后一个已变换的 mobject 的引用。

class TransformCycle(Scene):
    def construct(self):
        a = Circle()
        t1 = Square()
        t2 = Triangle()
        self.add(a)
        self.wait()
        for t in [t1,t2]:
            self.play(Transform(a,t))

大功告成!

Last updated