色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Manim:一個(gè)Python數(shù)學(xué)動(dòng)畫開發(fā)模塊

科技綠洲 ? 來源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-10-17 11:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Manim 是3b1b開源的一個(gè)特別漂亮的數(shù)學(xué)動(dòng)畫模塊。

我們能夠基于Manim繪制許多解釋性的動(dòng)畫,比如下面這個(gè):

圖片

也支持函數(shù)圖像:

圖片

甚至是一些3D視圖和矩陣變換,Manim都可以輕易實(shí)現(xiàn):

如果你是一個(gè)數(shù)學(xué)課程的演講者,或者你需要給觀眾演示某些數(shù)學(xué)公式的圖形,那么Manim就是你的不二之選。

Manim 支持 Python 3.7 及以上版本,推薦Python3.8.

1.準(zhǔn)備

開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細(xì)Python安裝指南 進(jìn)行安裝。

**(可選1) **如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda,它內(nèi)置了Python和pip.

**(可選2) **此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點(diǎn):Python 編程的最好搭檔—VSCode 詳細(xì)指南

請選擇以下任一種方式輸入命令安裝依賴

  1. Windows 環(huán)境 打開 Cmd (開始-運(yùn)行-CMD)。
  2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
  3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
conda create --name manim python=3.8 # 創(chuàng)建虛擬環(huán)境
conda activate manim # 切換到此虛擬環(huán)境
pip install manimgl # 安裝manim

安裝完畢后在終端輸入 manimgl,會出現(xiàn)如下的界面,說明安裝完成。

圖片

2. Manim 基本使用

首先學(xué)會畫一個(gè)基本的數(shù)學(xué)圖形,如圓圈:

from manimlib import *

class SquareToCircle(Scene):
    def construct(self):
        circle = Circle()
        circle.set_fill(BLUE, opacity=0.5)
        circle.set_stroke(BLUE_E, width=4)

        self.add(circle)

編寫完畢后,在終端里敲下這行命令:

manimgl 你的py文件名.py SquareToCircle

就能彈出一個(gè)圖形界面,繪制完成:

圖片

你還可以操作彈出的這個(gè)窗口:

  • 滾動(dòng)鼠標(biāo)中鍵來上下移動(dòng)畫面
  • 按住鍵盤上 z 鍵的同時(shí)滾動(dòng)鼠標(biāo)中鍵來縮放畫面
  • 按住鍵盤上 f 鍵的同時(shí)移動(dòng)鼠標(biāo)來平移畫面
  • 按住鍵盤上 d 鍵的同時(shí)移動(dòng)鼠標(biāo)來改變?nèi)S視角
  • 按下鍵盤上 r 鍵恢復(fù)到最初的視角

最后,你可以通過按 q 來關(guān)閉窗口并退出程序。

接下來,我們學(xué)習(xí)如何讓圓形變成方形:

# 公眾號: Python實(shí)用寶典
from manimlib import *

class CircleToSquare(Scene):
    def construct(self):
        square = Square()
        square.set_fill(BLUE, opacity=0.5)
        square.set_stroke(BLUE_E, width=4)
        circle = Circle()

        self.play(ShowCreation(circle))
        self.wait()
        self.play(ReplacementTransform(circle, square))
        self.wait()

**ShowCreation: **演示圓圈繪制過程。

**ReplacementTransform: **延時(shí)從第一個(gè)參數(shù)的圖形變化到第二個(gè)參數(shù)的圖形的過程。

**self.wait(): **等待上個(gè)play操作執(zhí)行完成。

終端運(yùn)行命令:

manimgl 你的py文件名.py CircleToSquare

效果如下:

圖片

再來一個(gè)復(fù)雜一點(diǎn)的演示,增加拉伸、旋轉(zhuǎn)和變換:

# 公眾號: Python實(shí)用寶典
from manimlib import *

