首页 > 其他分享 >manim1.0 优化

manim1.0 优化

时间:2022-08-20 16:22:19浏览次数:50  
标签:manim1.0 g5 scale g0 shift h0 msm 优化

例:

       tf=xtf2(1,'Demyanov和Tiffen-Demyanov 重排').to_corner(UL)
            t1=xn('脂肪族伯胺重氮化反应中发生的扩环或缩环反应称为 Demyanov 重排');t2=xn('若脂肪环上连有氨甲基,重排生成扩环的产物');t3=xn('若脂肪环上直接连有氨基,重排生成缩环的产物')
            g0=msm('g0').scale(0.8);h0=msm('h0').scale(0.8).shift(0.5*RIGHT);xms(g0,8,h0,5);g0.shift(1.3*UP);h0.shift(1.3*DOWN)
            g1=msm("g1").scale(1.3);g2=msm("g2");g3=msm("g3");g4=msm("g4").scale(1.3);g5=msm("g5");g6=msm("g6");f0=msm('f0');f00=msm('f00');xos(2,1,g1,g2,g3);xos(2,1,g4,g5,g6);xcoi(g1,g2,g3,g4,g5,g6);xs(f0,0,g5,6);xs(f00,0,g5,6);f0.to_edge(DOWN);f00.to_edge(DOWN)
            gn=msm('gn').scale(0.7).shift(1.5*UP);N=msm('d19');xs(N,0,g2,7);N.to_edge(DOWN);xc1(g3);g0.save_state()
            n1=xnf('此处形成碳正离子的方法在 W-M 重排中提到过');n2=xnf('重氮化后分解得到碳正离子');n3=xnf('扩环的动力之一是可以降低环张力(小环的环张力较大)');n4=xnf('随后碳正离子与水结合生成氧鎓盐,再失去质子变为醇')

这里narrator几乎已经不可简化了,但是如果能批量命名会更好:

texts = xn(t1='A', t2='B', t3='C')

然后是多个物体的摆放:

g0=msm('g0').scale(0.8);h0=msm('h0').scale(0.8).shift(0.5*RIGHT);xms(g0,8,h0,5);g0.shift(1.3*UP);h0.shift(1.3*DOWN)

这里可以和使用opacity定位Mobjects联系起来,xos()其实可以简化,不需要用第一个参数来分类,因为各个svg的大小不会相同,改进如下:

def xos(a, *args):
    # a是透明部分缩放尺度
    # 所有的args尺度与第一个args相同

并且我认为xos()如果可以加入多重opacity缩放,那会更好(又存在一个问题,两者的缩放尺度怎么办呢)

并且建议加入预定义的svg,例如H2O,H+

xos()内能不能加入位置分布的函数?

目标:完成一个函数,使得可以完成所有初始化;或者缩放和位置各自一个函数

narrator简化的想法:

texts = {1:'A', 2:'B', 3:'C'}  # 能看到t的编号
evaltexts()  # 根据texts的长度进行自动化定义

 

标签:manim1.0,g5,scale,g0,shift,h0,msm,优化
From: https://www.cnblogs.com/daxiangcai/p/16607974.html

相关文章