头文件引入

导入manim命名空间

from manim import *

manim基本结构

这是一个最基本的manim结构,格式:

from manim import *

class 类的名字(Scene):

    def construction(self):

类名叫做BaseFrame,传入一个场景Scene,并且包含一个construct()方法,传入self对象。self.wait()就是播放一段静默的动画(默认1秒)

class BaseFrame(Scene):
def construct(self):
self.wait()

例1-创建一个Circle对象并显示

类名:CreateCircle

涉及的新内容:Circle() set_fill() Create()

首先创建一个Circle()对象:circle

然后设置circle对象的颜色与透明度,

然后调用self.play()方法,传入animate类型的参数,即可渲染出一段动画。

class CreateCircle(Scene):
def construct(self):
circle = Circle() # 创建了一个Circle对象:circle
circle.set_fill(PINK, opacity=0.5) # set the color and transparency
self.play(Create(circle)) # show the circle on screen

编译

终端(控制台/PowerShell等)cd到.py文件所在目录,

命令格式manim -pql XXX.py ClassName

XXX.py 填入你编写的文件名

ClassName 填入类名

例如,你的文件名是sc1.py,你想渲染里面的CreateCircle类,

即:manim -pql sc1.py CreateCircle


例2-正方形变圆形

类名:SquareToCircle

涉及的新内容:Square() rotate() Transform() FadeOut()

创建一个圆、一个正方形,将正方形旋转四分之PI的角度。

此时circle和square都没有被创建出来。

调用self.play()将正方形展示出来,通过Transform方法将square对象的形状(包括位置)过渡到circle。

需要注意的是,此时的square对象仍是他自己,主体对象没有改变。circle对象相当于提供了一个模版,此时circle没有被生成出来!

最后通过FadeOut()动画方法淡出square对象(而不是circle,因为circle根本就没有在场景中,只是square变成了circle的样子罢了)

class SquareToCircle(Scene):
def construct(self):
circle = Circle() # create a circle
circle.set_fill(PINK, opacity=0.5) # set color and transparency square = Square() # create a square
square.rotate(PI / 4) # rotate a certain amount self.play(Create(square)) # animate the creation of the square
self.play(Transform(square, circle)) # interpolate the square into the circle
self.play(FadeOut(square)) # fade out animation


例3-同时生成两个图案

类名:SquareAndCircle

涉及的新内容:next_to()

前几行代码准备了一个圆形circle和一个正方形square,尚未放到场景中。

调用square.next_to(circle, RIGHT, buff=0.5),将square对象挪到circle对象的RIGHT side,间隔0.5个单位。

另外注意,manim的坐标是以屏幕为中心的笛卡尔直角坐标。

我们可以在self.play()方法中置入多组动画方法参数,同时执行动画。

本案例中的:self.play(Create(circle), Create(square))

class SquareAndCircle(Scene):
def construct(self):
circle = Circle() # create a circle
circle.set_fill(PINK, opacity=0.5) # set the color and transparency square = Square() # create a square
square.set_fill(BLUE, opacity=0.5) # set the color and transparency square.next_to(circle, RIGHT, buff=0.5) # set the position
self.play(Create(circle), Create(square)) # show the shapes on screen


例4-正方形变圆形播放动画

类名:AnimatedSquareToCircle

涉及的新内容:.animate.  ReplacementTransform()

class AnimatedSquareToCircle(Scene):
def construct(self):
circle = Circle() # create a circle
square = Square() # create a square #Play_Scripts_Start
self.play(Create(square)) # show the square on screen
self.play(square.animate.rotate(PI / 4)) # 旋转图形,参数是弧度制
self.play(
ReplacementTransform(square, circle)
) # transform the square into a circle
self.play(
circle.animate.set_fill(PINK, opacity=0.5)
) # color the circle on screen
#Play_Scripts_End

