manim
未读
今天我们来学习如何使用Manim实现漂亮的泡泡效果,本文将介绍如何使用Manim框架实现一个简单而实用的气泡特效,该特效可用于多种场景,如背景装饰、数据可视化过渡等。
1. 实现原理气泡特效的核心在于BubbleEffect类,它继承自 Manim 的 Animation 类,通过重写关键方法来实现气泡的上升、变大和透明度变化效果。在代码用需要先引入Python的库文件:
12from manim import *import random
1.1. 核心类结构BubbleEffect类的基本结构如下:
12345678910111213141516class BubbleEffect(Animation): """ 彩色气泡特效动画类 继承自Animation类,用于创建彩色气泡上升、变大、透明度变化的效果 """ def __init__( self, bubble_count=25, # 气泡数量 bubble_size_range=(0.1, ...
Manim 是一个强大的数学动画制作工具,它使得我们能够通过编程的方式创作复杂的数学动画。对于使用 Manim 的开发者来说,理解它的核心概念是非常重要的。Manim 中的三大核心对象是:Scene、Mobject 和 Animation。它们是构建任何动画的基础,掌握这些概念后,你可以更加得心应手地使用 Manim。
在本文中,我们将详细介绍这三大核心对象,并通过一些示例代码来帮助大家更好地理解它们的作用和关系。
1. Scene:场景的管理者在 Manim 中,Scene 是所有动画的容器,它负责管理和协调动画中所有对象的创建、显示以及动画效果的执行。每一个 Manim 动画都是在一个 Scene 类的子类中进行构建的。
1.1作用Scene 类定义了整个动画的结构和流程。你会在 Scene 类中设置动画的时间线,并通过调用 play() 来控制不同的动画效果。
1.2常用方法
construct():所有动画和对象的创建都在 construct() 方法中进行。你可以在这里创建图形对象、文本、动画等。
play():用于执行一个或多个动画。play() 方法会启动并渲染动画, ...
manim
未读
几何图形是manim中最重要的一类模块,manim内置了丰富的各类几何图形,本篇从最简单的点开始,逐个介绍manim中的几何模块。
manim中点相关的模块主要有3个:
Dot:通用的点
LabeledDot:在点的中间可以加一些说明文字
AnnotationDot:使用在注释场景中的点
Dot系列在manim各个模块中的位置大致如上图中所示。常用的使用代码如下
1Mobject = Dot(point=array([0., 0., 0.]), radius=0.08, stroke_width=0, fill_opacity=1.0, color=ManimColor('#FFFFFF'), 其他参数)
1. 主要参数点比较简单,所以参数不多,主要就是控制点的大小,颜色,透明度等等属性。 Dot对象:
参数名称
类型
说明
point
[float,float,float]
点的坐标
radius
float
点的半径
stroke_width
float
边框厚度
fill_opacity
float
透明度
color
...
今天我在互联网找到一个极为令我震惊的 Manim 演示效果,如果不是眼见为实的看到了实际效果,断然不敢相信这是真的,毕竟初中数学课本上没有讲过这个数学知识,同样是九年义务教育,别人怎么这么优秀。
1.引入库文件Manim 代码的实现,是通过 Python 的代码库,所以代码开始的时候,需要引入相关的函数库:
12from manim import * import numpy as np
2.引入相关场景12class RadialDotsAnimation(Scene): def construct(self):
3.定义小球数量1234# 小球数量num_dots = 48text_num_dots = Text(f"Number of Dots: {num_dots}").scale(0.5).to_corner(UL)self.play(Write(text_num_dots))
4.定义小球半径和颜色12345678910111213# 最大半径max_radius = 2# 小球颜色列表colors = [ RED ...
geogebra
未读
今天我们来学习如何在Geogebra中借助滑动条来平移图形。平移是初中几何数学中重要的图形操作,在Geogebra中平移图形,需要借助一个向量,然后通过更改向量与滑动条之间的关系,进而调控对图形的平移操作,下面我们来看演示过程。
1.创建平移对象我们在绘图区中使用绘图工具来绘制一个三角形,没有什么特殊的要求,只需要借助绘图工具来添加一个三角形就可以。
2.创建滑动条创建滑动条的方法比较简单,在工具栏中选择滑动条工具,鼠标点击就可以创建,
然后再点击绘图区,就可以创建一个滑动条
需要注意的是,滑动条的最大数值和最小数值需要做出调整,我这里最小值取0,避免平移的方向改变。最大值决定了图形平移的距离,也需要结合自己的需求。
3.创建向量同样是鼠标点击工具栏中的线段,在里面选择向量
同样是鼠标点击绘图区,就可以制作出自己需要的向量,向量的方向和大小没有关系,后期都可以调整,特别是向量的大小,我们需要结合滑动条来调控。
但是我们需要注意的是,创建的向量要注意起点和终点,我们需要的是滑动条与终点的结合。接下来,我们还需要对向量进行一下修改。
4.修改向量在代数区找到向量的终点点E,要看 ...
manim
未读
在Manim中,Elbow 是一个表示直角连接线的图形类,常用于示意图、流程图或需要显示垂直连接的情况。毋庸置疑的,这个形体直接继承自VMobject,也具有属性调控代码,下面我们来看具体的举例。
1.简单代码12345678from manim import *class ElbowExample(Scene): def construct(self): # 创建一个Elbow(默认角度为0,即向右上方) elbow = Elbow() self.play(Create(elbow)) self.wait()
这段代码就是创建一个简单的直角,属性都是默认的属性值,下面来看演示效果
2.属性介绍12345Elbow( width=0.2, # 每个臂的长度 angle=0, # 旋转角度(弧度) **kwargs # 其他VMobject参数)
从当前来看,Elbow仅仅是两个属性值,一个是宽度width,直角边长,另一个是角度angle,指的是旋转的角度。 ...
manim
未读
文本的样式主要指颜色和字体相关的属性设置。对于manim的两个文本对象 Text和 Tex来说, Text对象有更多的属性可以调整样式,相对来说,由于 Tex主要用来显示数学公式,所以关于样式的属性要少一些。下面介绍一些我在视频制作时最常用的一些颜色和字体相关的属性。
1. 颜色相关颜色设置主要分为单色,渐变色两种,对于 Text对象,manim还提供了更加精细的按字符设置的属性。
1.1 单色单色设置通过 color属性。
123456Text("hello world", color=RED)Text("你好,世界", color=YELLOW)Text("こんにちは世界", color=GREEN)Tex(r"$a^2 + b^2 = c^2$", color=RED)Tex(r"$E = mc^2$", color=YELLOW)Tex(r"$e^{i\pi} + 1 = 0$", color=GREEN)
运行效果:
1.2 渐变色 ...
manim
未读
在 Manim(数学动画引擎) 中,RoundedRectangle 是一个常用的形状类,用于创建带有圆角的矩形。今天我们来学习一下Manim中的圆角矩形,从简单的例子开始做测试,先来看下面的例子。
1.简单例子就是简单的创建一个蓝色的圆角矩形,里面涉及到了一些参数:
1234567891011121314from manim import *class RoundedRectangleExample(Scene): def construct(self): # 创建圆角矩形 rr = RoundedRectangle( corner_radius=0.5, # 圆角半径 width=4, # 宽度 height=2, # 高度 color=BLUE, fill_opacity=0.5 ) self.play(Create(rr)) self.wait()
来 ...
在使用 Hexo 博客程序的时候,总是避免不了给博客添加一个合理的分类和标签,今天我们就来看一看如何给 Hexo 博客添加分类和标签,当然了,我们给 Hexo 博客添加分类和标签,也是使用代码命令来创建的,先来看创建分类选项。
1.创建分类在 Hexo 创建分类页面的方法很简单,我们来看下面的过程
1.1创建指令我们在博客所在的文件夹打开命令行,然后在里面执行以下命令:
1hexo new page categories
成功之后会给出相对应的提示
1INFO Created: ~/Documents/blog/source/categories/index.md
当然,因为路径的问题,代码提示中INFO Created:的提示路径也不会相同,但是后面的
1/source/categories/index.md
代码内容是相同的,当然了,如果你已经创建过分类页面,会出现
1/source/categories/index-1.md
的信息提示,然后我们进入路径文件,找到里面的index.md文件,打开后默认内容是这样的
1234---title: 文章分类date: 20 ...
manim
未读
在代数问题中,矩阵是必不可少的工具,manim中提供了一套展示矩阵(Matrix)的模块, 专门用于在动画中显示矩阵格式的数据。关于矩阵的类主要有4个:
Matrix:通用的矩阵
IntegerMatrix:元素是整数的矩阵
DecimalMatrix:元素包含小数的矩阵
MobjectMatrix:元素可以是图形的矩阵
其实IntegerMatrix,DecimalMatrix,MobjectMatrix都是继承自Matrix的,只要掌握了Matrix即可,其他几个不过是Matrix的特殊情况。
1. 主要参数参数基本都是为了控制矩阵的显示样式。
参数名称
类型
说明
matrix
str
一个二维数组,也就是矩阵的数值
v_buff
float
矩阵元素的行间距
h_buff
float
矩阵元素的列间距
bracket_h_buff
float
矩阵括弧和元素之间的距离
bracket_v_buff
float
矩阵括弧的高度
add_background_rectangles_to_entries
bool
是否给矩阵元素加一个矩形背 ...
manim
未读表格是一种常见的数据展示形式,manim提供了Table模块专门用于显示表格形式的数据。表格Table和上一节介绍的矩阵Matrix都是用来显示二维数据的,不过,Table的表现力更强,比如,它可以显示表头信息,列名信息等等。
Table模块也细分了多个对象:
通用Table:显示任何内容
DecimalTable:表格内容为数字
IntegerTable:表格内容为整数
MathTable:表格内容是公式
MobjectTable:表格内容是图形
其中,DecimalTable,IntegerTable,MathTable和MobjectTable都是继承自Table的。 本篇重点介绍Table对象,其他对象是Table的一个特例。
1. 主要参数主要参数包括:
参数名称
类型
说明
table
list[list]
表格中显示的数据
row_labels
list[VMobject]
行标签,相当于表格的第一列
col_labels
list[VMobject]
列标签,相当于列名,表格的第一行
top_left_entry
VMobject
表格左上角 ...
manim
未读
对于长篇大段的文本显示,manim中专门提供了一个Paragraph类。 使用Paragraph,就不需要用拼接Text的方式来显示大段的文本。
1. 主要参数Paragraph可以看作是基于Text的扩展,所以Text的默认参数Paragraph也可以使用。不过当你需要显示多行文本的时候,用Paragraph更加方便。
当然Paragraph特有的参数还有:
参数名称
类型
说明
text
list
可以输入多个字符串
line_spacing
float
行间距
alignment
str
对齐方向
Text也有text参数,是str类型,只能输入一个字符串, 而Paragraph的text参数是不定长的列表,可以输入多个字符串,每个字符串显示成一行。
line_spacing参数Text也有,不过Text多用来显示单行的文本,这个参数用处不大, 而Paragraph则用来显示多行文本,所以line_spacing对Paragraph更加有用。
alignment参数用来设置段落文本各行的对齐方式的,默认左对齐,还可以设置右对齐和居中对齐。
2. 使用示 ...
manim中主要有3个用于显示文本内容的对象,前两篇已经介绍过Text和Paragraph。 本篇介绍最后一个MarkupText,与前两个不同的是,MarkupText的文本中支持实用一些HTML的语法, 因此,它的表现力更胜前两个。 MarkupText在manim各个模块中的位置大致如上图中所示。
1. 主要参数MarkupText除了支持在文本中使用HTML语法,也提供了丰富了参数。
参数名称
类型
说明
text
str
显示的文本
font
str
字体
warn_missing_font
bool
字体缺失时是否警告提示
fill_opacity
float
透明度
stroke_width
float
字体线条粗细
color
str
颜色
line_spacing
float
行间距(多行文本时生效)
slant
str
斜体
weight
float
粗体
gradient
tuple
渐变色
justify
bool
是否对齐
should_center
bool
是否居中
height
float
文 ...
manim
未读
本质上,manim 提供了三个不同的“概念”,您可以将它们组合在一起以生成数学动画:数学物体(mathematical object,简称 moject )、动画( animation )和场景( scene )。在接下来的介绍中可以看到,这三个概念中的每一个都作为一个单独的“类”被独立的执行。这三个类是:Mobject、Animation 和 Scene。
MobjectMobject 是 manim 动画中基本的构造块(building block)。每一个从 Mobject 派生出的类代表着一个可以被放置在屏幕上的物体。例如,Circle、Arrow 和 Rectangle 等简单形状都是 mojects 。更复杂的构造如 Axes、FunctionGraph 或 BarChart 也是mojects。
如果你试图在屏幕上显示 Moject 的一个实例,你只会看到一个空的框架,原因是 Mobject 类是所有其他 Mobject 的抽象基类,即它没有任何可以在屏幕上显示的预先确定的视觉形状。它只是一个可以展示的东西的骨架,因此,您很少需要使用 Moject 的普通实例;相反, ...









