Manim的代码练习02:在manim中Dot ,Arrow和NumberPlane对象的使用

news2024/9/21 14:52:20
  • Dot:指代点对象或者表示点的符号。
  • Arrow:指代箭头对象,包括直线上的箭头或者向量箭头等。
  • NumberPlane:指代数轴平面对象,在Manim中用来创建包含坐标轴的数学坐标系平面。
  • Text:指代文本对象,用来显示文字信息。

 1.Dot对象的使用。

class Dot(point=array([0., 0., 0.]), radius=0.08, 
stroke_width=0, fill_opacity=1.0,
 color=ManimColor('#FFFFFF'), **kwargs)
  1. point(Point3D)- 点的位置。
  2. radius(float)- 点的半径。
  3. stroke_width(float)- 点边缘的厚度。
  4. fill_opacity(float)- 点的填充颜色的不透明度。
  5. color(ParsableManimColor)- 点的颜色。
  6. kwargs - 要传递给圆形对象的其他参数。

所以我们现在用两种方式进行编写代码:

from manim import *

class DotExample01(Scene):
    def construct(self):
         #背景颜色的调试
        self.camera.background_color = "#ece6e2"
        
        dot1 = Dot(point=LEFT, radius=0.08)
        dot2 = Dot(point=ORIGIN)
        dot3 = Dot(point=RIGHT)
        
        dot4=Dot(point=([0, 2, 0]), radius=0.1, stroke_width=0, 
    fill_opacity=1.0, color=ManimColor('red'))
        dot5=Dot(point=([0, -2, 0]), radius=0.1, stroke_width=0, 
    fill_opacity=1.0, color=ManimColor('red'))
        self.add(dot1,dot2,dot3,dot4,dot5)

 运行结果如下:

 2.Arrow对象的使用

class Arrow(*args, stroke_width=6, buff=0.25,
 max_tip_length_to_length_ratio=0.25,
 max_stroke_width_to_length_ratio=5, **kwargs)

参数:

  • args – 要传递给Line的参数。
  • stroke_width(float)– 箭头的粗细。受max_stroke_width_to_length_ratio影响。
  • buff(float)– 箭头从起点和终点的距离。
  • max_tip_length_to_length_ratio(float)– tip_length与箭头长度成比例。增加此比率会提高tip_length的最大值。
  • max_stroke_width_to_length_ratio(float)– stroke_width与箭头长度成比例。增加此比率会使stroke_width的最大值提高。
  • kwargs – 要传递给Line的其他参数。

 接下来我们实际使用一下代码:

from manim import *

# 定义ArrowExample类,用于展示箭头的不同效果
class ArrowExample(Scene):
    
    # 构建场景
    def construct(self):
        # 创建箭头对象
        arrow_1 = Arrow(start=RIGHT, end=LEFT, color=GOLD)
        arrow_2 = Arrow(start=RIGHT, end=LEFT, color=GOLD, tip_shape=ArrowSquareTip(), buff=0.2).shift(DOWN)
        
        # 将箭头对象放入Group中
        g1 = Group(arrow_1, arrow_2)
        
        # 创建正方形对象和箭头对象
        square = Square()
        arrow_3 = Arrow(start=LEFT, end=RIGHT)
        arrow_4 = Arrow(start=LEFT, end=RIGHT, buff=0)
        
        # 将正方形对象和箭头对象放入Group中
        g2 = Group(square, arrow_3, arrow_4)
        
        # 创建箭头对象
        arrow_5 = Arrow(ORIGIN, config.top).shift(LEFT * 4)
        arrow_6 = Arrow(UP + config.top, config.top).shift(LEFT * 3)
        
        # 将箭头对象放入Group中
        g3 = Group(arrow_5, arrow_6)
        
        # 将所有Group对象放入另一个Group中,并排列
        group_all = Group(g1, g2, g3).arrange(buff=2)
        
        # 将整个Group对象添加到场景中展示
        self.add(group_all)

结果如下:

 3.NumberPlane对象的使用

class NumberPlane(x_range=(-7.111111111111111, 7.111111111111111, 1), 
y_range=(-4.0, 4.0, 1), x_length=None, y_length=None, 
background_line_style=None, faded_line_style=None, 
faded_line_ratio=1, make_smooth_after_applying_functions=True, **kwargs)

