做Manim动画久了,你是否厌倦了那万年不变的黑色虚空?很多初学者(甚至老手)都想给动画加个背景图,但往往会遇到两个问题:
怎么加 是把图片放进去,还是设置相机?
看不清 背景花里胡哨,前面的文字公式瞬间“隐身”了。
今天,我们就来揭开Manim动画中一个简单却强大的技巧—为动画添加背景。通过几个小示例,分别演示两种完全不同的背景处理思路。
1. 舞台布景法使用ImageMobject类,这是最直观、最常用的方法。它的逻辑是:背景图片只是舞台上的一个普通演员,只是它长得特别大,而且站得特别靠后。
这种方式的特点是:
高度灵活:背景就是个对象(Mobject),所以它可以动!你可以让背景旋转、平移、缩放,甚至改变颜色。
层级管理:需要手动把它的 z_index 设低,或者最先添加它。
下面的第一个示例中,实现一个简单的动态背景,操作背景和操作一般的Mobject是一样的。
123456789101112131415161718192021222324252627class Method1ImageMobject(Scene): def construct(self): ...
我们在作几何图像的时候,难免会涉及两线垂直的情况,从几何常识的角度思考,此时我们就需要添加一个垂直符号,更加直观的告诉观察者,这两条线是垂直的位置关系,今天我们就来学习探究这个知识点,如何在相互垂直的两线交点处添加一个垂直符号。在Manim中,RightAngle 是用于绘制直角的几何对象。以下是关于它的详细说明:
1.参数说明123456789RightAngle( line1, # 第一条线段 line2, # 第二条线段 length=0.25, # 直角边长度(默认0.25) quadrant=(-1, 1), # 直角所在象限 stroke_width=2, # 线宽 color=WHITE, # 颜色 **kwargs)
2.参数分析从参数来看,直角所在的象限理解起来有点问题,互联网查了查资料,发现这个象限,并不是笛卡尔坐标系的象限,在数学常识中,笛卡尔坐标系的象限是
第一象限:x>0, y>0(右上)
第二象限:x0(左上)
第三象限:x<0, y<0(左 ...
manim
未读
在 Manim 动画制作中,Transform、TransformFromCopy、ReplacementTransform和Restore是四个通用的对象变换动画类。这几个类能够实现从一个对象到另一个对象的平滑过渡、复制并变换、直接替换以及状态恢复等多种效果。
Transform:将一个Mobject平滑地变换为另一个Mobject
TransformFromCopy:从一个对象复制出一个副本,并将该副本变换为目标对象
ReplacementTransform:将一个Mobject替换为另一个 Mobject,并且在变换过程中,原始对象会被目标对象完全替代
Restore:将一个Mobject恢复到其之前保存的状态时使用
通过这些动画类,我们可以清晰地展示对象之间的关系、强调变换过程、突出替换逻辑,以及灵活地在不同状态之间切换。它们在数学公式推导、图形变换、场景切换等场景中发挥着重要作用,为动画制作提供了强大的工具,帮助创作者以直观且富有表现力的方式呈现复杂的概念和过程。
1. 动画概述1.1. TransformTransform用于将一个Mobject平滑地变换为另一个Mo ...
manim
未读
做数学动画视频的软件还是比较丰富的,但是个人观点最酷的还是Manim,这款数学视频制作软件的使用难度也是很大的,需要一定的编程知识,制作数学视频时,各类几何图形是使用最频繁的。一般来说,常用的几何图形包括:点,线,圆以及多边形。
1. 点点是最简单图形,也是其他所有图形的基础。绘制其他任何图形时,都是用点来定位的。manim中生成一个点很方便,只要给定一个坐标即可。这里的坐标包含 [x, y, z]3个维度,如果绘制二维图形,将第三个坐标 z固定为 0。
1234567class DotSample(Scene): def construct(self): # 绘制 9个点 for x in range(-1, 2): for y in range(1, -2, -1): p = Dot([x, y, 0]) self.play(Create(p), run_time=0.5)
按照 3x3的格式绘制9个点
1manim -p .\samples.py DotSampl ...
manim
未读
数轴是数学中的一个基本概念,它规定了原点、正方向和单位长度的直线。Manim中的NumberLine就是一个专门用来表示数轴的对象,它允许用户设置数轴的范围、间隔和显示长度等参数,从而灵活地在动画中展示数学中的一维数值变化。下面将介绍Manim中的NumberLine对象的基本功能到使用示例。
1. 主要参数NumberLine的参数很多,定制性很强,能够满足各式各样对于数轴显示的需求。
参数名称
类型
说明
x_range
Sequence[float]
数轴刻度的范围
length
float
数轴的长度
unit_size
float
刻度之间的距离
include_ticks
bool
是否包含刻度
tick_size
float
刻度标记的长度
numbers_with_elongated_ticks
Iterable[float]
拉伸的特殊刻度列表
longer_tick_multiple
int
被拉伸刻度的拉伸比例
rotation
float
数轴旋转的角度
stroke_width
float
数轴线的粗细
i ...
manim
未读
本篇介绍Manim中两个和动画轨迹相关的类,AnimatedBoundary和TracedPath。AnimatedBoundary聚焦于图形边界的动态呈现,能精准控制边界绘制的每一帧,助力我们清晰展示几何图形的搭建流程。TracedPath则擅长实时追踪物体或点的运动轨迹,以直观且动态的方式呈现各类运动路径,为我们分析和展示复杂运动提供了强大支持 。
1. 动画概述1.1. AnimatedBoundary在讲解几何图形(如多边形、圆形等)的构造过程时,AnimatedBoundary可以逐帧展示图形边界的绘制,帮助我们理解图形是如何一步步形成的。
此外,当图形的边界随着某个参数或条件动态变化时,使用 AnimatedBoundary 也可以生动地呈现这种变化。
AnimatedBoundary动画的主要特点在于图形边界的绘制,它能够精确控制边界的出现顺序和方式。
这使得在展示几何图形的构建过程时,能够突出边界这一关键元素,更清楚地展示图形的轮廓是如何形成的。
它的参数主要有:
参数名称
类型
说明
vmobject
VMobject
要应用动画边界的 VMobje ...
manim
未读
在Manim中,ThreeDScene是一个专门为三维场景设计的类。它通过配置三维相机、支持复杂的相机运动以及管理物体与相机的交互关系,为科学可视化、工程仿真、数学教育等领域提供了强大的工具。典型应用场景包括:
三维几何图形的动态演示(如旋转立方体、莫比乌斯环)
物理过程的三维可视化(如分子运动、流体动力学)
交互式数学模型的构建(如曲面方程、向量场分析)
虚拟现实场景的原型开发
1. ThreeDScene概要ThreeDScene是Manim中用于处理三维场景的核心类。与普通的二维场景不同,ThreeDScene提供了对三维空间的全面支持,包括:
三维对象的创建和操作:可以轻松地在三维空间中放置和移动对象
相机的自由移动和旋转:通过调整相机的位置和方向,可以实现多种视角和动画效果
固定对象的显示:某些对象可以被设置为固定在相机帧中,即使相机移动,这些对象也不会改变位置或方向。
1.1. 主要参数ThreeDScene继承自Scene,所有Scene的参数都适用于ThreeDScene,
参数名称
类型
说明
camera_class
Camera
指定使用 ...
manim
未读
这两年互联网的短视频领域,有一些非常好看的数理化视频,部分博主靠着这种知识视频可以说赚的粉丝无数,本人作为一名数学教师,也想着研究一下。今天记录一段Manim的运行代码,主要是为了自己的学习,费劲巴拉的终于在自己的电脑上可以运行Manim代码了。将下面的代码保存为一个简单的sample.py格式文件然后运行就可以了。在这里多说一句.py>是Python>的文件类型。
12345678910111213141516171819202122232425# -*- coding: utf-8 -*-from manim import * class TransformExample(Scene): def construct(self): banner = ManimBanner() banner.shift(UP * 0.5) self.play(banner.create(), run_time=1) self.play(banner.animate.scale(0.3), run_time=0.5) ...
manim
未读
Manim的线其实都是线段,绘制线只要提供两个点的坐标,Manim中的线主要分为以下几类,涵盖直线、带箭头的线、虚线及特殊类型线,下面我们逐一的进行分析,篇幅有点长,多看几遍,记得收藏。
1.线的一般表达式1234567891011121314Line( start: Sequence[float] = LEFT, end: Sequence[float] = RIGHT, path_arc: float = 0, angle=PI/4, color: Color = WHITE, stroke_width: float = DEFAULT_STROKE_WIDTH, stroke_opacity: float = 1.0, buff: float = 0, line_cap: np.ndarray = np.array([0, 0, 0]), joint_type: str = "auto", line_func: Callable[[np.ndarray, np.ndarray], np.nda ...
geogebra
未读
今天我用GeoGebra做课件的时候发现添加的多边形,会有天空的效果,而且我们在对后期添加的几何图形,会有填充颜色的叠加,影响我们的几何图形展示的效果,在这里简单的截图说明一下,
于是就想着在添加的多边形中,去除掉默认的填充颜色,找了找互联网,实在没有更好的教程说明,自己摸索和网友帮助,找到了一个简单的方法,只需要点击图形之后,找到属性设置,会看到里面的颜色选项,找到虚实设置
我们只需要将里面的虚实设置为0,添加的几何图形默认的填充颜色就会变成白色。说一下特例,有些时候如果我们在颜色选项里面没有找到虚实设置,会看到样式选项里面,选择图片填充,也会起到消除颜色的效果。
好了,今天的GeoGebra又学到了一点儿知识,感谢大家来到老刘博客,希望能够帮助到您。
geogebra
未读
今天我用GeoGebra做课件的时候,想着修改一下标签字体的大小,现在的6.0版本好像没有之际调整标签字体大小的地方,需要使用相关的代码来进行字体大小的调整。例如我们来调整A点标签的字体大小,需要如下操作:
在A点的属性设置里面,找到标题设置对话框,在里面输入
1$\Huge{A}$
其中花括号里面的内容为对象标签,Huge是latex语句,是25pt的字体大小,类似的标签我们还可以写成
1$\large{%n}$
的样式,同样的道理,花括号之中的内容为对象的名称,附加一张字体对应表
好了,今天的教程我们就分享到这里,感谢大家来到老刘博客,一个分享生活经验的杂七杂八的博客。
geogebra
未读
今天我们用GeoGebra来做一个简单的函数图像的问题,就是通过列表、描点、连线的方式,来做一个函数图像,这篇文章记录的是一节视频课的内容,主要是用来总结一些用到的方法和思路,以及一些代码。我们先来看一下效果图。
首先我们需要在GeoGebra的输入框中,输入
1序列((pi/2 i,sin(pi/2 i)),i,0,5)
这是在利用序列来生成一组数值,简单说一些序列的相关问题
12345序列( <终止值> )序列( <起始值>, <终止值> )序列( <起始值>, <终止值>, <增量> )序列( <表达式>, <变量>, <起始值>, <终止值> )序列( <表达式>, <变量>, <起始值>, <终止值>, <增量> )
其中重点是表达式的问题,输入的代码中
1(pi/2 i,sin(pi/2 i))
就是一个表达式,详细的问题,需要日后想明白了在修改文章。输入上面的代码之后,就 ...
manim
未读
在Manim中,TangentLine 是一个用于在曲线上某点创建切线的工具,如果你希望绘制某个VMobject形体某一点处的切线,那么切线类TangentLine能够做到这一点。为了定位你所指定的切点的位置,你需要传入一个参数alpha,这个参数的取值范围为0到1,代表的意思为你选取的VMobject上的切点到绘制的起点的长度比上整个VMobject的轮廓线长度。以下是详细的使用方法和示例:
1.切线类TangentLine的属性:
属性
说明
vmob
需要绘制切线的VMobject形体对象
alpha
指定切点到起点的长度比上vmob整体的轮廓线长度
length
切线长度,默认为1
d_alpha
近似切线的割线的两个点分别到切点的距离,默认为1e-6,值越小,得到的切线越精准
2.简单的实例代码1234567891011121314151617from manim import *class geometry(Scene): def construct(self): circle = Circle( ...
manim
未读
这段代码使用Manim库创建了一个3D球极坐标可视化演示动画。可视化球坐标系中的几何图形,特别展示了如何将球极坐标(r, θ, φ)转换为三维笛卡尔坐标,并在球体表面上绘制曲线。具体来说,它实现了以下功能:
1. 场景设置
创建三维场景,设置初始相机视角
建立三维坐标系(X, Y, Z轴)
2. 主要视觉元素
透明球体:作为参考框架,半径=3
参考网格:球体表面的经纬网格
两条示例曲线:
红色螺旋路径:φ随θ变化,形成螺旋效果
绿色赤道圆:固定在φ=π/2(赤道平面)
3.代码分享123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 ...