class CircleToSquare(Scene):
    def construct(self):
        square = Square()
        square.set_fill(BLUE, opacity=0.5)
        square.set_stroke(BLUE_E, width=4)
        circle = Circle()

        self.play(ShowCreation(circle))
        self.wait()
        self.play(ReplacementTransform(circle, square))
        self.wait()
        # 在水平方向上拉伸到四倍
        self.play(square.animate.stretch(4, dim=0))
        self.wait()
        # 旋轉(zhuǎn)90°
        self.play(Rotate(square, TAU / 4))
        self.wait()
        # 在向右移動(dòng)2單位同時(shí)縮小為原來的1/4
        self.play(square.animate.shift(2 * RIGHT), square.animate.scale(0.25))
        self.wait()
        # 為了非線性變換,給square增加10段曲線(不會播放動(dòng)畫)
        square.insert_n_curves(10)
        # 給square上的所有點(diǎn)施加f(z)=z^2的復(fù)變換
        self.play(square.animate.apply_complex_function(lambda z: z**2))
        self.wait()

**square.animate.stretch: **將圖形拉伸第一個(gè)參數(shù)的倍數(shù),第二個(gè)維度指明方向,dim=0為水平方向,dim=1為垂直方向。

**square.animate.shift: **可以調(diào)整圖形位置和大小。

square.animate.apply_complex_function: 增加函數(shù)復(fù)變換。

效果如下:

圖片

3. Manim 坐標(biāo)軸與函數(shù)圖像

想要實(shí)現(xiàn)函數(shù)圖像繪制,我們需要先添加坐標(biāo)軸:

# 公眾號: Python實(shí)用寶典
from manimlib import *

class GraphExample(Scene):
    def construct(self):
        axes = Axes((-3, 10), (-1, 8))
        axes.add_coordinate_labels()

        self.play(Write(axes, lag_ratio=0.01, run_time=1))

運(yùn)行以下命令顯示坐標(biāo)軸:

manimgl 你的py文件名.py GraphExample

圖片

坐標(biāo)軸繪制完成后,就可以開始繪制圖像了:

上滑查看更多代碼

class GraphExample(Scene):
def construct(self):
axes = Axes((-3,10), (-1,8))
axes.add_coordinate_labels()

self.play(Write(axes, lag_ratio=0.01, run_time=1))

# Axes.get_graph會返回傳入方程的圖像
sin_graph = axes.get_graph(
lambda x:2 * math.sin(x),
color=BLUE,
)
# 默認(rèn)情況下,它在所有采樣點(diǎn)(x, f(x))之間稍微平滑地插值
# 但是,如果圖形有棱角,可以將use_smoothing設(shè)為False
relu_graph = axes.get_graph(
lambda x: max(x,0),
use_smoothing=False,
color=YELLOW,
)
# 對于不連續(xù)的函數(shù),你可以指定間斷點(diǎn)來讓它不試圖填補(bǔ)不連續(xù)的位置
step_graph = axes.get_graph(
lambda x:2.0 if x >3 else 1.0,
discontinuities=[3],
color=GREEN,
)

# Axes.get_graph_label可以接受字符串或者mobject。如果傳入的是字符串
# 那么將將其當(dāng)作LaTeX表達(dá)式傳入Tex中
# 默認(rèn)下,label將生成在圖像的右側(cè),并且匹配圖像的顏色
sin_label = axes.get_graph_label(sin_graph,"sin(x)")
relu_label = axes.get_graph_label(relu_graph, Text("ReLU"))
step_label = axes.get_graph_label(step_graph, Text("Step"), x=4)

self.play(
ShowCreation(sin_graph),
FadeIn(sin_label, RIGHT),
)
self.wait(2)
self.play(
ReplacementTransform(sin_graph, relu_graph),
FadeTransform(sin_label, relu_label),
)
self.wait()
self.play(
ReplacementTransform(relu_graph, step_graph),
FadeTransform(relu_label, step_label),
)
self.wait()

parabola = axes.get_graph(lambda x:0.25 * x**2)
parabola.set_stroke(BLUE)
self.play(
FadeOut(step_graph),
FadeOut(step_label),
ShowCreation(parabola)
)
self.wait()

# 你可以使用Axes.input_to_graph_point(縮寫Axes.i2gp)來找到圖像上的一個(gè)點(diǎn)
dot = Dot(color=RED)
dot.move_to(axes.i2gp(2, parabola))
self.play(FadeIn(dot, scale=0.5))

