常用的一些操作
【注:随版本升级,有些操作和指令会有改动】
from manim import *
从 manim 中导入了需要用到的模块
class Hello_World(Scene)
创建一个继承自Scene的一个类;
def construct(self)
construct方法对于manim很特殊,manim调用这个方法来创建动画。所以基本上这个方法是在运行manim时必不可少的;
x=Text("内容",color=颜色)
创建一个对象,内容为“内容”,颜色为“颜色”
self.play(Write(name)
动画输出 name 对象的内容
self.wait(x)
等待 x 秒
x=Rectangle(color=颜色)
创建一个矩形,颜色为“颜色”
x.surround(y)
对象 x 包裹对象 y
x=VGroup(a,b)
合并 a,b 到一个群组中
x.scale()
设置缩放大小
x.set_color
设置颜色
x.set_height
设置尺寸
self.play(FadeIn(x))
让 x 对象渐入显示
self.play(FadeOut(x))
让 x 对象渐出
self.play(Transform(x,y))
从 x 渐变到 y
self.ApplyMethod(x.属性,number))
把 x 的某个属性放大 number 倍,x 可以是一个群组
x=Circle() /Annulus()/Ellipse()/Square()/Triangle()/Polygon()/Line()
画圆、圆环、椭圆、方形、三角形、多边形、直线
属性:color fill_color fill_opacity height width
颜色 内部填充颜色 不透明度 高度 宽度
或用 x.set_xxxx
self.add(x)
对象 x 直接出现
self.play(GrowFromCenter(x))
让 x 对象从中间一步步生成
self.play(FadeInFromDown(x))
让 x 对象从下面渐入
self.play(FadeInFrom(x,vector))
让 x 对象从 vector 方向渐入
x=Line([x1,y1,z1],[x2,y2,z2])
一条起点 (x1,y1,z1) ,终点 (x2,y2,z2)
x=Annulus(inner_radius,outer_radius)
内半径,外半径
x.shift()
接受一个向量,图形初始位置的平移,其中可以填 DOWN,LEFT,RIGHT,UP 常量
LEFT = np.array([-1,0,0])
RIGHT = np.array([1,0,0])
UP = np.array([0,1,0])
DOWN = np.array([0,-1,0])
IN = np.array([0,0,-1])
OUT = np.array([0,0,1])
单位长度 一个默认的圆(Circle)其半径为一个单位,默认的动画场景高度为8个单位
B.next_to(A,vecor)
物体 B 在 vector(如:np.array([1,2,0]),UP) 定义方向上挨着 A
B.rotate(degree)
让B旋转 degree(弧度制)
self.play(ApplyMethod(A.shift, vector))
直接使用shift等方式改变的位置是没有动画的,如果要动画的话可以使用这个来实现A以向量vector进行移动的动画
x.to_edge(UP/RIGHT/DOWN/LEFT)
到边缘
x.get_corner(vector)
x 的 vector 角落
x.match_color(y)
让 x 和 y 颜色一样
x.bg=BackGroundRectangle(x,属性)
x 背景的属性设置
x.rotate(TAU*(n/360))
将 x 旋转 n 度 ,其中, TAU=2*np.pi
x.set_color_by_gradient(color1,color2,...)
x 颜色按设定渐变
书写 LaTeX 的时候,用 x=Tex("")
等价于 x=Text("$$")
,其中,‘\’ 的意义成为空格,两个'' 才表示后跟公式
几个常用的技巧:
优化动画出现/消失方式 manim使用(五) 动画效果-创建动画 - 知乎 (zhihu.com)
manim边学边做--MathTex