manim边学边做--Variable

cnblogs 2024-06-15 08:39:00 阅读 88

VariableMobjects分类中专门用来显示变量的一个class

前面两篇介绍的IntegerDecimalNumber都可以作为变量Variable来显示。

image.png

Variablemanim各个模块中的位置如上图中所示。

1. 主要参数

Variablelabel = value的形式展示数值的变化情况。

一般会结合其他动画一起使用,在其他动画运行时动态的显示其数值的变化。

它的主要参数有:

参数名称 类型 说明
var float 要显示的数字
num_decimal_places int 保留的小数位数,自动四舍五入
label

- str

- Tex

- MathTex

- Text

- SingleStringMathTex

变量的标签,也就是变量的名称
var_type

- DecimalNumber

- Integer

变量的类型,有IntegerDecimalNumber两种。

这里label参数的类型,TexMathTex等等也是manimMobjects中的模块,后续会详细介绍。

2. 使用示例

下面通过示例看看Variable如何使用的。

2.1. 类型

Variable支持IntegerDecimalNumber两种类型的变量。

var1 = Variable(100.123, Text("整数"), var_type=Integer)

var2 = Variable(3.14159, Text("浮点数"), var_type=DecimalNumber)

out.gif

从上面的示例可以看出,对于var1,虽然它的值100.123是浮点数,

但是设置var_type=Integer之后,还是会以整数的形式来显示。

2.2. 公式

Variablelabel除了像上面的示例一样支持中文,还可以用数学公式:

var1 = Variable(3, Tex(r"$x$"), var_type=Integer)

var2 = Variable(4, Tex(r"$y$"), var_type=Integer)

var3 = Variable(5, Tex(r"$\sqrt{x^2+y^2}$"), var_type=Integer)

out.gif

2.3. 联动

最后,既然是变量,肯定能够动态的变化。

Variable专门有个tracker属性,

通过它可以实时的设置和获取Variable的值,达到动态显示的效果。

start = 1

var1 = Variable(start, Tex(r"$x$"), var_type=Integer)

var2 = Variable(start, Tex(r"$x^2$"), var_type=Integer)

var3 = Variable(start, Tex(r"$x^3$"), var_type=Integer)

# var2 随着 var1 变化,是var1的平方

var2.add_updater(lambda v: v.tracker.set_value(var1.tracker.get_value() ** 2))

# var3 随着 var1 变化,是var1的立方

var3.add_updater(lambda v: v.tracker.set_value(var1.tracker.get_value() ** 3))

# 动态设置 var1 的递增

self.play(var1.tracker.animate.increment_value(1))

self.play(var1.tracker.animate.increment_value(1))

self.play(var1.tracker.animate.increment_value(1))

self.play(var1.tracker.animate.increment_value(1))

self.play(var1.tracker.animate.increment_value(1))

out.gif

3. 附件

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

下载地址: 示例代码 (访问密码: 6872)



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。