首页 > 编程语言 >Manim的一个用于数学动画的 Python 库中渲染代码的功能。

Manim的一个用于数学动画的 Python 库中渲染代码的功能。

时间:2024-08-14 23:53:06浏览次数:18  
标签:width Python 代码 self default 库中 World Hello Manim

   Code 函数是 Manim(一个强大的数学动画库)中的一个重要工具,旨在将代码片段以视觉化的方式呈现。在教育和演示场合中,向观众展示算法或代码逻辑时,清晰的视觉效果是必不可少的。通过 Code 函数,用户可以轻松地将特定编程语言的代码导入,并且自定义其外观,包括字体、颜色、背景形状和行间距等。

该函数支持多种编程语言,如 Python、Java 和 C++ 等,使得用户能够根据需要选择语言并进行语法高亮。此外,Code 函数还实现了行号功能,方便观众追踪上下文,从而增强理解。通过调节参数,如 tab_width 和 line_spacing,用户可以精细控制代码的表现形式。这种功能让 Manim 在编程教育和技术讲座中,成为一个极具价值的工具,不仅能展示数学概念,还能有效传达编程思想。

Code(file_name=None, code=None, tab_width=3, line_spacing=0.3, font_size=24, 
font='Monospace', stroke_width=0, margin=0.3, indentation_chars='    ', 
background='rectangle', background_stroke_width=1, 
background_stroke_color=ManimColor('#FFFFFF'), corner_radius=0.2, insert_line_no=True, 
line_no_from=1, line_no_buff=0.4, style='vim', language=None, generate_html_file=False, 
warn_missing_font=True, **kwargs)

Code 函数用于在 Manim 中渲染代码段。它允许用户配置各种属性,例如字体、背景样式、行号等,以便可以精确地控制代码的视觉表现。

参数解释

  1. file_name (default: None):
    指定代码文件的名称,如果为 None,则需要通过 code 参数提供代码。

  2. code (default: None):
    要渲染的代码内容。如果不提供 file_name,则必须提供此参数。

  3. tab_width (default: 3):
    每个制表符的宽度,以空格数表示。

  4. line_spacing (default: 0.3):
    行之间的间距。

  5. font_size (default: 24):
    代码字体的大小。

  6. font (default: 'Monospace'):
    使用的字体样式,默认是等宽字体。

  7. stroke_width (default: 0):
    文字的笔画宽度。

  8. margin (default: 0.3):
    代码框的边距。

  9. indentation_chars (default: ' '):
    表示缩进的字符,通常为空格字符。

  10. background (default: 'rectangle'):
    背景形状,可以是矩形或其他形状。

  11. background_stroke_width (default: 1):
    背景的笔画宽度。

  12. background_stroke_color (default: ManimColor('#FFFFFF')):
    背景边框的颜色,使用 ManimColor 方法定义颜色。

  13. corner_radius (default: 0.2):
    背景的圆角半径。

  14. insert_line_no (default: True):
    是否在渲染的代码旁插入行号。

  15. line_no_from (default: 1):
    行号的起始值。

  16. line_no_buff (default: 0.4):
    行号和代码之间的缓冲距离。

  17. style (default: 'vim'):
    代码的样式,例如颜色和语法高亮。

  18. language (default: None):
    指定代码的语言以便于高亮。

  19. generate_html_file (default: False):
    是否生成 HTML 文件。

  20. warn_missing_font (default: True):
    是否在缺少指定字体时发出警告。

  21. kwargs:
    允许传递其他参数。 

示例代码

现在,我们将使用上述所有参数来写一个示例代码段:

from manim import *

class CodeFromString(Scene):
    def construct(self):
        code1 = '''from manim import Scene, Square

        class FadeInSquare(Scene):
        def construct(self):
        s = Square()
        self.play(FadeIn(s))
        self.play(s.animate.scale(2))
        self.wait()
        '''
        rendered_code1 = Code(  
                    file_name=None,  #指定代码文件的名称,如果为 None,则需要通过 code 参数提供代码。
                    code=code1  ,  #要渲染的代码内容。如果不提供 file_name,则必须提供此参数。
                    tab_width=4,  #每个制表符的宽度,以空格数表示。
                    line_spacing=0.4,  #行之间的间距。
                    font_size=24,     #代码字体的大小。
                    font="Monospace",  #使用的字体样式,默认是等宽字体。
                    stroke_width=1,  #文字的笔画宽度。
                    margin=0.8,      #代码框的边距。
                    indentation_chars='    ',  #表示缩进的字符,通常为空格字符。
                    background="square",  #背景形状,可以是矩形或其他形状。
                    background_stroke_width=1,  #背景的笔画宽度。
                    background_stroke_color=ManimColor('#AAAAAA'),  #背景边框的颜色,使用 ManimColor 方法定义颜色。
                    corner_radius=2.5,  #背景的圆角半径。
                    insert_line_no=True,  #是否在渲染的代码旁插入行号。
                    line_no_from=1,  #行号的起始值。
                    line_no_buff=0.5,  #行号和代码之间的缓冲距离。
                    style='monokai',  #代码的样式,例如颜色和语法高亮。
                    language='Python',  #指定代码的语言以便于高亮。
                    generate_html_file=False,  #是否生成 HTML 文件。
                    warn_missing_font=False  #是否在缺少指定字体时发出警告。
        )
        self.add(rendered_code1)

 运行结果:

 示例2:

