manim 废弃源码

%%manim -v WARNING -qh s1
class s1(Scene):
    def construct(self):
        name = Text("海    子    之    春", font="STZhongsong").set_color_by_gradient(WHITE, PINK)
        svg = SVGMobject(r"D:\manimSVG\DANDADAN.svg").set_color_by_gradient(WHITE, PINK).scale(4)
        self.play(LaggedStart(DrawBorderThenFill(svg)))
        self.wait(0.5)
        self.play(Transform(svg,name))
        self.wait(0.5)
        self.play(FadeOut(svg))
%%manim -v WARNING -qh s2
class s2(Scene):
    def construct(self):
        t1 = Text("立体化学是研究分子的立体结构、反应的立体性及其相关规律和应用的科学。", font="STZhongsong").scale(0.6)
        t2 = Text("其中前者属于静态立体化学,后者属于动态立体化学。", font="STZhongsong").scale(0.6).next_to(t1,DOWN)
        v1 = VGroup(t1,t2)
        t3 = t1[7:14].copy().set_color(RED)
        t4 = t1[15:21].copy().set_color(BLUE)
        self.play(DrawBorderThenFill(v1))
        self.play(t1[7:14].animate.set_color(RED))
        self.play(Transform(t3,t2[2:4]),t2[2:4].animate.set_color(RED))
        self.play(t1[15:21].animate.set_color(BLUE))
        self.play(Transform(t4,t2[13:15]), t2[13:15].animate.set_color(BLUE))
        self.remove(t3,t4)
        self.wait()
        self.play(FadeOut(v1))
        self.wait()
