manim边学边做--形状匹配

news/2024/12/24 0:52:59/文章来源:https://www.cnblogs.com/wang_yb/p/18443032

manim中有几个特殊的用于形状匹配的对象,它们的作用是标记和注释已有的对象,本身一般不单独使用。

形状匹配对象一共有4种:

  1. BackgroundRectangle:为已有的对象提供一个矩形的背景
  2. Cross:用交叉线标记已有对象
  3. SurroundingRectangle:用矩形框围住某个对象
  4. Underline:为某个对象添加一条下划线

形状匹配的作用就是在动画中突出标记一些对象,便于更好的表达动画中的内容。

1. 主要参数

BackgroundRectangle的主要参数有:

参数名称 类型 说明
mobject Mobject 被添加背景的对象
color Color 背景的颜色
stroke_width float 背景边框的粗细程度
stroke_opacity float 背景边框的透明度
fill_opacity float 背景的透明度
buff float 背景的大小,buff越大,背景的范围越大

背景默认是没有边框的,通过stroke_width参数添加边框。

Cross的主要参数有:

参数名称 类型 说明
mobject Mobject 被添加交叉标记的对象
stroke_color Color 交叉线的颜色
stroke_width float 交叉线的粗细程度
scale_factor float 交叉线的长度

SurroundingRectangle的主要参数有:

参数名称 类型 说明
mobject Mobject 矩形框所维的对象
color Color 矩形框的颜色
buff float 矩形框与其中内容之间的间隔
corner_radius float 矩形框尖角的曲率

Underline的主要参数有:

参数名称 类型 说明
mobject Mobject 添加下划线的对象
buff float 下划线与对象之间的间隔

2. 使用示例

形状匹配的对象总体来看都比较简单,它们的多用在一些辅助显示其他主要对象的场景中。

下面通过一些示例看看它们的作用。

2.1. 矩形背景示例

manim中的动画默认是黑色背景的,可以通过BackgroundRectangle给某个对象添加一个其他颜色的矩形背景。

用来突出显示或着重表现某个对象。

# 红色背景
c = Circle()
BackgroundRectangle(c, color=RED)# 红色背景+透明度0.2
c = Circle()
BackgroundRectangle(c, color=RED, fill_opacity=0.2)# 背景加边框
c = Circle()
BackgroundRectangle(c,color=RED,fill_opacity=0.2,stroke_width=1,stroke_opacity=1,
)# 背景旋转
c = Circle()
b = BackgroundRectangle(c,color=RED,fill_opacity=0.2,
).rotate(PI / 4)

2.2. 交叉标记示例

交叉标记的交点就是被标记对象的中心,标记的颜色,粗细和长短都可以调整。

# 标记的颜色
c1 = Circle(color=GREEN)
Cross(c1, stroke_color=RED)c2 = Circle(color=YELLOW)
Cross(c2, stroke_color=BLUE)c3 = Circle(color=BLUE)
Cross(c3, stroke_color=GREEN)# 标记的粗细
c1 = Circle(color=GREEN)
Cross(c1, stroke_width=2)c2 = Circle(color=YELLOW)
Cross(c2, stroke_width=5)c3 = Circle(color=BLUE)
Cross(c3, stroke_width=10)# 标记的长短
c1 = Circle(color=GREEN)
Cross(c1, scale_factor=0.5)c2 = Circle(color=YELLOW)
Cross(c2, scale_factor=1)c3 = Circle(color=BLUE)
Cross(c3, scale_factor=2)

2.3. 矩形边框示例

矩形边框一般用来突出显示某些文字,边框的尖角和与文字的间距都可以调整。

# 边框的间隔
fu1 = Text("福")
SurroundingRectangle(fu1, buff=0.1)fu2 = Text("福")
SurroundingRectangle(fu2, buff=0.3)fu3 = Text("福")
SurroundingRectangle(fu3, buff=0.6)# 边框的圆角
fu1 = Text("福")
SurroundingRectangle(fu1, corner_radius=0.1)fu2 = Text("福")
SurroundingRectangle(fu2, corner_radius=0.3)fu3 = Text("福")
SurroundingRectangle(fu3, corner_radius=0.8)

2.4. 下划线示例

下划线是最简单的一种标记,不仅仅是中英文字,它也可以加在公式和图形的下面。

# 文字的下划线
t1 = Text("English")
Underline(t1, color=GREEN)t2 = Text("中文")
Underline(t2, color=BLUE)t3 = Tex("$a^2+b^2=c^2$")
Underline(t3, color=YELLOW)# 图形的下划线
t1 = Square(side_length=1)
Underline(t1, color=GREEN)t2 = Circle(radius=0.5)
Underline(t2, color=BLUE)t3 = Star(outer_radius=0.6)
Underline(t3, color=YELLOW)

3. 附件

