午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

Manim:超贊的Python數(shù)學(xué)動畫庫

 漢無為 2024-04-28 發(fā)布于湖北

圖片

01

引言

本文將帶大家走進(jìn)Manim的世界!這是一個由大名鼎鼎的3Blue1Brown 的作者Grant Sanderson創(chuàng)建,它能通過精美的動畫讓數(shù)學(xué)栩栩如生,特別適合用于制作各類數(shù)學(xué)教學(xué)視頻。

在本文中,我們將探索 Manim 在數(shù)學(xué)可視化方面的強(qiáng)大功能,看看它是如何將抽象的概念變得引人入勝、令人驚嘆的。準(zhǔn)備好大開眼界吧!

02

 安裝

在正式開始之前,我們需要進(jìn)行安裝,一般使用pip即可安裝,命令如下:

pip install manim
安裝完成后,我們就可以開始一起探索這個超棒的動畫庫了。準(zhǔn)備好用 Manim 制作精美動畫了嗎?讓我們接下來一起深入了解五個示例!我們將從簡單的動畫開始,逐步過渡到更復(fù)雜的動畫,展示Manim 的強(qiáng)大功能和直觀性。

03

  顯示簡單文本

首先,讓我們創(chuàng)建一個動畫,在屏幕上顯示文字 'Hello,Manim!'。下面是實(shí)現(xiàn)這一目的的代碼片段:
# scene.pyfrom manim import *
class HelloWorld(Scene): def construct(self): text = Text('Hello, Manim!') self.play(Write(text)) self.wait()

之后在當(dāng)前文件所在目錄下的命令行窗口,執(zhí)行以下命令:

manim -pql scene.py HelloWorld

即可得到如下結(jié)果:

圖片

04

  分析解釋

在上述中,首先我們導(dǎo)入了 Manim 的基本組件,定義了一個繼承自 Scene 的自定義類 HelloWorld,并創(chuàng)建了一個包含輸出信息的Text對象,使用 Write函數(shù)制作文本動畫,self.play()顯示動畫,self.wait()暫停動畫片刻。

此外,我們對上述運(yùn)行命令行進(jìn)行分析:

manim -pql scene.py HelloWorld

首先,上述命令在包含描述繪畫代碼的文件scene.py上執(zhí)行manim。此外,此命令告訴 manim 要渲染的確切場景,在本例中,它是HelloWorld。這是必需的,因?yàn)閱蝹€場景文件scene.py 可能包含多個場景類的定義。

接下來,標(biāo)志位 -p 告訴 manim在渲染場景后播放場景,而 -ql 標(biāo)志位告訴 manim 以低質(zhì)量渲染場景。當(dāng)然,指定渲染場景動畫質(zhì)量的其他選項(xiàng)還包括 -qm-qh-qk,分別表示中、高和4k高清質(zhì)量。

05

 繪制幾何圖形

現(xiàn)在,讓我們用一個圓形和一個正方形制作一個簡單的動畫。
# scene.pyfrom manim import *
class Shapes(Scene): def construct(self): circle = Circle() square = Square() self.play(Create(circle)) self.play(circle.animate.shift(LEFT)) self.play(Create(square)) self.play(square.animate.shift(RIGHT)) self.wait()
上述代碼中,我們定義了一個形狀類Shapes,并創(chuàng)建了圓形和正方形對象。然后,我們使用 Create 繪制相應(yīng)對象的形狀,并使用animate.shift() 方法將它們分別向左和向右移動。
同樣在命令行中,運(yùn)行如下命令:
manim -pql scene.py Shapes

得到結(jié)果如下:

圖片



06

動畫組合
接著讓我們用動畫演示從正方形到圓形的轉(zhuǎn)換。
# scene.pyfrom manim import *
class Transformation(Scene): def construct(self): square = Square() circle = Circle() self.play(Create(square)) self.play(Transform(square, circle)) self.wait()

在本例中,我們同時創(chuàng)建了正方形和圓形對象,使用創(chuàng)建動畫函數(shù)Create繪制正方形,然后使用變換動畫函數(shù)Transform將正方形變?yōu)閳A形。

同樣在命令行中,運(yùn)行如下命令:

manim -pql scene.py Transformation

得到結(jié)果如下:

圖片

06

演示數(shù)學(xué)函數(shù)

接著讓我們來繪制一條簡單的拋物線:

# scene.py
class FunctionPlot(Scene): def construct(self): ax = Axes( x_range=[-5, 5, 1], y_range=[-3, 3, 1], x_length=10, y_length=6, axis_config={'include_numbers': True}, ) func = lambda x: 0.1 * (x**2) curve = ax.plot(func, color=YELLOW) self.play(Create(ax)) self.play(Write(curve)) self.wait()

在上述代碼中,我們首先要設(shè)置一個Axes對象,配置其 x 方向和 y方向的范圍及長度,并啟用沿軸顯示數(shù)字。接下來,我們?yōu)閽佄锞€曲線

(y=0.1x^2)定義一個 lambda函數(shù)。最后我們使用 plot() 方法生成函數(shù)的圖形,并將其存儲在變量curve中。

同樣在命令行中,運(yùn)行如下命令:

manim -pql scene.py FunctionPlot

得到結(jié)果如下:

圖片

07

演示復(fù)雜公式

事實(shí)上,我們經(jīng)常會遇到一些數(shù)學(xué)上復(fù)雜的計算公式,此時我們可以使用 LaTeX 代碼來表示對應(yīng)的方程,舉例如下:
class LaTeXFormula(Scene):    def construct(self):        formula = MathTex(r'\int_{-\infty}^{\infty} \frac{1}{\sqrt{2\pi\sigma^2}}dx')        self.play(Write(formula))        self.wait()

我們創(chuàng)建一個名為formula MathTex 對象,其中包含描述方程的LaTeX 代碼。運(yùn)行上述代碼后,可以得到結(jié)果動畫如下:

圖片

08

總結(jié)


只需簡單幾行代碼,大家就可以使用 Manim 來制作出令人驚嘆的數(shù)學(xué)動畫。對數(shù)學(xué)和編程感興趣的同學(xué),推薦大家快來嘗試,享受其中的樂趣吧!


點(diǎn)擊上方小卡片關(guān)注我


新年寄語:

所求皆如愿,

所行皆坦途。

多喜樂,長安寧。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多