Manim中的问题特效还是比较多的,今天我们来学习一种非常不错的特效,包含一种做视频标题必备的文字特效,本文将介绍如何使用Manim实现波浪形文字特效,通过自定义动画类让文字产生波浪般的动态效果。
1. 实现原理波浪形文字特效的核心是通过自定义Animation类,对文本对象中的每个字符应用不同的位置偏移,从而形成波浪效果。需要引入两个文件:
12from manim import *from manim.scene.scene import Scene
接下来我们来分析具体实现:
1.1. 自定义 Animation类1234567891011121314151617181920class WaveText(Animation): """波浪形文字特效动画类""" def __init__( self, text_mobject, amplitude=0.2, frequency=2, phase=0, direction=UP, **kwargs ): # 保存参数 ...
manim
未读
使用Manim难免会遇到渲染函数图像的问题,特别是初中数学使用Manim制作课件,今天我们就来简单的总结一下,使用Manim制作分段函数的图像该如何制实现这个过程,做一个记录分析,主要是帮助自己记住一些简单的知识,高手滑过。
1.画一个分段函数我们先来制作一个分段函数的图像,来看下面的代码
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879from manim import *import numpy as npclass PiecewiseFunctionPlot(Scene): def construct(self): # 设置坐标系 axes = Axes( x_range=[-3.5, 3.5, 1], y_range=[-1.5, 3.5, 1], ...
geogebra
未读
今天我们来分享一个图形平移的方法,同样是使用滑动条配合向量来平移图形,和前面的一篇文章:在Geogebra中使用滑动条平移图形稍微有不同的地方,我们上次使用滑动条,是修改的向量终止坐标,感兴趣的朋友可翻阅一下,今天我们使用的方法,是使用Geogebra中的平移指令。
1.平移指令我们在代数区的输入框中,输入中文平移,就可以得到上面的提示关键词
1平移(对象,向量)
指令中的对象很好解释,就是需要我们平移的对象,我们准备平移的那个图形,向量也好解释,就是平移的向量,和鼠标操作的区别就是我们只需要输入好对应的指令参数就可以。
2.实例说明我们需要提前设置好需要平移的对象,我们仍然以一个简单的三角形为例子,创建一个简单的三角形
然后我们鼠标点击绘图区,创建这个多边形
然后记住这个多边形的标识,我这里是t1,然后我们创建滑动条
鼠标点击绘图区,就可以创建一个滑动条,基本上没有什么注意事项,但是一定要记住滑动条的标识,例如我这里滑动条的标识是d。
3.创建向量在工具栏中找到向量工具,鼠标点击一下,然后就可以去绘图区创建向量
我这里创建了一个向量,没有什么特殊的地方,字母是自然生成的 ...
geogebra
未读
动态数学软件GeoGebra本身没有直接的显示或隐藏按钮,今天我们来介绍一个最简单的方法,就是使用复选框来隐藏和显示对象。我们先在绘图区添加一个任意的图形,例如我们在这里添加了一个圆。
下面我们就来通过添加复选框,来显示和隐藏这个圆,在工具栏中找到复选框
然后鼠标点击之后,回到绘图区,再次点击鼠标,就会出现添加复选框的按钮
在标题栏中输入填入我们想做的事情,也就是起一个合适的名字,然后从下列列表、代数区或绘图区中选择对象,操作也很简单,鼠标点击之后会出现一个对象列表框,从中选中我们需要显示/隐藏的对象就可以。
然后点击确定按钮,添加完成复选框。此时我们观察绘图区中的复选框,打钩状态的时候,圆是显示状态
鼠标点击复选框,取消打钩之后,圆随之消失
其实,复选框,其实就是将布尔值填入对象的显示条件框,通过真(打勾)或假(不打勾)来控制显示或隐藏。好了,今天的教程相对来说比较简单,有时间我们来学习其他的显示/隐藏的方法。
这两天才发现的一个问题,就是我安装的Manim在渲染代码的时候,如果出现中文和公式并存的情况下,会不停地报错,当然这个问题也不是绝对的,如果是单纯的中文问题,使用Text一般情况下也没有问题,单纯的使用Mathtext调用公式,也没有问题,就是中文字体和公式同时出现的时候报错。
我这里显示的是
1ValueError: Latex error converting to dvi
然后是让你查看日志文件,其实这个问题前两天就出现过,相同的代码,放在我的Manim环境中就不能渲染,朋友的电脑就可以渲染。互联网的方法也试过但是效果不明显,直到有个朋友的一篇文章提醒了,就是配置的LaTeX有问题,导致渲染数学公式或者中文字体报错了。修改方法也很简单,找到Python安装文件夹
1yourpath\Python\Lib\site-packages\manim\utils
然后按照上面的路径一直查找,找到utils文件夹里面的
1tex.py
和
1tex_templates.py
两个文件,打开tex.py文件之后,在大约21行的位置,找到
1_DEFAULT_PREAMBLE = r&q ...
geogebra
未读
GeoGebra初学者需要掌握的几个基本要素,包括Slider滑块、文本框、插入图片、确定按钮、复选框、输入栏、视图和对象列表。了解这些要素是使用GeoGebra进行数学探索和可视化的基础,有助于快速上手软件操作,更好的高效利用GeoGebra创建模拟。
1.Slider滑动条 GeoGebra中的滑动条通常用于更改变量的值并生成动画。每当我们将变量分配为输入时,都会为其变量值引入滑块。并且当右键单击滑块时,“动画打开”,人们可以观看动画。在滑块的属性窗口中,我们可以指定动画速度以及动画应该如何重复。
2.文本框GeoGebra中的文本框既是输入工具又是输出工具。您既可以提供数据,也可以显示数据。它通过呈现程序员提供的数据来充当输出工具。我们可以改变文本的颜色和字体大小,添加数学符号,显示整个计算过程,甚至添加动画。
此外,我们可以在此处提交何时显示和何时不显示特定信息的条件。
3.插入图片GeoGebra中的我们可以开发动画,并使用相关的图像构建精彩的故事让孩子们掌握。此外,插入图片是一个简单的操作。此工具连接到滑块以显示动画,并连接到文本框以显示与图像相关的故事。我们可以使 ...
geogebra
未读
给GeoGebra中的动画添加播放/暂停按钮,是一个很不错的动画设计亮点,可以有效的避免在动画播放/暂停过程中,还需要对滑动条进行操作。给GeoGebra中的动画添加播放/暂停按钮的问题,今天我们来谈一谈简单实现过程。
1.核心思路用一个布尔变量(如 running)记录动画状态,点击按钮时取反该变量,并用
1StartAnimation(对象, running)
来控制动画的播放/暂停。
单按钮方案:在按钮的 Click 脚本中先翻转状态,再启动动画,同时把按钮标题切换为“暂停/开始”,实现一体化控制。
双按钮方案:一个“开始”按钮执行
1StartAnimation(对象, true)
另一个“暂停”按钮执行
1StartAnimation(对象, false)
这样设置,逻辑更直观。
2.操作步骤在这里,我们推荐经典单按钮先来看一个动画演示效果图
下面我们来看创建过程,首先创建动画依赖对象,在指令框中输入
1f(x)=sin(x)
创建函数图像上的点,在这里我们输入
1A=描点(f)
新建布尔变量:
1running = false
创建按钮,设置 Click 脚本: ...
geogebra
未读
在数学中制作试卷、课件中经常用到分段函数图象或者函数在某一区间内的图象问题,“如果”指令能轻易地实现这一效果。在GeoGebra中基本形式为:
1如果(条件, 成立时返回的值, 不成立时返回的值)
这个函数会根据条件的真假来返回对应的值。提前说一句,这里的如果,就是判断语句if,使用的地址,就是Geogebra的输入栏,有些朋友的输入指令框不能输入中文,也就是输入中文之后不显示内容,暂时不知道什么问题,日后更新。
1.基础函数绘制函数在指定区间内的图象:指令格式:
1如果[ <条件>, <结果> ]
指令范例:
1如果[-1<=x<=3,x^2]
指令功能:作出函数y=x²,x∈[-1,3]的图象。图像如下图
2.两段函数绘制多分段函数的图象: 指令格式:
1如果[ <条件>, <结果>, <否则> ]
指令范例:
1如果[x<=-1,2x,x^2]
指令功能:作出对应分段函数的图象,在x<=-1的区间之内,显示y=2x的图像,在x>-1的区间之内,显示y=x²图像
3.多段函数若要绘 ...
manim
未读你是否曾经想过,让复杂的函数曲线在屏幕上以动画形式优雅地呈现出来?或者希望通过编程,自定义并控制数学图形的每一个细节,使其生动地表达抽象的概念?本文将带你探索如何使用 Manim 实现这一切。
一、Manim 简介Manim(Mathematical Animation Engine)是一个功能强大的Python库,用于创建专业级的数学动画。由知名数学视频博主3Blue1Brown(Grant Sanderson)开发,Manim能够以编程方式生成精美的动画效果,从函数曲线到几何图形,再到复杂的动画演示,皆可轻松实现。
Manim 官方文档:https://docs.manim.community/
Manim 教程:https://docs.manim.community/en/stable/tutorials/quickstart.html
3Blue1Brown YouTube 频道:https://www.youtube.com/c/3blue1brown
二、Axes 类概述绘制自定义函数曲线会到Axes类,它是Manim中用于创建二维坐标轴的对象。继承自Coordina ...
manim
未读
相机(Camera)在二维的场景下使用不多,一般在3D场景中提及的比较多。 相机相当于我们看动画的视角,简单来理解的话,相当于我们的眼睛(实际情况会复杂一些,相机还有其他一些辅助功能)。默认的相机焦点在屏幕的中心位置,相机默认是以俯视的视角查看所有的元素。
之前的介绍的常用动画效果和高级动画效果,都没有对相机进行调整过,所以,是通过移动和变换各个元素来实现动画效果。
本篇介绍的相机,则是另一种制作动画的方式,它不改变元素在屏幕或者说在坐标系中的位置, 通过改变相机的位置和角度来实现动画效果。
举个现实世界中的简单例子,如果有个杯子,我们可以通过转动杯子来从各个角度观察杯子; 而如果是一栋楼的话,我们无法移动它,只能围着楼走一圈来观察它,这个过程就相当于移动相机。
下面通过一些实例来看看移动相机带来的不一样的动画效果。
1. 相机移动相机移动常用的两种方式:
移动焦点:改变相机的焦点,焦点在那个元素,那个元素就会在屏幕中心
改变视野:改变相机与元素的距离,离得越远,物体越小。
1.1 移动焦点manim中移动焦点要继承 MovingCameraScene类, 然后通过 self. ...
manim
未读
在常用的动画效果中,介绍了一些元素的创建,销毁,移动和变换的方法,这些方法都是针对单个动画的。 如果需要多个动画互相关联,或者元素需要有更复杂的运动方式,那么,仅仅依靠常用的动画效果可能就无法满足要求了。
本篇的高级动画效果主要介绍一些更加灵活的元素运动方式,如何组合多个动画,以及如何联动多个动画的方式。 掌握了这些方法,就能够表达出更加复杂的数学几何动画。
1. 沿着路径运动常用的动画一般都是直线运动或者圆弧运动,而 MoveAlongPath 可以让元素沿着任意的函数轨迹来运动。下面的示例是一个点沿着一个较为复杂的三角函数形成的路径运动。
1234567cos_func = FunctionGraph( lambda t: np.cos(t) + 0.5 * np.cos(7 * t) + (1 / 7) * np.cos(14 * t), color=RED,)sc.add(cos_func)d1 = dot(cos_func.get_start())sc.play(MoveAlongPath(d1, cos_func), rate_func=linear, run ...
manim
未读
本篇介绍Manim中的两个旋转类的动画,名称差不多,分别是Rotate和Rotating。
Rotate类主要用于对图形对象进行指定角度、围绕特定点的精确旋转,适用于几何图形演示、物理模拟和机械运动展示等场景;
Rotating类则侧重于创建让对象围绕指定轴或点持续旋转的动画,用于动态图标、天体运动模拟和装饰性动态元素等场景。
1. 动画概述1.1. RotateRotate是一个用于对Mobject进行旋转的动画类。
它通过指定旋转角度、旋转轴等参数来实现精确的旋转效果,例如,它可以围绕特定点(如对象的中心或者自定义的点)进行旋转。
此外,还可以设置旋转的起始角度和终止角度,并且可以指定旋转的速率,通过控制动画运行的时间来调整旋转的快慢。
它的主要参数有:
参数名称
类型
说明
mobject
Mobject
要旋转的Mobject对象
angle
float
旋转角度,以弧度为单位指定
axis
np.ndarray
旋转轴,用向量表示
about_point
[float]
旋转中心
about_edge
[float]
指定边界框点的方向作为旋 ...
manim
未读manim的主要功能就是制作动画,因此它提供了各类丰富的动画效果,本篇主要介绍其中最常用的几种动画效果。至于特殊的动画效果,以及自定义动画效果的方法以后再另外介绍。
1. 创建效果展示某个元素或者文字时,一下子就全显示出来会显得比较突兀,通过创建效果的动画,让各个元素的出现更加的自然。 常用的创建效果动画主要有:Create,Write和FadeIn三个方法。
1.1 CreateCreate一般用在创建图形上,绘制时图形逐步显示出来。 比如:
12s = Square(side_length=2, color=BLUE)self.play(Create(s))
运行效果:
1.2 WriteWrite用在文字的创建上,绘制文字时逐个显示文字。 比如:
123456t = Text( "Welcome to Manim", t2c={"Welcome": BLUE, "Manim": RED}, t2f={"Manim": "STCaiyun&q ...
做Hexo博客有一个避免不了的问题,就是如何更快更好地发布到网站上,因为Hexo是本地静态博客,发布到网站上就需要与服务器链接,常见的链接种类很多但是最常用的还是Git链接,毕竟安全有效,可问题如果使用Git链接发布,就需要给服务器创建Git用户并给与相关的权限。
今天这篇文章,主要是介绍如何给服务器创建Git账户,和利用宝塔面板创建hexo博客网站。
1.配置SSH配置SSH密钥,实现免密登录(首次提交时仍需要验证密码),如之前配过可跳过此步。首先是使用本地的Git软件,桌面右键选择Git Bash Here
1$ ssh-keygen -t rsa -C "邮箱地址"
设置好邮箱之后,就是连续敲回车确定,然后看到提示秘钥以保存在本地的xxx/用户/xxx路径下,如果没有出现提示就多敲几次回车,在提示路径下找到id_rsa文件,记住复制文件内容,下面配置Git时会用到。下图是使用服务器登录对话框创建公钥,同样需要记住公钥生成的文件路径,准备复制。
如果使用的服务器的SSH链接,这个文件路径是服务器的路径,此时复制文件内容的过程,可以借助提前安装好的宝塔面板来 ...

