参数:

  • x_range (Sequence[float] | None):水平方向平面上的[x_min、x_max、x_step]值。
  • y_range (Sequence[float] | None):垂直方向平面上的[y_min、y_max、y_step]值。
  • x_length (float | None):平面的宽度。
  • y_length (float | None):平面的高度。
  • background_line_style (dict[str, Any] | None):影响平面背景线构造的参数。
  • faded_line_style (dict[str, Any] | None):类似于background_line_style,影响场景背景线的构造。
  • faded_line_ratio (int):确定背景线中的方块数:2 = 4个方块,3 = 9个方块。
  • make_smooth_after_applying_functions (bool):目前无效。
  • kwargs (dict[str, Any]):要传递给Axes的其他参数。

接下来实际操作:

from manim import *
class NumberPlaneExample(Scene):
    def construct(self):
         #背景颜色的调试
        self.camera.background_color = WHITE
        #调试网格线的颜色,宽带和透明度
        number_plane = NumberPlane(
            background_line_style={
                "stroke_color": RED,
                "stroke_width":2,
                "stroke_opacity": 1
                                    }
        )
        self.add(number_plane)

结果如下:

 再试一下:

from manim import *
class NumberPlaneExample(Scene):
    def construct(self):
         #背景颜色的调试
        self.camera.background_color = WHITE
        #调试网格线的颜色,宽带和透明度
        number_plane=NumberPlane(x_range=(-7.111111111111111, 7.111111111111111, 1), y_range=(-4.0, 4.0, 1), 
                    x_length=None, y_length=None, background_line_style=None, faded_line_style=None, 
                    faded_line_ratio=1, make_smooth_after_applying_functions=True)
     
        self.add(number_plane)

运行结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1925575.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国产数据库VastBase与C/C++程序适配

背景 2022年底的项目,记录一下。 某项目后台使用C程序开发,使用的是OCI连接Oracle数据库。现需要做去O国产化适配改造。 本文聊聊C/C应用程序如何使用VastBase替换Oracle。 编译适配 开发包获取 从VastBase官方或接口人处获取OCI开发包,包含…

品牌产业出海指南如何搭建国际化架构的跨境电商平台?

在“品牌&产业出海指南 – 成功搭建跨境电商平台”系列中,我们将从电商分销系统、跨境平台商城/多商户商城系统和国际化架构三个方面对帮助您梳理不同平台模式的优缺点、应用场景、开发重点和运营建议。 在“品牌&产业出海指南 – 成功搭建跨境电商平台”系…

verITAS:大规模验证图像转换

1. 引言 斯坦福大学Trisha Datta、Binyi Chen 和 Dan Boneh 2024年论文《VerITAS: Verifying Image Transformations at Scale》,开源代码实现见: https://github.com/zk-VerITAS/VerITAS(RustPython) 依赖https://github.com/a…

Java的高级特性

类的继承 继承是从已有的类中派生出新的类,新的类能拥有已有类的属性和行为,并且可以拓展新的属性和行为 public class 子类 extends 父类{子类类体 } 优点 代码的复用 提高编码效率 易于维护 使类与类产生关联,是多态的前提 缺点 类缺乏独…

纯vue+js实现数字0到增加到指定数字动画效果功能

关于数字增加动画效果网上基本上都是借助第三方插件实现的,就会导致有的项目安装插件总会出问题,所有最好使用原生vue+js实现,比较稳妥 纯vue+js实现数字0到增加到指定数字动画效果功能 vue+js 实现数字增加动画功能 效果图 其中,关于数字变化的间隔时间,延时效果都可…

Linux环境下激活使用Navicat

Linux环境下激活使用Navicat 解压navicat15-premium-linux.zip文件,存放目录自行定义,此处我解压到/home/admin/Downloads,下载地址:https://www.123pan.com/s/hyS7Vv-zJCR.html # 在桌面创建临时目录 mkdir ~/Desktop/navicat…

Flutter和React Native(RN)的比较

Flutter和React Native(RN)都是用于构建跨平台移动应用程序的流行框架。两者都具有各自的优势和劣势,选择哪个框架取决于您的具体需求和项目。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 以下是…

算法学习笔记(8.5)-零钱兑换问题二

目录 Question: 动态规划思路: 代码实现: 空间优化代码 Question: 给定n种硬币,第i种硬币的面值为coins[i-1],目标金额为amt,每种硬币可以重复选取,问凑出目标金额的硬币组合数量。 动态规划思路…

教你如何白嫖ioDraw

ioDraw推出了这个活动,大家看看~ 领取页面 邀请奖励 您和好友都将获得7天的会员权益 邀请攻略 活动介绍 1. 每成功邀请一个新用户,邀请者与被邀请者均可获得7天会员 2. 每年最高可得350天 3. 新用户是指首次登录ioDraw的用户 获取邀请链接步骤 1. 浏…

