Fast Showcase

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

        frac = Fraction("x-1", "x+1")
        root = Root(frac)

        tex = MathTex(root)
        self.add(tex).wait(1)

        root_n = Root(frac.numerator,   symbol=root.symbol)
        root_d = Root(frac.denominator, symbol=root.symbol)

        tex[0] = Fraction(root_n, root_d, vinculum=frac.vinculum)

        self.play(TransformInStages.progress(tex))


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

        a = MathTex("0", color=GREEN)
        b = MathTex("\pi", color=GREEN)

        integral = Integral("\cos(x) \: dx", a, b)

        tex = MathTex(integral)
        self.add(tex).wait(1)


        tex.terms = [
            integral,
            "=",
            [ Function("\sin", b), "-", Function("\sin", a) ]
        ]

        self.play(TransformInStages.progress(tex))


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

        a, x, m, y = MathTex("a", "x", "-", "y")

        tex = MathTex(a, Parentheses([ x, m, y ]))
        self.add(tex).wait(1)

        m.save_y()
        tex.terms = [[a, x], m, [a, y]]
        m.restore_y()
        self.play(TransformInStages.progress(tex, lag_ratio=0))


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

        a = MathTex("a", color=RED)
        b = MathTex("b", color=BLUE)
        c = MathTex("c", color=GREEN)

        tex = MathTex([[ a, "x^2" ], "+", [ b, "x" ], "+", [ c ]], "=", 0)
        self.add(tex).wait(1)

        b.swap(lambda: Fraction(b, a.pop()))
        c.swap(lambda: Fraction(c, a))

        self.play(TransformInStages.progress(tex))