%%manim -v WARNING -qh s3
class s3(Scene):
    def construct(self):
        t0 = Text("碳原子轨道的杂化", font="STZhongsong")
        self.play(DrawBorderThenFill(t0))
        self.wait(0.5)
        # 注意此时的碳为t0变换过去的
        C = Text("C", font="Sitka Banner").scale(3)
        self.play(Transform(t0,C))
        orbit = MathTex("2s^22p_x^12p_y^12p_z^0")
        t1 = Text("最外层电子", font="STZhongsong").scale(0.5).next_to(orbit, DOWN)
        v1 = VGroup(orbit, t1).next_to(t0, DOWN)
        self.play(GrowFromPoint(v1, v1.get_center(), rate_func=rate_functions.smooth))
        self.wait()
        self.play(FadeOut(t1, rate_func=rate_functions.smooth), t0.animate.scale(0.5))   
        self.play(t0.animate.move_to(np.array([-3,1.5,0])), orbit.animate.move_to(np.array([2,1.5,0])), rate_func=rate_functions.smooth)
        # 注意要在移动之后再定位(.get_center())
        a1 = SVGMobject(r"D:\manimSVG\axis.svg").scale(0.03).scale(0.8).move_to(t0.get_center())
        a2 = a1.copy().rotate(45*DEGREES)
        a3 = a1.copy().rotate(90*DEGREES)
        self.play(GrowFromPoint(a1, t0.get_center(), rate_func=rate_functions.smooth), GrowFromPoint(a2, t0.get_center(), rate_func=rate_functions.smooth), GrowFromPoint(a3, t0.get_center(), rate_func=rate_functions.smooth))
        s = SVGMobject(r"D:\manimSVG\s.svg").scale(0.8)
        px = SVGMobject(r"D:\manimSVG\p.svg").rotate(135*DEGREES).next_to(s, RIGHT, buff=1.6)
        py = SVGMobject(r"D:\manimSVG\p.svg").rotate(270*DEGREES).next_to(px, RIGHT, buff=1.6)
        pz = SVGMobject(r"D:\manimSVG\p.svg").next_to(py, RIGHT, buff=1.6)
        v2 = VGroup(s, px, py, pz).move_to(np.array([0,-1.5,0]))
        s0 = t0.copy()
        px0 = a2.copy()
        py0 = a1.copy()
        pz0 = a3.copy()
        self.play(Transform(s0,s))
        self.play(Transform(px0,px))
        self.play(Transform(py0,py))
        self.play(Transform(pz0,pz))
        o1 = MathTex("s").move_to(s.get_center()+1.5*DOWN).scale(1.3)
        o2 = MathTex("p_x").move_to(px.get_center()+1.5*DOWN).scale(1.3)
        o3 = MathTex("p_y").move_to(py.get_center()+1.5*DOWN).scale(1.3)
        o4 = MathTex("p_z").move_to(pz.get_center()+1.5*DOWN).scale(1.3)
        v3 = VGroup(o1, o2, o3, o4)
        self.play(Write(v3))
        self.wait()
        d1 = Dot(s.get_center() + 0.4*LEFT, color=BLUE)
        d2 = Dot(s.get_center() + 0.4*RIGHT, color=BLUE)
        d3 = Dot(px.get_center() + 0.5*LEFT + 0.5*DOWN, color=BLUE)
        d4 = Dot(py.get_center() + 0.7*RIGHT, color=BLUE)
        self.play(GrowFromPoint(d1, d1.get_center(), rate_func=rate_functions.smooth), GrowFromPoint(d2, d2.get_center(), rate_func=rate_functions.smooth), GrowFromPoint(d3, d3.get_center(), rate_func=rate_functions.smooth), GrowFromPoint(d4, d4.get_center(), rate_func=rate_functions.smooth))      
        self.play(
            Rotate(d1,angle=2*PI,about_point=s.get_center(), rate_func=rate_functions.smooth),
            Rotate(d2,angle=2*PI,about_point=s.get_center(), rate_func=rate_functions.smooth),
            Rotate(d3,angle=2*PI,about_point=px.get_center() + 0.4*LEFT + 0.4*DOWN, rate_func=rate_functions.smooth),
            Rotate(d4,angle=2*PI,about_point=py.get_center() + 0.56*RIGHT, rate_func=rate_functions.smooth)
        )
        self.wait()
        # sp3
        v4 = VGroup(a1,a2,a3,s0,px0,py0,pz0,d1,d2,d3,d4)
        sp3 = SVGMobject(r"D:\manimSVG\sp3.svg").move_to(t0.get_center()).scale(1.5)
        orbit2 = MathTex("sp^3").move_to(orbit.get_center())
        self.play(Transform(v4,sp3), Transform(orbit, orbit2))
        self.play(FadeOut(v3), orbit.animate.scale(2))
        self.wait()
        sp31 = SVGMobject(r"D:\manimSVG\hybrid.svg")
        sp32 = sp31.copy().rotate(-105*DEGREES).next_to(sp31, RIGHT, buff=1.6)
        sp33 = sp31.copy().rotate(-150*DEGREES).next_to(sp32, RIGHT, buff=1.6)
        sp34 = sp31.copy().rotate(120*DEGREES).next_to(sp33, RIGHT, buff=1.6)
        v6 = VGroup(sp31,sp32,sp33,sp34).move_to(np.array([0,-1.5,0]))
        sp310 = v4[0:6].copy()
        sp320 = v4[6:12].copy()
        sp330 = v4[18:24].copy()
        sp340 = v4[12:18].copy()
        self.play(Transform(sp310, sp31))
        self.play(Transform(sp320, sp32))
        self.play(Transform(sp330, sp33))
        self.play(Transform(sp340, sp34))
        oo1 = MathTex("sp^3").move_to(sp310.get_center()+1.5*DOWN).scale(1.3)
        oo2 = MathTex("sp^3").move_to(sp320.get_center()+1.5*DOWN).scale(1.3)
        oo3 = MathTex("sp^3").move_to(sp330.get_center()+1.5*DOWN).scale(1.3)
        oo4 = MathTex("sp^3").move_to(sp340.get_center()+1.5*DOWN).scale(1.3)
        ooo1 = MathTex(r"\frac{1}{4} s+\frac{3}{4} p").move_to(oo1.get_center())
        ooo2 = MathTex(r"\frac{1}{4} s+\frac{3}{4} p").move_to(oo2.get_center())
        ooo3 = MathTex(r"\frac{1}{4} s+\frac{3}{4} p").move_to(oo3.get_center())
        ooo4 = MathTex(r"\frac{1}{4} s+\frac{3}{4} p").move_to(oo4.get_center())
        v5 = VGroup(oo1, oo2, oo3, oo4)
        self.play(Write(v5))
        self.play(Transform(oo1,ooo1), Transform(oo2,ooo2), Transform(oo3,ooo3), Transform(oo4,ooo4))
        dd1 = Dot(sp310.get_center() + 0.6*UP, color=BLUE)
        dd2 = Dot(sp320.get_center() + 0.5*RIGHT + 0.15*DOWN, color=BLUE)
        dd3 = Dot(sp330.get_center() + 0.2*RIGHT + 0.6*DOWN, color=BLUE)
        dd4 = Dot(sp340.get_center() + 0.6*LEFT + 0.3*DOWN, color=BLUE)
        dv = VGroup(dd1,dd2,dd3,dd4)
        self.play(GrowFromPoint(dd1, dd1.get_center(), rate_func=rate_functions.smooth), GrowFromPoint(dd2, dd2.get_center(), rate_func=rate_functions.smooth), GrowFromPoint(dd3, dd3.get_center(), rate_func=rate_functions.smooth), GrowFromPoint(dd4, dd4.get_center(), rate_func=rate_functions.smooth))      
        self.play(
            Rotate(dd1,angle=2*PI,about_point=dd1.get_center() + 0.2*DOWN, rate_func=rate_functions.smooth),
            Rotate(dd2,angle=2*PI,about_point=dd2.get_center() + 0.1*UP + 0.1*LEFT, rate_func=rate_functions.smooth),
            Rotate(dd3,angle=2*PI,about_point=dd3.get_center() + 0.2*UP, rate_func=rate_functions.smooth),
            Rotate(dd4,angle=2*PI,about_point=dd4.get_center() + 0.1*UP + 0.1*RIGHT, rate_func=rate_functions.smooth)
        )
        # sp2
        v7 = VGroup(v4,sp310,sp320,sp330,sp340,dd1,dd2,dd3,dd4)
        sp2 = SVGMobject(r"D:\manimSVG\sp2.svg").move_to(t0.get_center()).scale(1.5)
        orbit3 = MathTex("sp^2").move_to(orbit.get_center())
        self.play(Transform(v7,sp2), Transform(orbit, orbit3))
        self.play(FadeOut(v5), orbit.animate.scale(2))
        self.wait()
        sp21 = SVGMobject(r"D:\manimSVG\hybrid.svg").rotate(-90*DEGREES)
        sp22 = SVGMobject(r"D:\manimSVG\hybrid.svg").rotate(45*DEGREES).next_to(sp21, RIGHT, buff=1.6)
        sp23 = SVGMobject(r"D:\manimSVG\hybrid.svg").rotate(120*DEGREES).next_to(sp22, RIGHT, buff=1.6)
        sp24 = SVGMobject(r"D:\manimSVG\p.svg").next_to(sp23, RIGHT, buff=1.6)
        v8 = VGroup(sp21,sp22,sp23,sp24).move_to(np.array([0,-1.5,0]))
        sp210 = v7[0:6].copy()
        sp220 = v7[6:12].copy()
        sp230 = v7[12:18].copy()
        sp240 = v7[18:].copy()
        self.play(Transform(sp210, sp21))
        self.play(Transform(sp220, sp22))
        self.play(Transform(sp230, sp23))
        self.play(Transform(sp240, sp24))
        ooo1 = MathTex("sp^2").move_to(sp210.get_center()+1.5*DOWN).scale(1.3)
        ooo2 = MathTex("sp^2").move_to(sp220.get_center()+1.5*DOWN).scale(1.3)
        ooo3 = MathTex("sp^2").move_to(sp230.get_center()+1.5*DOWN).scale(1.3)
        ooo4 = MathTex("p_z").move_to(sp240.get_center()+1.5*DOWN).scale(1.3)
        v9 = VGroup(ooo1, ooo2, ooo3, ooo4)
        self.play(Write(v9))
        oooo1 = MathTex(r"\frac{1}{3} s+\frac{2}{3} p").move_to(ooo1.get_center())
        oooo2 = MathTex(r"\frac{1}{3} s+\frac{2}{3} p").move_to(ooo2.get_center())
        oooo3 = MathTex(r"\frac{1}{3} s+\frac{2}{3} p").move_to(ooo3.get_center())
        self.play(Transform(ooo1,oooo1), Transform(ooo2,oooo2), Transform(ooo3,oooo3))
        ddd1 = Dot(sp210.get_center() + 0.6*RIGHT, color=BLUE)
        ddd2 = Dot(sp220.get_center() + 0.5*LEFT + 0.5*UP, color=BLUE)
        ddd3 = Dot(sp230.get_center() + 0.5*LEFT + 0.3*DOWN, color=BLUE)
        ddd4 = Dot(sp240.get_center() + 0.4*UP, color=BLUE)
        ddv = VGroup(ddd1,ddd2,ddd3,ddd4)
        self.play(Write(ddv))
        self.play(
            Rotate(ddd1,angle=2*PI,about_point=ddd1.get_center() + 0.2*LEFT, rate_func=rate_functions.smooth),
            Rotate(ddd2,angle=2*PI,about_point=ddd2.get_center() + 0.1*DOWN + 0.1*RIGHT, rate_func=rate_functions.smooth),
            Rotate(ddd3,angle=2*PI,about_point=ddd3.get_center() + 0.1*RIGHT + 0.1*UP, rate_func=rate_functions.smooth),
            Rotate(ddd4,angle=2*PI,about_point=ddd4.get_center() + 0.1*UP, rate_func=rate_functions.smooth)
        )
        #sp
        v10 = VGroup(v7,sp210,sp220,sp230,sp240,ddd1,ddd2,ddd3,ddd4)
        a1 = SVGMobject(r"D:\manimSVG\axis.svg").scale(0.03).scale(0.8).move_to(t0.get_center())
        a2 = a1.copy().rotate(45*DEGREES)
        a3 = a1.copy().rotate(90*DEGREES)
        sp = VGroup(a1,a2,a3).move_to(t0.get_center())
        orbit4 = MathTex("sp").move_to(orbit.get_center())
        self.play(Transform(v10,sp), Transform(orbit, orbit4))
        self.play(FadeOut(v9), orbit.animate.scale(2))
        self.wait()
        sp1 = SVGMobject(r"D:\manimSVG\hybrid.svg").rotate(90*DEGREES)
        sp2 = SVGMobject(r"D:\manimSVG\hybrid.svg").rotate(-90*DEGREES).next_to(sp1, RIGHT, buff=1.6)
        sp3 = SVGMobject(r"D:\manimSVG\p.svg").rotate(135*DEGREES).next_to(sp2, RIGHT, buff=1.6)
        sp4 = SVGMobject(r"D:\manimSVG\p.svg").next_to(sp3, RIGHT, buff=1.6)
        v11 = VGroup(sp1,sp2,sp3,sp4).move_to(np.array([0,-1.5,0]))
        sp10 = a1[0:6].copy()
        sp20 = a1[6:12].copy()
        sp30 = sp[1].copy()
        sp40 = sp[2].copy()
        self.play(Transform(sp10, sp1))
        self.play(Transform(sp20, sp2))
        self.play(Transform(sp30, sp3))
        self.play(Transform(sp40, sp4))
        ooo1 = MathTex("sp").move_to(sp10.get_center()+1.5*DOWN).scale(1.3)
        ooo2 = MathTex("sp").move_to(sp20.get_center()+1.5*DOWN).scale(1.3)
        ooo3 = MathTex("p").move_to(sp30.get_center()+1.5*DOWN).scale(1.3)
        ooo4 = MathTex("p").move_to(sp40.get_center()+1.5*DOWN).scale(1.3)
        v9 = VGroup(ooo1, ooo2, ooo3, ooo4)
        self.play(Write(v9))
        oooo1 = MathTex(r"\frac{1}{2} s+\frac{1}{2} p").move_to(ooo1.get_center())
        oooo2 = MathTex(r"\frac{1}{2} s+\frac{1}{2} p").move_to(ooo2.get_center())
        self.play(Transform(ooo1,oooo1), Transform(ooo2,oooo2))
        ddd1 = Dot(sp10.get_center() + 0.6*LEFT, color=BLUE)
        ddd2 = Dot(sp20.get_center() + 0.6*RIGHT, color=BLUE)
        ddd3 = Dot(sp30.get_center() + 0.5*LEFT + 0.5*DOWN, color=BLUE)
        ddd4 = Dot(sp40.get_center() + 0.4*UP, color=BLUE)
        ddv = VGroup(ddd1,ddd2,ddd3,ddd4)
        self.play(Write(ddv))
        self.play(
            Rotate(ddd1,angle=2*PI,about_point=ddd1.get_center() + 0.2*RIGHT, rate_func=rate_functions.smooth),
            Rotate(ddd2,angle=2*PI,about_point=ddd2.get_center() + 0.2*LEFT, rate_func=rate_functions.smooth),
            Rotate(ddd3,angle=2*PI,about_point=ddd3.get_center() + 0.1*RIGHT + 0.1*UP, rate_func=rate_functions.smooth),
            Rotate(ddd4,angle=2*PI,about_point=ddd4.get_center() + 0.1*UP, rate_func=rate_functions.smooth)
        )
        vall = VGroup(t0,v10,orbit,sp10,sp20,sp30,sp40,v9,ddv)
        self.play(FadeOut(vall))