VS2019配置OpenGL的库

OpenGL环境的配置&#xff08;GLUT安装教程&#xff09;_opengl官网-CSDN博客 我是根据这篇来配置的&#xff0c;然后&#xff1a; 引用的头文件不是<OpenGL/glut.h>而是<GL/glut.h>&#xff0c;然后就可以运行了。

CCSI: 数据无关类别增量学习的持续类特定印象| 文献速递-基于深度学习的多模态数据分析与生存分析

Title 题目 CCSI: Continual Class-Specific Impression for data-free class incremental learning CCSI: 数据无关类别增量学习的持续类特定印象 01 文献速递介绍 当前用于医学影像分类任务的深度学习模型表现出令人鼓舞的性能。这些模型大多数需要在训练之前收集所有的…

【tomcat】Tomcat如何扩展Java线程池原理

池化技术 在后端中&#xff0c;对于经常使用池化就是来提升系统性能&#xff0c;比如数据库连接池、线程池连接池等&#xff0c;本质都是利用空间换时间的来提升性能&#xff0c;用来避免资源的频繁创建和销毁&#xff0c;以此提高资源的复用率&#xff0c;所以合理设置系统所…

springboot个人健康信息管理小程序-计算机毕业设计源码

摘要 在当今这个数字化、信息化的时代&#xff0c;个人健康管理已成为人们生活中不可或缺的一部分。随着生活节奏的加快&#xff0c;越来越多的人开始关注自己的身体状况&#xff0c;希望能够及时了解并调整自己的生活习惯&#xff0c;以达到最佳的健康状态。为此&#xff0c;我…

Codeforces Round 957 (Div. 3) D,F

D. Test of Love 很容易想到dp&#xff0c;对于dp的转移方程也比较好写&#xff0c;当前点只能从当前点前面m个点转移过来&#xff0c;那么思考转移的条件&#xff0c;对于前面的点 j j j &#xff0c;如果 j j j 是水并且 i i i 和 j j j 不相邻&#xff0c;那么不能进行转…

初始化列表和explicit关键字和static成员

初始化列表 1.初始化和赋值的概念&#xff1a; 首先我们先来了解一下成员变量初始化和赋值的概念&#xff0c;初始化是是对成员变量进行一次赋值&#xff0c;注意是只能一次赋值&#xff0c;而赋值是可以多次进行赋值的。 2.初始化列表的引出&#xff1a; 我们知道了初始化…

ftp pool 功能分析及 golang 实现

本文探究一种轻量级的 pool 实现 ftp 连接。 一、背景 简要介绍&#xff1a;业务中一般使用较多的是各种开源组件&#xff0c;设计有点重&#xff0c;因此本文探究一种轻量级的 pool 池的思想实现。 期望&#xff1a;设置连接池最大连接数为 N 时&#xff0c;批量执行 M 个 F…

Transformer模型:Decoder的self-attention mask实现

前言 这是对Transformer模型Word Embedding、Postion Embedding、Encoder self-attention mask、intra-attention mask内容的续篇。 视频链接&#xff1a;20、Transformer模型Decoder原理精讲及其PyTorch逐行实现_哔哩哔哩_bilibili 文章链接&#xff1a;Transformer模型&…

【JVM实战篇】内存调优:内存泄露危害+内存监控工具介绍+内存泄露原因介绍

文章目录 内存调优内存溢出和内存泄漏内存泄露带来什么问题内存泄露案例演示内存泄漏的常见场景场景一场景二 解决内存溢出的方法常用内存监控工具Top命令优缺点 VisualVM软件、插件优缺点监控本地Java进程监控服务器的Java进程&#xff08;生产环境不推荐使用&#xff09; Art…

JavaWeb(三:JDBC 与 MVC)

JavaWeb&#xff08;一&#xff1a;基础知识和环境搭建&#xff09;https://blog.csdn.net/xpy2428507302/article/details/140365130?spm1001.2014.3001.5501JavaWeb&#xff08;二&#xff1a;Servlet与Jsp&#xff0c;监听器与过滤器&#xff09;https://blog.csdn.net/xpy…

Python蜂窝通信Wi-Fi和GPU变分推理及暴力哈希加密协议图消息算法

&#x1f3af;要点 &#x1f3af;图模型和消息传递推理算法 | &#x1f3af;消息传递推理和循环消息传递推理算法 | &#x1f3af;空间人工智能算法多维姿势估计 | &#x1f3af;超图结构解码算法量子计算 | &#x1f3af;GPU处理变分推理消息传递贝叶斯网络算法 | &#x1f3…