# ValueTracker存儲一個(gè)數(shù)值,可以幫助我們制作可變參數(shù)的動(dòng)畫
# 通常使用updater或者f_always讓其它mobject根據(jù)其中的數(shù)值來更新
x_tracker = ValueTracker(2)
f_always(
dot.move_to,
lambda: axes.i2gp(x_tracker.get_value(), parabola)
)

self.play(x_tracker.animate.set_value(4), run_time=3)
self.play(x_tracker.animate.set_value(-2), run_time=3)
self.wait()

如果在運(yùn)行的時(shí)候你出現(xiàn)了這樣的錯(cuò)誤:

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2789

    瀏覽量

    50497
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4827

    瀏覽量

    86902
  • 3d視圖
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    11085
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    [OpenHarmony北向應(yīng)用開發(fā)] 做一個(gè) loading加載動(dòng)畫

    - 本篇文章介紹了如何實(shí)現(xiàn)個(gè)簡單的loading加載動(dòng)畫,并且在提供了個(gè)demo工程供讀者下載學(xué)習(xí)。 - loading加載
    的頭像 發(fā)表于 04-20 11:29 ?2415次閱讀
    [OpenHarmony北向應(yīng)用<b class='flag-5'>開發(fā)</b>] 做<b class='flag-5'>一個(gè)</b> loading加載<b class='flag-5'>動(dòng)畫</b>

    用DeepSeek-R1實(shí)現(xiàn)自動(dòng)生成Manim動(dòng)畫

    動(dòng)畫,視覺化呈現(xiàn)抽象的概念與原理。 什么是Manim? ?Manim個(gè)基于 Python
    的頭像 發(fā)表于 02-07 12:31 ?3388次閱讀
    用DeepSeek-R1實(shí)現(xiàn)自動(dòng)生成<b class='flag-5'>Manim</b><b class='flag-5'>動(dòng)畫</b>

    使用Python和Flask開發(fā)個(gè)Web程序

    Flask 是個(gè)使用 Python 語言編寫的 Web 框架,它可以讓你高效的編寫 Web 程序。Web 程序即“網(wǎng)站”或“網(wǎng)頁程序”,是指可以通過瀏覽器進(jìn)行交互的程序。我們?nèi)粘J褂脼g覽器訪問
    發(fā)表于 02-28 08:00 ?0次下載

    Logistic回歸數(shù)學(xué)推導(dǎo)以及python實(shí)現(xiàn)

    Logistic回歸數(shù)學(xué)推導(dǎo)以及python實(shí)現(xiàn)
    發(fā)表于 02-25 14:48 ?7次下載

    個(gè)Python模塊Addit屬性設(shè)置

    Addit 是個(gè)Python模塊,除了提供標(biāo)準(zhǔn)的字典語法外,Addit 生成的字典的值既可以使用屬性來獲取,也可以使用屬性進(jìn)行設(shè)置。 這意味著你 不用 再寫這樣的字典了: body
    的頭像 發(fā)表于 11-17 10:15 ?1586次閱讀

    python包、模塊和庫是什么

    1. 模塊 以 .py 為后綴的文件,我們稱之為 模塊,英文名 Module。 模塊讓你能夠有邏輯地組織你的 Python 代碼段,把相關(guān)的代碼分配到
    的頭像 發(fā)表于 03-09 16:47 ?2544次閱讀

    如何使用Arduino構(gòu)建個(gè)電子動(dòng)畫眼睛

    在這個(gè)項(xiàng)目中,我們將使用 Arduino 構(gòu)建個(gè)動(dòng)畫眼睛。在網(wǎng)上尋找新的項(xiàng)目創(chuàng)意時(shí),我萌生了制作動(dòng)畫眼睛的想法,這個(gè)項(xiàng)目立即引起了我的注意。
    的頭像 發(fā)表于 07-10 09:52 ?3341次閱讀
    如何使用Arduino構(gòu)建<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>電子<b class='flag-5'>動(dòng)畫</b>眼睛

    Python-模塊與包

    模塊Python 程序架構(gòu)的個(gè)核心概念
    的頭像 發(fā)表于 02-16 14:55 ?1033次閱讀
    <b class='flag-5'>Python</b>-<b class='flag-5'>模塊</b>與包

    介紹Python模塊的基礎(chǔ)知識

    Python種高級編程語言,擁有豐富的庫和模塊模塊Python
    的頭像 發(fā)表于 04-21 16:48 ?1239次閱讀

    Python中常見的數(shù)學(xué)運(yùn)算方法

    Python種面向?qū)ο蟆⒔忉屝汀⒔换ナ降母呒壘幊陶Z言。它支持各種數(shù)學(xué)運(yùn)算,包括基本算術(shù)運(yùn)算、比較運(yùn)算、邏輯運(yùn)算等。
    的頭像 發(fā)表于 04-21 16:51 ?6044次閱讀

    Python中telnetlib模塊的基本使用

    telnetlib 是 Python 標(biāo)準(zhǔn)庫中的個(gè)模塊,它提供了 Telnet 協(xié)議的客戶端功能。使用 telnetlib 模塊,我們可以
    的頭像 發(fā)表于 05-04 14:27 ?8860次閱讀

    Python 梯度計(jì)算模塊如何實(shí)現(xiàn)個(gè)邏輯回歸模型

    AutoGrad 是個(gè)老少皆宜的 Python 梯度計(jì)算模塊。 對于初高中生而言,它可以用來輕易計(jì)算條曲線在任意
    的頭像 發(fā)表于 10-21 11:01 ?754次閱讀
    <b class='flag-5'>Python</b> 梯度計(jì)算<b class='flag-5'>模塊</b>如何實(shí)現(xiàn)<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>邏輯回歸模型

    python如何導(dǎo)入模塊

    Python種強(qiáng)大的編程語言,它支持模塊化編程,使得開發(fā)者可以將代碼分解為可重用且獨(dú)立的模塊模塊
    的頭像 發(fā)表于 11-22 14:46 ?1379次閱讀

    鴻蒙開發(fā)之發(fā)動(dòng)畫

    動(dòng)畫的原理是在一個(gè)時(shí)間段內(nèi),多次改變UI外觀,由于人眼會產(chǎn)生視覺暫留,所以最終看到的就是個(gè)“連續(xù)”的動(dòng)畫。UI的
    的頭像 發(fā)表于 02-01 15:25 ?926次閱讀
    鴻蒙<b class='flag-5'>開發(fā)</b>之發(fā)<b class='flag-5'>動(dòng)畫</b>篇

    Manim動(dòng)畫生動(dòng)演示勾股定理

    Manim專業(yè)的數(shù)學(xué)動(dòng)畫引擎,我們可以將抽象的數(shù)學(xué)概念轉(zhuǎn)化為生動(dòng)的視覺呈現(xiàn),大幅提升教學(xué)效果。 二,
    的頭像 發(fā)表于 04-27 16:36 ?287次閱讀
    主站蜘蛛池模板: 成人性生交大片免费看金瓶七仙女 | 国产欧美一本道无码 | 一本久道久久综合婷婷五月 | 欧美成人免费观看久久 | 男男校园园bl文全肉高h寝室 | 欧美日韩精品久久久免费观看 | 网红主播 国产精品 开放90后 | 高潮久久久久久久久不卡 | 蜜臀AV熟女人妻中文字幕 | 国产色情短视频在线网站 | 内射一区二区精品视频在线观看 | 老司机深夜福利ae 入口网站 | 偷偷鲁青春草原视频分类 | 香蕉鱼视频观看在线视频下载 | 久久精品国产久精国产果冻传媒 | 久久久久琪琪精品色 | 羞羞答答dc视频 | 亚洲精品久久久WWW游戏好玩 | 色戒未删减版在线观看完整 | 一边吃奶一边啪啪真舒服 | 久久偷拍国2017的 | 久久精品伊人 | 亚洲午夜AV久久久精品影院色戒 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产日韩亚洲精品视频 | 国产日韩欧美综合久久 | 99视频福利| 国产欧美日韩综合精品一区二区 | 亚洲黄色高清视频 | 久久国产香蕉视频 | x8国产精品视频 | 大地影院免费观看视频 | 亚洲欧美国产双大乳头 | 日韩精品一区二区三区色欲AV | 回复术士人生重启在线观看 | 国产嫩草影院精品免费网址 | 永久adc视频年龄确认 | 亚洲青青草 | 日日干夜夜啪蕉视频 | 99久久香蕉国产线看观看 | 全部老头和老太XXXXX |

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品