首页 > 其他分享 >manim边学边做--Variable

manim边学边做--Variable

时间:2024-06-14 23:22:42浏览次数:23  
标签:var1 -- var tracker Variable Integer type 边学边

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)

标签:var1,--,var,tracker,Variable,Integer,type,边学边
From: https://www.cnblogs.com/wang_yb/p/18248823

相关文章

  • hive笔记
    hive环境搭建基础环境准备由于centos7系统自带的mariadb数据库会和mysql冲突,所以首先要将它删掉。使用rpm命令sudorpm-qa|grep-imariadb查看是否还有mariadb数据库。如下图就是存在:根据显示的版本将对应mariadb数据库删除。仍是使用rpm的命令sudorpm-e--nodepsm......
  • Vue3——watch监视
    watch监视的作用watch:监视数据的变化,与Vue2中的watch作用相同。特点:Vue3中的watch只能监视以下四种数据:ref定义的数据reactive定义的数据函数返回的一个值(getter函数)一个包含上述情况的数组语法:       watch(参数1,参数2,参数3)       参数1:被监视的数据......
  • golang select {} 和 for {} 的区别
     select{}与for{}在Go语言中都是循环结构,但它们的行为和用途有所不同: select{}:是一个无限阻塞的select语句,没有指定任何case。主要用于等待通道操作或其他事件,在没有明确的通信或信号需求时保持运行状态。当程序需要在没有明确结束条件的情况下保......
  • caddy 服务器的 Docker 镜像构建流程
     构建一个包含Caddy服务器的Docker镜像,关键部分:https://github.com/caddyserver/caddy-docker/blob/master/Dockerfile.tmpl这个Dockerfile精心设计,用于自动化构建一个包含最新版CaddyWeb服务器的Docker镜像,支持自动HTTPS,并配置了基本的文件结构和执行环境。 1.......
  • 模拟集成电路设计系列博客——7.1.6 多比特SAR ADC
    7.1.6多比特SARADC我们目前讨论的逐次逼近型ADC在每个周期都通过单次的比较将搜索空间一分为二。这个搜索可以通过在每个周期进行多次比较来实现加速,每次将搜索空间切分为更小的区域。例如,如果我们想要猜测一个1到128之间的数时,我们除了提问“这个数是否大于64”,还可以同时提问......
  • 【pycharm调试模式异常】can‘t open file ‘C:\\Program‘: [Errno 2] No such fil
    错误系统:wendows10pycharm版本:pycharm专业版和社区版都有对应问题2023.1和2023.2都有同样问题python版本:3.11官网问题地址上面只是我出问题的环境,不知道其他环境或者版本有没有同样的问题现象:执行debug,程序启动后立即退出,错误信息:can’topenfile‘C:\Progra......
  • Linux openSSH 只能够使用SFTP 不能使用ssh登陆
    实施目标:1. 用户只能通过sftp访问,不能登录SSH2.用户要被锁定在特定的目录下,没有读写其它目录的权限 下面开始:首先修改sshd的配置文件:#vim/etc/ssh/sshd_config将该文件的末尾修改如下:#Subsystem sftp /usr/lib/openssh/sftp-server#该行(上面这行)注释掉Subsystem sftp......
  • C# 字符串(String)
    字符串在C#中是特殊的存在,它是引用类型(内存分配在托管堆上),属于不可改变的对象。任何对字符串的操作都会返回1个新的字符串。字符串加@符号,不会对转义字符进行处理,例如:stringstr1=@"C:\Windows\System32";字符串加$符号,可占位插入变量,例如:stringstr2=$"{str1}";.ToSt......
  • 【Hachker News】如果你不需要钱,你会干什么?
    HachkerNews上的一个问题,标题是“如果你不需要钱,你会做什么?”回答摘要问题链接:Whatwouldyouspendyourtimeworkingonifyoudidn’tneedmoney?A1:我会把时间投入到城市周围的农村地区,建造高质量的住宅,并以成本价出售。购买我的第一套房是我做过的最好也是最坏......
  • JAVASE学生管理系统
    JAVASE学生管理系统1.项目介绍此项目是JavaSE第一阶段的项目,主要完成学生对象在数组中的增删改查,此项目为基础项目并没有使用到框架,仅仅是对java基础的练习巩固,以及编程思想训练2.项目展示2.1.添加功能2.2.查看功能2.3.修改功能2.4.删除功能2.5.退出功能3.......