from manim import *

class CodeFromString(Scene):
    def construct(self):
        code = '''from manim import Scene, Square

class FadeInSquare(Scene):
    def construct(self):
        s = Square()
        self.play(FadeIn(s))
        self.play(s.animate.scale(2))
        self.wait()
'''
        rendered_code = Code(code=code, tab_width=4, background="window",
                            language="Python", font="Monospace")
        self.add(rendered_code)

 language 参数可以用于指定要高亮显示的编程语言。

language 参数可以用于指定要高亮显示的编v虽然支持的语言可能会依赖于具体的实现和配置,但以下是一些常见的编程语言选项:

  1. python: 用于 Python 代码高亮。
  2. javascript: 用于 JavaScript 代码。
  3. java: 用于 Java 代码。
  4. c: 用于 C 语言代码。
  5. cpp: 用于 C++ 代码。
  6. html: 用于 HTML 代码。
  7. css: 用于 CSS 代码。
  8. bash: 用于 Bash 脚本。
  9. ruby: 用于 Ruby 代码。
  10. swift: 用于 Swift 代码。
  11. go: 用于 Go 语言代码。

具体的支持语言和高亮方式可以参考相应的文档或源代码

1.Python和C的效果:

from manim import *

class CodeFromStringC(Scene):
    def construct(self):
        code1 = '''from manim import Scene, Square

            class FadeInSquare(Scene):
                def construct(self):
                    s = Square()

            '''
        code2 ='''#include <studio.h>
 
            int main()
            {
                printf("Hello, World");
                return(0);
            }
            '''
        rendered_code1 = Code(code=code1, tab_width=4, background="window",
                            language="Python", font="Monospace")
        rendered_code2 = Code(code=code2, tab_width=4, background="window",
                            language="C", font="Monospace")
        aa=VGroup(rendered_code1,rendered_code2)
        aa.arrange(DOWN, buff=0.5) 
        self.add(aa)

 2.C++和C#的效果:

from manim import *

class CodeFromStringC(Scene):
    def construct(self):
        code1 = '''#include<iostream> 
 
int main()
{
    std::cout << "Hello World";
    return 0;
}
            '''
        code2 ='''using System;
class Program
{
    public static void Main(string[] args)
    {
        Console.WriteLine("Hello, World");
    }
}
            '''
        rendered_code1 = Code(code=code1, tab_width=4, background="window",
                            language="C++", font="Monospace")
        rendered_code2 = Code(code=code2, tab_width=4, background="window",
                            language="C#", font="Monospace")
        aa=VGroup(rendered_code1,rendered_code2)
        aa.arrange(DOWN, buff=0.5) 
        self.add(aa)

3. Bash,Basic和HTML

from manim import *

class CodeFromStringB(Scene):
    def construct(self):
        code1 = '''echo "Hello, World"'''
        code2 ='''PRINT "Hello, World"'''
        code3 =''' Hello, World'''
        code4 ='''public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
'''
        rendered_code1 = Code(code=code1, tab_width=4, background="window",
                            language="Bash", font="Monospace")
        rendered_code2 = Code(code=code2, tab_width=4, background="window",
                            language="Basic", font="Monospace")
        rendered_code3 = Code(code=code3, tab_width=4, background="window",
                            language="HTML", font="Monospace")
        rendered_code4 = Code(code=code4, tab_width=4, background="window",
                            language="Java", font="Monospace")
        aa=VGroup(rendered_code1,rendered_code2,rendered_code3,rendered_code4)
        aa.arrange(DOWN, buff=0.5) 
        self.add(aa)

 后面还有很多,你们也可以试一下。

8. Clipper

? "Hello, World"

9. Delphi

program HelloWorld;
begin
  Writeln('Hello, World');
end.

10. CoffeeScript

console.log 'Hello, World'

11. MatLab

disp('Hello, World')

12. Julia

println("Hello, World")

13. JavaScript

document.write('Hello, World');

14. Logo

print [Hello, World]

15. jQuery

$("body").append("Hello, World");

16. Perl 5

