%%manim -v WARNING -qh s1
class s1(ThreeDScene):
def construct(self):
n1 = Text('在正六边形中,各个内角为120°').to_edge(DOWN).scale(0.6)
n2 = Text('但是sp³杂化的碳原子正常键角为109°').to_edge(DOWN).scale(0.6)
n3 = Text('事实上,环己烷的六个碳原子不在同一平面上').to_edge(DOWN).scale(0.6)
n4 = Text('这样可以保持sp³杂化的正常键角').to_edge(DOWN).scale(0.6)
c_tetrahedron = Tetrahedron(edge_length=4)
center_c = MathTex('C').scale(1).move_to(c_tetrahedron.get_center())
tet_line1 = DashedLine(start=c_tetrahedron.get_corner(DR), end=center_c.get_center())
tet_line2 = DashedLine(start=c_tetrahedron.get_corner(DL), end=center_c.get_center())
tet_line3 = DashedLine(start=c_tetrahedron.get_corner(UR), end=center_c.get_center())
tet_line4 = DashedLine(start=c_tetrahedron.get_corner(UL), end=center_c.get_center())
vg_tet = VGroup(c_tetrahedron,center_c)
vg_tet_line = VGroup(tet_line1, tet_line2, tet_line3, tet_line4)
self.play(Write(c_tetrahedron),Write(center_c),run_time=1.5)
self.play(DrawBorderThenFill(n1))
self.play(Transform(n1, n2))
self.wait(1)
self.play(FadeOut(n1))
self.play(Write(vg_tet_line))
tet_arc = Angle(tet_line2,tet_line1,radius=0.4)
tet_arc_number = Text('109º28´',font="STZhongsong").scale(0.6).next_to(tet_arc.get_center()+0.2*UP)
vg_tet_line_arc = VGroup(tet_line1, tet_line2, tet_line3, tet_line4, tet_arc, tet_arc_number)
self.play(Write(tet_arc), Write(tet_arc_number))
self.play(FadeOut(vg_tet_line_arc))
self.play(Rotate(vg_tet, angle=2*PI,axis=np.array([0,1,0])), run_time=4)
self.play(FadeOut(vg_tet))
d1 = Dot(radius=0.1).move_to(np.array([2,0,0])).set_color(RED)
d2 = d1.copy().rotate(about_point=np.array([0,0,0]), angle=60*DEGREES).set_color(TEAL)
d3 = d2.copy().rotate(about_point=np.array([0,0,0]), angle=60*DEGREES).set_color(TEAL)
d4 = d3.copy().rotate(about_point=np.array([0,0,0]), angle=60*DEGREES).set_color(RED)
d5 = d4.copy().rotate(about_point=np.array([0,0,0]), angle=60*DEGREES).set_color(TEAL)
d6 = d5.copy().rotate(about_point=np.array([0,0,0]), angle=60*DEGREES).set_color(TEAL)
dvg = VGroup(d1,d2,d3,d4,d5,d6)
self.play(Write(dvg))
l1 = Line(d1.get_center(),d2.get_center()).add_updater(lambda z: z.become(Line(d1.get_center(),d2.get_center())))
l2 = Line(d2.get_center(),d3.get_center()).add_updater(lambda z: z.become(Line(d2.get_center(),d3.get_center())))
l3 = Line(d3.get_center(),d4.get_center()).add_updater(lambda z: z.become(Line(d3.get_center(),d4.get_center())))
l4 = Line(d4.get_center(),d5.get_center()).add_updater(lambda z: z.become(Line(d4.get_center(),d5.get_center())))
l5 = Line(d5.get_center(),d6.get_center()).add_updater(lambda z: z.become(Line(d5.get_center(),d6.get_center())))
l6 = Line(d6.get_center(),d1.get_center()).add_updater(lambda z: z.become(Line(d6.get_center(),d1.get_center())))
lvg = VGroup(l1,l2,l3,l4,l5,l6)
self.play(Write(lvg), DrawBorderThenFill(n3))
self.play(Transform(n3,n4))
self.wait(1)
self.play(FadeOut(n3))
vghex = VGroup(dvg,lvg)
vt1 = ValueTracker(120)
vt2 = ValueTracker(120)
anglenum1 = DecimalNumber(unit="^{\circ}", color=RED).add_updater(lambda x: x.set_value(vt1.get_value())).next_to(d1)
anglenum2 = DecimalNumber(unit="^{\circ}", color=TEAL).add_updater(lambda x: x.set_value(vt2.get_value())).next_to(d6, DOWN)
self.play(Write(anglenum1),Write(anglenum2))
self.wait(1.5)
num1 = np.cos(54.4/180*PI) - np.cos(1/3*PI)
num2 = np.cos(1/6*PI) - np.cos(35.5/180*PI)
self.play(d1.animate.shift(num1*RIGHT),d4.animate.shift(num1*LEFT),d2.animate.shift(num2*DOWN),d3.animate.shift(num2*DOWN),d5.animate.shift(num2*UP),d6.animate.shift(num2*UP),vt1.animate.set_value(109),vt2.animate.set_value(125.5))
self.wait(1)
self.play(Rotate(vghex, angle=45*DEGREES, axis=np.array([1,0,0])), anglenum2.animate.shift(0.7*UP))
self.wait()
dl1 = DashedLine(start=d2,end=d6, dashed_ratio=0.3)
dl2 = DashedLine(start=d3,end=d5, dashed_ratio=0.3)
self.play(Write(dl1), Write(dl2))
rvg1 = VGroup(d1,l1,l6)
rvg2 = VGroup(d4,l3,l4)
t1 = Text('椅型',font="STZhongsong").scale(0.7).to_edge(DOWN).shift(2*LEFT)
t2 = Text('船型',font="STZhongsong").scale(0.7).to_edge(DOWN).shift(2*RIGHT)
self.play(Rotate(rvg1, angle = -30*DEGREES, axis=dl1.get_unit_vector()), Rotate(rvg2, angle = -30*DEGREES, axis=dl2.get_unit_vector()), anglenum1.animate.shift(0.2*UP + 0.1*LEFT), vt2.animate.set_value(109))
self.play(FadeIn(t1))
self.wait(1)
self.play(FadeOut(t1))
self.play(Rotate(rvg1, angle = 30*DEGREES, axis=dl1.get_unit_vector()), Rotate(rvg2, angle = 30*DEGREES, axis=dl2.get_unit_vector()), anglenum1.animate.shift(0.2*DOWN + 0.1*RIGHT), vt2.animate.set_value(125.5))
self.wait(1.5)
self.play(Rotate(rvg1, angle = -30*DEGREES, axis=dl1.get_unit_vector()), Rotate(rvg2, angle = 30*DEGREES, axis=dl2.get_unit_vector()), anglenum1.animate.shift(0.2*UP + 0.1*LEFT), vt2.animate.set_value(109))
self.play(FadeIn(t2))
self.wait(1)
self.play(FadeOut(t2))
l1.clear_updaters()
l2.clear_updaters()
l3.clear_updaters()
l4.clear_updaters()
l5.clear_updaters()
l6.clear_updaters()
lvg = VGroup(l1,l2,l3,l4,l5,l6)
vgall = VGroup(dvg, lvg, dl1, dl2, anglenum1, anglenum2)
self.play(FadeOut(vgall))
%%manim -v WARNING -qh s2
class s2(ThreeDScene):
def construct(self):
hex1 = SVGMobject(r'D:\manimSVG\hex1.svg').scale(2)
hex1c = SVGMobject(r'D:\manimSVG\hex1.svg').scale(2)
hex2 = SVGMobject(r'D:\manimSVG\hex2.svg').scale(1.6)
hex3 = SVGMobject(r'D:\manimSVG\hex3.svg').scale(1.6)
note1 = Text('椅型',font="STZhongsong")
hex2[6:18].set_color(RED)
hex2[18:].set_color(BLUE)
hex3[0:12].set_color(RED)
hex3[12:24].set_color(BLUE)
self.play(DrawBorderThenFill(note1))
self.play(note1.animate.next_to(hex1,DOWN))
self.play(note1.animate.scale(0.6))
self.play(Write(hex1))
t1 = Text('椅型环己烷的氢原子可以分成两组',font="STZhongsong").scale(0.6).to_edge(DOWN)
t2 = Text('一组的C-H键与分子对称轴平行,叫做直立键或a键',font="STZhongsong").scale(0.6).to_edge(DOWN)
t3 = Text('另一组的C-H键与对称轴大致垂直,略向下或向上倾斜',font="STZhongsong").scale(0.6).to_edge(DOWN)
t4 = Text('叫做平伏键或e键',font="STZhongsong").scale(0.6).to_edge(DOWN)
ae1 = Text('axial', color=RED).scale(0.7).next_to(hex1,UP)
ae2 = Text('equatorial', color=BLUE).scale(0.7).next_to(hex1,UP)
self.play(DrawBorderThenFill(t1))
self.play(Transform(t1,t2))
self.play(hex1[6:36].animate.set_color(RED))
self.play(Write(ae1))
self.wait(1)
self.play(Transform(t1,t3),Transform(ae1,ae2),hex1[6:36].animate.set_color(WHITE))
self.play(hex1[36:].animate.set_color(BLUE))
self.wait(1)
self.play(Transform(t1,t4))
self.wait(1)
self.play(FadeOut(ae1), FadeOut(note1), FadeOut(t1))
t5 = Text('一个椅型构象可以通过碳碳键的旋转变成另一个椅型构象',font="STZhongsong").scale(0.6).to_edge(DOWN)
t6 = Text('此时a键转为e键,e键转为a键',font="STZhongsong").scale(0.6).to_edge(DOWN)
t7 = MarkupText("<span font_family='STZhongsong'>每种构象滞留的时间在</span> 10<sup>-4</sup>~10<sup>-5</sup>s<span font_family='STZhongsong'>量级</span>").scale(0.6).to_edge(DOWN)
self.play(Transform(hex1, hex2), DrawBorderThenFill(t5))
self.play(Transform(t5,t6))
self.play(Transform(hex1, hex3), run_time=3)
self.wait(1)
self.play(Transform(t5,t7))
self.wait(1)
self.play(FadeOut(t5))
self.play(Transform(hex1, hex2), run_time=0.5, rate_func=rate_functions.smooth)
self.play(Transform(hex1, hex3), run_time=0.4, rate_func=rate_functions.smooth)
self.play(Transform(hex1, hex2), run_time=0.3, rate_func=rate_functions.smooth)
self.play(Transform(hex1, hex3), run_time=0.2, rate_func=rate_functions.smooth)
self.play(Transform(hex1, hex2), run_time=0.1, rate_func=rate_functions.smooth)
self.play(Transform(hex1, hex3), run_time=0.1, rate_func=rate_functions.smooth)
self.play(Transform(hex1, hex2), run_time=0.1, rate_func=rate_functions.smooth)
self.play(Transform(hex1, hex3), run_time=0.1, rate_func=rate_functions.smooth)
self.play(Transform(hex1, hex2), run_time=0.1, rate_func=rate_functions.smooth)
self.play(Transform(hex1, hex3), run_time=0.1, rate_func=rate_functions.smooth)
self.play(Transform(hex1, hex2), run_time=0.1, rate_func=rate_functions.smooth)
self.play(Transform(hex1, hex3), run_time=0.2, rate_func=rate_functions.smooth)
self.play(Transform(hex1, hex2), run_time=0.3, rate_func=rate_functions.smooth)
self.play(Transform(hex1, hex3), run_time=0.4, rate_func=rate_functions.smooth)
self.play(Transform(hex1, hex2), run_time=0.5, rate_func=rate_functions.rush_from)
vgme = VGroup(hex2[1], hex2[2], hex2[6], hex2[7], hex2[24], hex2[25]).copy()
n1 = Text('在椅型构象中,C-C单键的键长和键角',font="STZhongsong").scale(0.6).to_edge(DOWN)
n2 = Text('都与正常的C-C的键长及sp³杂化的键角相符',font="STZhongsong").scale(0.6).to_edge(DOWN)
n3 = Text('因此这种构象既没有键长形变引起的内能升高,也没有角张力',font="STZhongsong").scale(0.6).to_edge(DOWN)
meth = SVGMobject(r'D:\manimSVG\meth.svg').scale(2)
self.add(vgme)
self.play(FadeOut(hex1))
self.play(vgme.animate.move_to(ORIGIN), DrawBorderThenFill(n1))
self.play(Transform(n1,n2))
self.wait(1)
self.play(vgme.animate.scale(1.5))
self.play(Transform(vgme,meth), Transform(n1,n3))
self.play(vgme.animate.set_color_by_gradient(BLUE, PINK), run_time=2)
self.play(vgme.animate.set_color_by_gradient(PINK, GREEN), run_time=2)
self.play(FadeOut(n1))
self.play(Transform(vgme, hex2))
ar1 = DoubleArrow(start=hex2[8].get_center(), end=hex2[10].get_center(),stroke_width=2, tip_length=0.2)
ar2 = DoubleArrow(start=hex2[24].get_center(), end=hex2[16].get_center(),stroke_width=2, tip_length=0.2)
ar3 = DoubleArrow(start=hex2[18].get_center(), end=hex2[26].get_center(), tip_length=0.2)
nt1 = MathTex('251pm').scale(0.6).next_to(ar1, 0.2*UP)
nt2 = MathTex('250pm').scale(0.6).next_to(ar2, 0.2*DOWN)
nt3 = MathTex('249pm').scale(0.6).next_to(ar3, 0.2*RIGHT)
a1 = Text('此时任意两个氢原子之间的距离均大于两倍氢原子的范德华半径(240pm)',font="STZhongsong").scale(0.6).to_edge(DOWN)
a2 = Text('故氢原子之间没有排斥力,不会使体系的内能升高',font="STZhongsong").scale(0.6).to_edge(DOWN)
self.play(GrowFromPoint(ar1, ar1.get_center()), GrowFromPoint(ar2, ar2.get_center()), GrowFromPoint(ar3, ar3.get_center()))
vgnt = VGroup(nt1,nt2,nt3)
self.play(Write(vgnt))
self.play(DrawBorderThenFill(a1))
self.wait(1)
self.play(Transform(a1,a2))
self.wait(1)
self.play(FadeOut(a1))
vgarr = VGroup(vgnt, ar1, ar2, ar3)
self.play(FadeOut(vgarr))
um = SVGMobject(r'D:\manimSVG\um.svg').scale(1.6).shift(3*RIGHT)
self.add(vgme)
self.play(Transform(vgme, hex1c.scale(0.7)))
self.play(vgme.animate.shift(3*LEFT))
note1 = Text('锯架式',font="STZhongsong").scale(0.5).next_to(vgme, DOWN)
note2 = Text('Newman式',font="STZhongsong").scale(0.5).next_to(um, DOWN).set_y(note1.get_y())
self.play(Write(note1))
self.play(DrawBorderThenFill(um))
self.play(Write(note2))
t1 = Text('但环中任意两个相邻碳原子的构象都是邻交叉型构象',font="STZhongsong").scale(0.6).to_edge(DOWN)
t2 = Text('以对交叉型构象为比较对象',font="STZhongsong").scale(0.6).to_edge(DOWN)
t3 = Text('每个邻交叉型构象会使体系的内能升高约3.8kJ/mol',font="STZhongsong").scale(0.6).to_edge(DOWN)
self.play(DrawBorderThenFill(t1))
self.wait(0.5)
self.play(Transform(t1, t2))
self.wait(1)
self.play(Transform(t1, t3))
self.wait(1)
self.play(FadeOut(t1))
notess1 = Text('椅型',font="STZhongsong")
vgback = VGroup(note1, note2, um, vgme)
self.play(Transform(vgback, notess1))
self.play(FadeOut(vgback))
%%manim -v WARNING -qh s3
# Text("", font="STZhongsong")
# SVGMobject(r"D:\manimSVG\.svg")
# , rate_func=rate_functions.smooth
class s3(Scene):
def construct(self):
l = SVGMobject(r'D:\manimSVG\boat.svg').scale(2).shift(0.5*DOWN)
r = SVGMobject(r'D:\manimSVG\newman.svg').scale(1.2).shift(3*RIGHT)
note0 = Text('船型',font="STZhongsong").scale(0.6).next_to(l,0.2*DOWN).shift(0.5*UP)
note1 = Text('船型',font="STZhongsong")
self.play(DrawBorderThenFill(note1))
self.play(note1.animate.scale(0.6))
self.play(note1.animate.move_to(note0.get_center()))
self.play(Write(l))
self.play(l[10].animate.set_color(TEAL),l[12].animate.set_color(TEAL))
t = Text('“船头”“船尾”向内的两个氢原子之间的距离为183pm',font="STZhongsong").scale(0.6).to_edge(DOWN)
t2 = Text('小于两个氢原子范德华半径之和240pm',font="STZhongsong").scale(0.6).to_edge(DOWN)
t3 = Text('故这两个氢原子间有排斥力,体系的内能会升高',font="STZhongsong").scale(0.6).to_edge(DOWN)
ar1 = DoubleArrow(start=l[10].get_center(), end=l[12].get_center(), stroke_width=2, tip_length=0.2, color=TEAL)
mt = MathTex("183pm").next_to(ar1, 0.2*UP).scale(0.8)
circle = Circle(radius=2, color=TEAL, fill_opacity=0.3).move_to(l[10].get_center())
circle2 = Circle(radius=2, color=TEAL, fill_opacity=0.3).move_to(l[12].get_center())
self.play(GrowFromPoint(ar1, ar1.get_center()), rate_func=rate_functions.smooth)
self.play(Write(mt))
self.play(DrawBorderThenFill(t))
self.wait(0.5)
self.play(Transform(t,t2))
self.play(GrowFromPoint(circle, circle.get_center()), rate_func=rate_functions.smooth)
self.play(GrowFromPoint(circle2, circle2.get_center()), rate_func=rate_functions.smooth)
self.play(Transform(t,t3))
self.wait(1)
vgfa = VGroup(circle, circle2, ar1, mt, note1)
self.play(FadeOut(t), FadeOut(vgfa))
a1 = Text('环己烷船型构象可视为有四个正丁烷的邻交叉构象与两个重叠型构象',font="STZhongsong").scale(0.6).to_edge(DOWN)
a2 = Text('故船型构象不稳定,内能较高',font="STZhongsong").scale(0.6).to_edge(DOWN)
self.play(l[10].animate.set_color(WHITE),l[12].animate.set_color(WHITE))
self.play(l.animate.scale(0.7))
self.play(l.animate.move_to(np.array([-3,0,0])))
self.play(FadeIn(r))
self.play(DrawBorderThenFill(a1))
self.wait(0.5)
self.play(Transform(a1,a2))
self.wait(1)
self.play(FadeOut(a1))
vgvg = VGroup(l, r)
name = Text('船型',font="STZhongsong")
self.play(Transform(vgvg,name))
self.wait(1)
%%manim -v WARNING -qh s4
class s4(Scene):
def construct(self):
t1 = Text('船型',font="STZhongsong")
t2 = Text('椅型',font="STZhongsong").shift(2.5*LEFT)
self.play(t1.animate.shift(2.5*RIGHT))
u = t1.copy()
self.play(Transform(u,t2))
bt = SVGMobject(r'D:\manimSVG\boatabbr.svg').scale(0.8).shift(2.5*RIGHT)
ch = SVGMobject(r'D:\manimSVG\chairabbr.svg').scale(0.7).shift(2.5*LEFT)
self.play(Transform(u,ch))
self.play(Transform(t1,bt))
self.play(u.animate.scale(0.4))
self.play(t1.animate.scale(0.4))
n1 = Text("椅型构象和船型构象只是环己烷的两个典型构象", font="STZhongsong").scale(0.6).to_edge(DOWN)
n2 = Text("实际上随着碳碳单键的旋转", font="STZhongsong").scale(0.6).to_edge(DOWN)
n3 = Text("环己烷可以产生无数个构象异构体", font="STZhongsong").scale(0.6).to_edge(DOWN)
ax = Axes(
x_range=[0, 7],
y_range=[0, 50],
x_length=2.7,
y_length=1.5,
axis_config = {"include_tip": False, "include_ticks": False}
).shift(0.8*DOWN)
labels = ax.get_axis_labels(
x_label=Text("反应进程", font="STZhongsong").scale(0.15), y_label=Text("势能/(kJ/mol)", font="STZhongsong").scale(0.15)
)
graph1 = ax.plot(lambda x : -23*np.cos(x), x_range = [-0.3,PI], color = BLUE)
graph2 = ax.plot(lambda x : 11.25*np.cos(2*x) + 11.75, x_range = [PI, 1.5*PI], color = BLUE)
graph3 = ax.plot(lambda x : -2.7*np.cos(4*x) + 3.2, x_range = [1.5*PI, 1.75*PI+ 0.2], color = BLUE)
vggraph = VGroup(graph1,graph2,graph3)
vgax = VGroup(ax,labels,graph1,graph2,graph3).scale(3.5)
point1 = ax.c2p(0, -23)
dot1 = Dot(point1)
point2 = ax.c2p(PI, 23)
dot2 = Dot(point2, fill_opacity=0)
point3 = ax.c2p(1.5*PI, 0.5)
dot3 = Dot(point3, fill_opacity=0)
point4 = ax.c2p(1.75*PI, 5.9)
dot4 = Dot(point4)
vgfunc = VGroup(graph1,graph2, graph3,dot1,dot2,dot3,dot4).shift(0.6*RIGHT+2.7*UP)
self.play(u.animate.move_to(dot1.get_center()+0.5*UP))
self.play(t1.animate.move_to(dot4.get_center()+0.5*UP))
self.play(Write(vggraph))
self.play(Write(ax), Write(labels))
self.play(GrowFromPoint(dot1, dot1.get_center()), GrowFromPoint(dot4, dot4.get_center()))
self.play(DrawBorderThenFill(n1))
self.wait(1)
self.play(Transform(n1,n2))
self.wait(1)
self.play(Transform(n1,n3))
self.wait(1)
self.play(FadeOut(n1))
vgf = VGroup(ax,labels)
self.play(FadeOut(vgf))
vgleft = VGroup(u, t1, graph1,graph2, graph3,dot1,dot2,dot3,dot4)
self.play(vgleft.animate.move_to(ORIGIN))
self.play(vgleft.animate.scale(1.3))
self.play(vgleft.animate.shift(0.4*DOWN))
d2 = Dot(point2).move_to(dot2.get_center())
d3 = Dot(point3).move_to(dot3.get_center())
qq1 = SVGMobject(r'D:\manimSVG\qq1.svg').scale(0.5).move_to(dot2.get_center()+0.5*UP)
qq2 = SVGMobject(r'D:\manimSVG\qq2.svg').scale(0.3).move_to(dot3.get_center()+0.5*DOWN)
self.play(Write(qq1))
self.play(GrowFromPoint(d2, d2.get_center()))
self.play(Write(qq2))
self.play(GrowFromPoint(d3, d3.get_center()))
note1 = Text("椅型", font="STZhongsong").scale(0.5).move_to(u.get_center()+0.5*UP)
note2 = Text("半椅型", font="STZhongsong").scale(0.5).move_to(qq1.get_center()+0.3*UP+0.4*RIGHT)
note3 = Text("扭船型", font="STZhongsong").scale(0.5).move_to(qq2.get_center()+0.5*DOWN)
note4 = Text("船型", font="STZhongsong").scale(0.5).move_to(t1.get_center()+0.5*UP)
self.play(GrowFromPoint(note1, note1.get_center()), GrowFromPoint(note2, note2.get_center()),GrowFromPoint(note3, note3.get_center()),GrowFromPoint(note4, note4.get_center()))
baseline = DashedLine(start=dot1.get_center() + 0.05*DOWN, end=np.array([dot4.get_x(),dot1.get_y() - 0.05,0]))
da1 = DashedLine(start=dot3.get_center(), end=np.array([dot3.get_x() - 2,dot3.get_y(),0]))
self.play(Write(baseline))
self.play(Write(da1))
arr1 = DoubleArrow(start=np.array([dot2.get_x(),dot2.get_y(),0]), end=np.array([dot2.get_x(),dot1.get_y(),0]), buff=0, tip_length=0.2, color=GREEN)
arr2 = DoubleArrow(start=np.array([dot3.get_x() - 1.8,dot3.get_y(),0]), end=np.array([dot3.get_x() - 1.8,dot1.get_y(),0]), buff=0, tip_length=0.2, color=GREEN)
arr3 = DoubleArrow(start=np.array([dot4.get_x(),dot4.get_y(),0]), end=np.array([dot4.get_x(),dot1.get_y(),0]), buff=0, tip_length=0.2, color=GREEN)
self.play(GrowFromPoint(arr1,arr1.get_center()), GrowFromPoint(arr2,arr2.get_center()), GrowFromPoint(arr3,arr3.get_center()))
diff1 = MathTex("46kJ/mol").next_to(arr1, 0.05*LEFT).scale(0.6).shift(0.4*RIGHT)
diff2 = MathTex("23.5kJ/mol").next_to(arr2, 0.05*RIGHT).scale(0.6).shift(0.45*LEFT + 0.7*DOWN)
diff3 = MathTex("28.9kJ/mol").next_to(arr3, 0.05*LEFT).scale(0.6).shift(0.45*RIGHT + 0.3*DOWN)
self.play(DrawBorderThenFill(diff1), DrawBorderThenFill(diff2), DrawBorderThenFill(diff3))
last = Text("环己烷的构象", font="STZhongsong")
vgall = VGroup(vgleft, d2, d3, qq1, qq2, note1, note2,note3,note4,baseline, da1, arr1,arr2,arr3, diff1,diff2,diff3)
self.play(Transform(vgall, last))
self.play(FadeOut(vgall))
%%manim -v WARNING -qh thumbnail
# , disable_ligatures=True, alignment="center"
class thumbnail(Scene):
def construct(self):
def check(svg):
n = 0
for i in svg:
num = Integer(number=n).scale(0.6).set_color(RED).move_to(i)
n += 1
self.add(num)
self.add(svg.set_opacity(0.5))
frame = FullScreenRectangle()
h = SVGMobject(r'D:\manimSVG\thumbnail2.svg').set(width=frame.height*0.7)
h[0].set_opacity(0)
h[1].set_opacity(0)
h[2].set_opacity(0)
h[3].set_opacity(0)
h[4].set_opacity(0)
h[5].set_opacity(0)
icon = SVGMobject(r'D:\manimSVG\icon.svg').scale(0.8)
icon.set_color_by_gradient("#FFBBFF", "#FF66FF")
i1 = icon.copy().move_to(h[0])
i2 = icon.copy().move_to(h[1]).rotate(2*PI/6)
i3 = icon.copy().move_to(h[2]).rotate(2*PI/6*2)
i4 = icon.copy().move_to(h[3]).rotate(2*PI/6*3)
i5 = icon.copy().move_to(h[4]).rotate(2*PI/6*4)
i6 = icon.copy().move_to(h[5]).rotate(2*PI/6*5)
ivg = VGroup(i1, i2, i3, i4, i5, i6)
h.set_color_by_gradient("#FFBBFF", "#FF66FF")
self.add(h, ivg)