%%manim -v WARNING -qh s4
class s4(Scene):
    def construct(self):
        t1 = Text("链烷烃的构象", font="STZhongsong")
        self.play(DrawBorderThenFill(t1))
        self.wait(0.5)
        self.play(FadeOut(t1))
        yiwanchem = MathTex("CH_3CH_3")
        yiwan = Text("乙烷", font="STZhongsong").scale(0.5).next_to(yiwanchem, DOWN)
        v1 = VGroup(yiwanchem, yiwan)
        self.play(Write(v1))
        self.wait(0.5)
        jujia1 = SVGMobject(r"D:\manimSVG\jujia1.svg").scale(2.4)
        jujia2 = SVGMobject(r"D:\manimSVG\jujia2.svg").scale(2).move_to(np.array([-3,1,0]))
        self.play(Transform(v1,jujia1))
        self.wait(0.5)
        self.play(v1.animate.move_to(np.array([-3,1,0])))
        jujia = Text("锯架式", font="STZhongsong").scale(0.5).move_to(np.array([-3,-2,0]))
        typ1 = Text("交叉型", font="STZhongsong").scale(0.8).move_to(np.array([0,-3,0]))
        typ2 = Text("重叠型", font="STZhongsong").scale(0.8).move_to(np.array([0,-3,0]))
        newman1 = SVGMobject(r"D:\manimSVG\newman1.svg").scale(2).move_to(np.array([3,1,0]))
        newman2 = SVGMobject(r"D:\manimSVG\newman2.svg").scale(2).move_to(np.array([3,1,0]))
        niuman = Text("纽曼式", font="STZhongsong").scale(0.5).move_to(np.array([3,-2,0]))
        self.play(Write(jujia), Write(typ1), Write(newman1), Write(niuman), run_time=1)
        self.wait(0.5)
        self.play(Transform(v1, jujia2), Transform(newman1, newman2), Transform(typ1, typ2))
        self.wait(1)
        vall = VGroup(v1,newman1,typ1,jujia,niuman)
        self.play(FadeOut(vall))

 

posted @ 2022-07-02 21:33  树叶本子  阅读(68)  评论(0)    收藏  举报