文中完整的代码放在网盘中了(shape_matcher.py),

下载地址: 完整代码 (访问密码: 6872)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/806680.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高级程序设计语言第2次作业

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C/ 这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/2024C/homework/13282 学号:102300134 姓名:曾威 练习题目: 第一题: 目标:体现出整数的上溢,浮点数的上溢,浮点数的下溢 思路:命名一个整型…

Day07——数据类型

数据类型 1.强类型语言,要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用; ​ JAVA就是强类型语言 2.弱类型语言。 八大数据类型注意:在表示long类型时,数后面有L 表示float类型时,数后面有F或f 字符单个字,用单引号引用;字符串…

Docker实操过程

Docker实操过程 体会 知乎上搜“docker入门”搜到的笔记总是起一个赚噱头的标题,然后点进去一看,里面大多是一些入门内容的简单罗列,要么对于背景内容长篇大论让读者抓不住重点,要么对于命令API简单罗列,入门者甚至连这些API如何衔接使用,这些命令大概发生了什么可能都没…

谷歌收录批量查询,教你批量查询谷歌收录的方法

批量查询谷歌收录是网站管理员和SEO人员常见的需求,以下是一些实用的方法和步骤来实现这一目标: 一、使用Google Search Console(谷歌搜索控制台) 注册并验证网站:首先,在Google Search Console中注册并验证你的网站。这是获取网站在谷歌搜索结果中详细数据的基础。 下载…

修改Nacos2.4.1源码-适配达梦数据库麒麟ARM系统(国产XC化)

前言:应集团公司现在推广XC化,其中基础环境需要用麒麟ARM操作系统和达梦数据库,而官网的nacos默认适配mysql,需要重新编译源码来适配需要对接的数据库,2.4.2试验了一把,安装启动后 nacos 控制台出现 “创建命名空间失败 / 数据库语法问题”,经分析,问题出在源码的sql语…

怎么查看网站是否被谷歌收录,你会查看网站被谷歌收录的方法吗

查看网站是否被谷歌收录是一个相对简单的过程,以下是几种常用的方法,可以帮助你确定网站或其特定页面是否已被谷歌搜索引擎索引: 一、使用“site:”搜索指令 打开谷歌搜索引擎(Google)。 在搜索框中输入“site:你的网站域名”(注意使用英文冒号,并将“你的网站域名”替换…

操作系统:保护模式(二)内存模型

平坦内存模型 现代操作系统一般不会使用过于复杂的分段机制,而是采用平坦内存模型 + 分页模型来管理内存。 平坦内存模型(Flat Memory Model),这是现代操作系统(如 Linux 和 Windows)常用的内存模型。在这种模型中,所有段的段基址都为 0,段界限为 4GB,使得整个内存空间…

操作系统:保护模式(五)特权

特权机制 特权特权级数值越大,级别越小。通常,因为操作系统是为所有程序服务的,可靠性最高,而且必须对软硬件有完全的控制权,所以它的主体部分必须拥有特权级0,并处于整个环形结构的中心。也正是因为这样,操作系统的主体部分通常又被称做内核(Kernel、 Core)。 特权级1和…

操作系统:保护模式(一)GDT 与分段机制

GDT 与分段机制 CPU开机时运行于实模式,寻址方式是段寄存器 \(\times\) 10+偏移寄存器=物理地址,主要原因是因为 8086 地址线和数据线不匹配导致的。但是这种寻址方式既不安全也不支持现代操作系统所需的、多任务支持、cpu 特权模式等。 在实模式下,对于基址,变址寻址的寄存…

CSP2024-30

A 题意:将一个圆等分为 \(K\) 分,给出其中 \(n\) 个等分点的编号,\(x_i < x_{i + 1}\)。 有向边 \(i \to j\) 存在,当且仅当 \(j\) 是距离 \(i\) 最大的点(不唯一),且与图中其他边无交点(端点不算)。 求图中最多有多少条边。\(3 \le K \le 10^9, 3 \le n \le \min(…

小白上手Arcgis—用于结合Netlogo、matlab等进行复杂网络操作

小白上手Arcgis(Netlogo复杂网络数据预处理) 1.前言废话:昨天突然想到可以写一下博客,用来记录一下自己的工作,主要是涉及复杂网络方面。情况简介:本人Arcgis小白,之前只是略微知道有这么个软件,以及知道怎么打开软件。学渣一个,而且不是学gis方向的,但由于工作需要,要…

windows10如何安装jdk8,并且配置java home环境?超详细!

前言 大家好,我是小徐啊。记得我刚学习Java的时候,我的老师第一步就是教我们如何安装jdk并且配置java环境。这应该算是学习Java的第一步吧。虽然这个安装过程对我来说已经不是非常难了,但是我知道,对于一些刚入门的小伙伴还是经常容易搞错的,所以,今天小徐就写一篇详细的…