【manim】学习路径2-构建一些基础的图形,场景的更多相关文章

  1. Android学习路径(两)项目文件本身使用场景和文件演示

    ios讨论群1群:135718460  1.src文件:java源码存放文件夹 2.gen 文件:自己主动生成全部由android开发工具自己主动生成的文件,文件夹中最重要的就是R.java文件,这个 ...

  2. (大数据工程师学习路径)第一步 Linux 基础入门----正则表达式基础

    介绍 虽然我们这一节的标题是正则表达式,但实际这一节只是介绍grep,sed,awk这三个命令,而正则表达式作为这三个命令的一种使用方式(命令输出中可以包含正则表达式).正则表达式本身的内容很多,要把 ...

  3. Go学习路径--相关基础

    现在开始接触Go一段时间了,基本路径就是看基础学习材料,开始写项目,有问题找解决问题的方法.这里记录一下学习过程. go相关文章 Golang适合高并发场景的原因分析 go build 不同系统下的可 ...

  4. python爬虫 | 一条高效的学习路径

    数据是创造和决策的原材料,高质量的数据都价值不菲.而利用爬虫,我们可以获取大量的价值数据,经分析可以发挥巨大的价值,比如: 豆瓣.知乎:爬取优质答案,筛选出各话题下热门内容,探索用户的舆论导向. 淘宝 ...

  5. React Native小白入门学习路径——五

    React Native小白入门学习路径--五 序 "哦天呐!" 这句话成了我在实验室的口头禅, 老师可能觉得我们都是大神吧,都还在看着基础就给布置了那么多任务:写一个RN的TDD ...

  6. 亲爱的,我是一条Linux运维技术学习路径呀。

    根据我的经验,人在年轻时,最头疼的一件事就是决定自己这一生要做什么.在这方面,我倒没有什么具体的建议:干什么都可以,但最好不要写小说,这是和我抢饭碗.总而言之,干什么都是好的:但要干出个样子来,这才是 ...

  7. [ Linux运维学习 ] 路径及实战项目合集

    我们知道运维工程师(Operations)最基本的职责就是负责服务的稳定性并确保整个服务的高可用性,同时不断优化系统架构.提升部署效率.优化资源利用率,确保服务可以7*24H不间断地为用户提供服务. ...

  8. SSM(spring mvc+spring+mybatis)学习路径——1-1、spring入门篇

    目录 1-1 Spring入门篇 专题一.IOC 接口及面向接口编程 什么是IOC Spring的Bean配置 Bean的初始化 Spring的常用注入方式 专题二.Bean Bean配置项 Bean ...

  9. 学习 shell脚本之前的基础知识

    转载自:http://www.92csz.com/study/linux/12.htm  学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写sh ...

随机推荐

  1. 基于MybatisPlus代码生成器(2.0新版本)

    一.模块简介 1.功能亮点 实时读取库表结构元数据信息,比如表名.字段名.字段类型.注释等,选中修改后的表,点击一键生成,代码成即可提现出表结构的变化. 单表快速转化restful风格的API接口并对 ...

  2. numpy学习笔记02

    简介 numpy.array() 数组对象,可以表示普通的一维数组,或者二维矩阵,或者任意数据:并且它可以对数组中的数据进行非常高效的运算,如:数据统计.图像处理.线性代数等 numpy 之所以能运行 ...

  3. Node.js精进(4)——事件触发器

    Events 是 Node.js 中最重要的核心模块之一,很多模块都是依赖其创建的,例如上一节分析的流,文件.网络等模块. 比较知名的 Express.KOA 等框架在其内部也使用了 Events 模 ...

  4. LVGL库入门教程 - 动画

    动画可以说是 LVGL 中的特色之一,不过在使用动画前,请确保单片机具有足够的性能来维持足够的帧率. transition:过渡动画 当一个控件的状态发生改变时,可以让样式也发生变化以提醒用户.通过过 ...

  5. Django【执行查询】(二)

    官方Django3.2 文档:https://docs.djangoproject.com/en/3.2/topics/db/queries/ 本文大部分内容参考官方3.2版本文档撰写,仅供学习使用 ...

  6. PTA(BasicLevel)-1018 锤子剪刀布

    一.问题定义 大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如下:         剪刀 > 布, 锤子 > 剪刀, 布 > 锤子 现给出两人的交 ...

  7. 攻防世界MISC进阶区—48-51

    48.Become_a_Rockstar 得到无类型文件,010 Editor打开为几段话,看到标示性的NCTF{),怀疑是用脚本加密后的结果,网上查了一下,得知Rockstar是一种语言,用rock ...

  8. super详解(继承)

    //在Java中,所有的类,都默认直接或者间接继承objec类// Person 人 :父类public class Person /*extends object*/ { public Person ...

  9. 报告指SpaceX估值已达到1000亿美元,埃隆马斯克以此回击其接受政府补贴的批判

    SpaceX首席执行官埃隆-马斯克(Elon Musk)表示,名下的航天发射服务供应商市值已达到1000亿美元.该金额是根据上个月的评估报告确认的,标志着SpaceX在完成最新一轮融资,并筹集超过10 ...

  10. TCP协议调试工具TcpEngine V1.3.0使用教程

    简介   这里说的TCP协议调试定义是在开发长连接TCP协议应用时,为了验证代码流程或查找bug,需要与对端交互数据过来,当需要时可以暂停发送:单条发送:跳过发送:正常发送:发送时修改数据等.   T ...