print "Hello, World";

17. Pascal

program HelloWorld;
begin
  WriteLn('Hello, World');
end.

18. Objective-C

#import 
#import 
 
int main(void)
{
    NSLog(@"Hello, World");
    return 0;
}

19. Visual Basic .NET

Module Module1
    Sub Main()
        Console.WriteLine("Hello, World")
    End Sub
End Module

20. R

cat('Hello, World')

21. VBScript

MsgBox "Hello, World"

22. XSLT

      Hello, World

23. Processing

void setup(){
  println("Hello, World");
}

24. Ruby

puts "Hello, World"

25. Swift

print("Hello, World")

标签:width,Python,代码,self,default,库中,World,Hello,Manim
From: https://blog.csdn.net/qq_45449625/article/details/141201868

相关文章

  • python系列&deep_study系列:一文讲清chatGPT的发展历程、能力来源和复现它的关键之处
    这里写目录标题一文讲清chatGPT的发展历程、能力来源和复现它的关键之处1.ChatGPT是什么2.ChatGPT以及GPT系列模型2.1GPT-1/2/32.2GPT-3.5(InstructGPT)3.复现chatGPT的难点3.1海量的数据3.2超大规模的模型架构3.3深度人员参与(SFT,FeedME,PPO)3.4长期技术积累3......
  • python系列&deep_study系列:TOCH_npu不适配报错packages/torchaudio/lib/libtorchaudio
    TOCH_npu不适配报错packages/torchaudio/lib/libtorchaudio.so:undefinedsymbol:_ZNK5torch8autograd4Node4nTOCH_npu不适配报错packages/torchaudio/lib/libtorchaudio.so:undefinedsymbol:_ZNK5torch8autograd4Node4n报错:背景:解决办法:TOCH_npu不......
  • Python while编程题目|AI悦创Python一对一教学辅导
    你好,我是悦创。以下是十道有创意的while循环编程题目,每道题目都有一定的难度,适合锻炼编程逻辑和思维能力。题目1:旋转字符串描述:给定一个字符串,每次循环将字符串的第一个字符移到末尾,打印所有可能的旋转结果,直到回到原始字符串为止。输入:"abcde"输出:abcdebcdeacdeabde......
  • 用Python画二手玫瑰
    下载数据importturtle#rose_data为存储数据的py文件importrose_datadefdraw_line(pix_list):'''依据pix_list的像素点数据画图'''turtle.penup()turtle.goto(*pix_list[0])turtle.pendown()forpixinpix_list:turtle.got......
  • 2024华为OD机试真题-启动多任务排序(C++/Python)-C卷D卷-200分
    2024华为OD机试题库目录(Python、C++)-(C卷+D卷)-CSDN博客目录题目描述输入描述输出描述用例1题目解析代码c++python题目描述一个应用启动时,会有多个初始化任务需要执行,并且任务之间有依赖关系,例如A任务依赖B任务,那么必须在B任务执行完成之后,才能开始执行A任务。......
  • 以定时器为例研究一手 Python asyncio 的协程事件循环调度
    在使用Python的asyncio库实现异步编程的过程中,协程与事件循环这两个概念可以说有着千丝万缕的联系,常常是形影不离的出现,如胶似漆般的存在,asyncio库到底是如何调度协程的?下面以Python3.8中的asyncio.sleep定时器为例研究一手asyncio的源码实现。几个主要的概念首先......
  • Python计算机基础
    什么是编程语言?编程语言是人与计算机的沟通介质通过代码达到目的用编程语言写出一个个文件,这对文件会达到一个个目的。计算机组成原理计算机操作系统编程语言是什么?和计算机交流,传递信息什么是编程?编程是通过编程语言编写文件通过代码达到目的用编程语......
  • 一篇文章带你弄懂Python基础之列表介绍和循环遍历
    大家好,我是Go进阶者,今天给大家分享一些Python基础(列表基础和循环遍历介绍),一起来看看吧~一、列表介绍想一想:字符串可以用来存储一串信息,那么想一想,怎样存储所有同学的名字呢?定义100个变量,每个变量存放一个学生的姓名可行吗?有更好的办法吗?答:列表。1.列表的格式namesList=[......
  • 【面试】分别解释一下C++、Java、Python程序的执行过程
    面试模拟场景面试官:你能分别解释一下C++、Java、Python程序的执行过程吗?参考回答示例1.C++程序的执行过程1.1编译过程:源代码编写:开发者编写C++源代码,文件扩展名为.cpp。预编译(Preprocessing):预编译是编译的第一步,使用预处理器(如cpp)对源代码进行处理。这一步主......
  • 【锂电池SOC估计】【PyTorch】基于Basisformer时间序列锂离子电池SOC预测研究(python代
     ......